# Amazon Search Scraper — Keyword SERP, ASIN, Prices & Rankings (`crawloop/amazon-search-scraper`) Actor

Amazon search scraper for keyword SERP extraction across 20+ marketplaces. Get ASIN, title, price, ratings, badges, Prime, sponsored flag, delivery, sales volume, and ranking position. Batch keywords, 40-page pagination, sort options, ASIN deduplication. Fast curl_cffi HTTP + residential proxy.

- **URL**: https://apify.com/crawloop/amazon-search-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Features:** Limited permissions
- **Stats:** 35 total users, 3 monthly users, 74.4% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.69 / 1,000 search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Amazon Search Scraper — Keyword Results, Prices & Rankings

> **Disclaimer:** Unofficial tool — not affiliated with, sponsored by, or endorsed by Amazon or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Search Amazon by **keyword** and extract **search result cards** with **ASIN**, **title**, **price**, **ratings**, **badges**, **Prime**, **sponsored flag**, **delivery**, **sales volume**, and **SERP position** across **20+ marketplaces**. Built for **product research**, **price monitoring**, **ranking analysis**, and **competitor tracking**.

> **Crawloop Marketplace & E-commerce Suite** — Amazon keyword SERP and Best Sellers charts, plus eBay and Mercado Libre.

| **Amazon Search Scraper** ◄── *you are here* | [Amazon Best Sellers Scraper](https://apify.com/crawloop/amazon-bestsellers-scraper) | [eBay Active Listings Scraper](https://apify.com/crawloop/ebay-active-listings-scraper) | [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper) |
| :---: | :---: | :---: | :---: |
| Amazon keyword SERP, badges, sponsored | Category rank charts #1–100 | Live eBay listings, BIN/auction | Completed eBay sold comps |

Also see: [Amazon Product Details Scraper](https://apify.com/crawloop/amazon-product-details-scraper) · [Amazon Reviews Scraper](https://apify.com/crawloop/amazon-reviews-scraper) · [Amazon Today's Deals Scraper](https://apify.com/crawloop/amazon-deals-scraper) · [Flipkart Scraper](https://apify.com/crawloop/flipkart-scraper) · [Newegg Product Scraper](https://apify.com/crawloop/newegg-product-scraper) · [AliExpress Search Scraper](https://apify.com/crawloop/aliexpress-search-scraper) · [Naver Search Scraper](https://apify.com/crawloop/naver-search-scraper) · [Walmart Scraper](https://apify.com/crawloop/walmart-scraper) · [Aldi Weekly Ad Scraper](https://apify.com/crawloop/aldi-weekly-ad-scraper) · [Lidl Weekly Offers Scraper](https://apify.com/crawloop/lidl-weekly-offers-scraper) · [Shopee Search Scraper](https://apify.com/crawloop/shopee-search-scraper) · [Mercado Libre Listings Scraper](https://apify.com/crawloop/mercado-libre-listings-scraper) · [eBay Sold Price Intelligence](https://apify.com/crawloop/ebay-sold-price-intelligence)

***

### Key Features

- **Keyword search** — single `query` or batch via `queries` (up to 5 in parallel)
- **Paste search URLs** — `searchUrls` keeps Amazon filters (`k`, `rh`, `i`, category nodes)
- **Pagination + caps** — up to **40 pages** per query, or stop at `maxItems`
- **Smart sorting** — relevance, price (low/high), reviews, newest, best sellers
- **Locale on the URL** — `language` is sent as Amazon's `language` query param plus `Accept-Language`
- **Rich SERP metadata** — badges, ratings, prices, images, sales volume, coupons, availability
- **Sponsored detection** — `isSponsored` flag for ad placements in search grids
- **Multi-marketplace** — US, GB, DE, FR, IT, ES, CA, AU, JP, IN, BR, MX, NL, SE, PL, BE, SA, AE, ZA, IE, SG, TR, EG
- **Filters** — drop sponsored cards, Prime-only, min/max price, minimum stars
- **ASIN deduplication** — optional `deduplicateAsins` across batch keywords (default: on)
- **Fast HTTP scraping** — `curl_cffi` Chrome TLS impersonation; no headless browser
- **Residential proxy** — geo-targeted Apify Proxy sessions matched to marketplace country (from `country` or URL domain)

***

### Use Cases

| Use case | What you get | Why it helps |
| :--- | :--- | :--- |
| **Product research** | Keyword SERP with ASIN, title, badges | Discover trending items and category leaders |
| **Price monitoring** | Current price, strikethrough price, currency | Track deals and competitor pricing |
| **Ranking analysis** | `page`, `position`, `isSponsored` | Monitor organic vs paid placement |
| **Cross-border research** | Same keyword on US, DE, GB, JP, … | Compare markets and localization |
| **Data pipelines** | Clean JSON rows per search card | Feed dashboards, databases, and ML workflows |

***

### Quick Start

**Basic — one keyword, one page:**

```json
{
  "query": "wireless mouse",
  "country": "US",
  "maxPages": 1
}
```

**Advanced — multiple keywords, deep pagination:**

```json
{
  "queries": ["wireless mouse", "laptop"],
  "maxPages": 10,
  "country": "US",
  "language": "en_US",
  "sortBy": "RELEVANCE",
  "deduplicateAsins": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

**Paste an Amazon search URL (keeps filters):**

```json
{
  "searchUrls": ["https://www.amazon.com/s?k=wireless+mouse&rh=p_85:2470955011"],
  "maxItems": 20,
  "maxPages": 3
}
```

***

### When to use this Actor

- **Amazon product discovery** — find items by keyword with ranking position and badges
- **Amazon price tracking** — monitor listing prices from search cards without opening PDPs
- **SEO & SERP analysis** — compare organic listings vs sponsored placements over time
- **Large catalog pulls** — combine multiple keywords with deduplication for 500+ unique ASINs

### When not to use this Actor

- **Amazon Best Sellers charts** — official category rank #1–100 is [Amazon Best Sellers Scraper](https://apify.com/crawloop/amazon-bestsellers-scraper), not keyword sort `BEST_SELLERS`
- **Full product detail pages** — search cards only; no bullet points, A+ content, or full offer tables
- **Review text extraction** — rating count is included; individual review bodies are not
- **Seller storefront catalogs** — keyword/URL search only, not seller inventory pages
- **Historical sold prices** — use [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper) or [eBay Sold Price Intelligence](https://apify.com/crawloop/ebay-sold-price-intelligence) for completed-sale comps
- **LATAM marketplace listings** — use [Mercado Libre Listings Scraper](https://apify.com/crawloop/mercado-libre-listings-scraper) for Mercado Libre across 18 country sites

***

### Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `query` | String | — | Primary search keyword |
| `queries` | Array | — | Batch keywords (up to 5 in parallel via `maxConcurrency`) |
| `searchUrls` | Array | — | Amazon `/s` search or category URLs (filters preserved) |
| `maxPages` | Integer | `1` | Pages per query/URL (1–40) |
| `maxItems` | Integer | — | Optional product cap **per** query/URL |
| `startPage` | Integer | `1` | First page to scrape (overrides URL `page` when > 1) |
| `country` | String | `"US"` | Marketplace country code (URL domain wins for `searchUrls`) |
| `language` | String | — | Locale (`en_US`, `de_DE`, …) added to the search URL |
| `sortBy` | String | `"RELEVANCE"` | Sort order enum (keyword search; URL `s=` is kept as pasted) |
| `includeSponsored` | Boolean | `true` | Keep sponsored/ad cards; set `false` for organic only |
| `primeOnly` | Boolean | `false` | Keep only Prime-eligible cards |
| `minPrice` / `maxPrice` | Number | — | Drop cards outside this listing-currency range |
| `minStars` | Number | — | Minimum average rating (1–5) |
| `maxConcurrency` | Integer | `3` | Parallel keywords/URLs (1–5), each with its own sticky session |
| `deduplicateAsins` | Boolean | `true` | Skip duplicate ASINs across batch queries |
| `proxyConfiguration` | Object | Residential | Apify Proxy; geo is matched to the marketplace automatically |

#### Sort options

| Value | Description |
| :--- | :--- |
| `RELEVANCE` | Most relevant to search query (default) |
| `LOWEST_PRICE` | Cheapest products first |
| `HIGHEST_PRICE` | Most expensive products first |
| `REVIEWS` | Most reviewed products |
| `NEWEST` | Newest arrivals |
| `BEST_SELLERS` | Best selling products |

***

### Output Format

Each dataset row is one product card from Amazon search results.

| Field | Type | Description |
| :--- | :--- | :--- |
| `asin` | String | Amazon Standard Identification Number |
| `productTitle` | String | Product title |
| `productPrice` / `priceValue` | String / Number | Display price and parsed numeric value |
| `productOriginalPrice` | String | Strikethrough/list price when shown |
| `currency` | String | Currency code |
| `productStarRating` | Number | Average rating (0–5) |
| `productNumRatings` | Integer | Number of ratings |
| `productUrl` | String | Product page URL |
| `productPhoto` | String | Main image URL |
| `productNumOffers` | Integer | Number of buying options when shown |
| `productMinimumOfferPrice` | String | Lowest offer price when shown |
| `isBestSeller` / `isAmazonChoice` / `isPrime` | Boolean | Badge flags |
| `isSponsored` | Boolean | Sponsored/ad placement flag |
| `climatePledgeFriendly` | Boolean | Climate Pledge Friendly badge |
| `salesVolume` | String | Recent sales text when shown |
| `delivery` | String | Delivery promise text |
| `hasVariations` | Boolean | Color/size/style variations indicated |
| `productAvailability` | String | Stock text when shown |
| `couponText` | String | Coupon/discount text |
| `productBadge` | String | Special badge (e.g. Overall Pick) |
| `page` / `position` | Integer | Page number and position on page |
| `searchQuery` | String | Keyword that produced the row |
| `searchUrl` | String | Present when the row came from `searchUrls` |
| `country` / `domain` | String | Marketplace metadata |
| `totalProductsAvailable` | Integer | Total matching results count |
| `scrapedAt` | String | UTC ISO timestamp |

#### Output example

```json
{
  "source": "amazon_search",
  "searchQuery": "wireless mouse",
  "page": 1,
  "position": 3,
  "asin": "B004YAVF8I",
  "productTitle": "Logitech M185 Wireless Mouse...",
  "productPrice": "$13.95",
  "priceValue": 13.95,
  "currency": "USD",
  "productStarRating": 4.5,
  "productNumRatings": 429,
  "productUrl": "https://www.amazon.com/dp/B004YAVF8I",
  "isPrime": true,
  "isSponsored": false,
  "country": "US",
  "domain": "www.amazon.com",
  "scrapedAt": "2026-07-15T10:00:00.000Z"
}
```

***

### Supported marketplaces

| Region | Code | Region | Code | Region | Code |
| :--- | :--- | :--- | :--- | :--- | :--- |
| United States | US | United Kingdom | GB | Germany | DE |
| Japan | JP | India | IN | France | FR |
| Italy | IT | Spain | ES | Canada | CA |
| Brazil | BR | Australia | AU | Mexico | MX |
| Netherlands | NL | Sweden | SE | Poland | PL |
| Belgium | BE | Saudi Arabia | SA | UAE | AE |
| South Africa | ZA | Ireland | IE | Singapore | SG |
| Turkey | TR | Egypt | EG | | |

Common `language` values: `en_US`, `en_GB`, `de_DE`, `fr_FR`, `it_IT`, `es_ES`, `ja_JP`, `pt_BR`, `nl_NL`, `pl_PL`, `sv_SE`, `ar_AE`.

***

### Integration examples

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/amazon-search-scraper').call({ query: 'wireless mouse', country: 'US', maxPages: 1, proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'] } });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient(token)
run = client.actor("crawloop/amazon-search-scraper").call(
    run_input={"query": "wireless mouse", "country": "US", "maxPages": 1, "proxyConfiguration": {"useApifyProxy": True, "apifyProxyGroups": ["RESIDENTIAL"]}}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("asin"), item.get("productTitle"), item.get("productPrice"))
```

#### cURL

```bash
curl "https://api.apify.com/v2/acts/crawloop~amazon-search-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"wireless mouse","country":"US","maxPages":1,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}'
```

### MCP and AI assistants

Use this Actor from AI tools via [Apify MCP](https://docs.apify.com/platform/integrations/mcp). Connect your Apify account, then call `crawloop/amazon-search-scraper`.

Example prompts:

- "Run Amazon Search Scraper for wireless mouse in US, 1 page, return asin, productTitle, productPrice, isSponsored"
- "Scrape Amazon DE for bluetooth headphones and summarize top organic ASINs"
- "Chain Amazon Search then Amazon Best Sellers Scraper to compare keyword SERP vs category rank"
- "Take the top ASINs from Amazon Search Scraper, then run Amazon Product Details Scraper and Amazon Reviews Scraper"

### Suite next step

For the product page of an ASIN, use [Amazon Product Details Scraper](https://apify.com/crawloop/amazon-product-details-scraper). For the review cards on that page, use [Amazon Reviews Scraper](https://apify.com/crawloop/amazon-reviews-scraper). For official category rank charts (#1–100), use [Amazon Best Sellers Scraper](https://apify.com/crawloop/amazon-bestsellers-scraper). For ZIP-local US retail prices, use [Walmart Scraper](https://apify.com/crawloop/walmart-scraper). For AliExpress sold-count cards, use [AliExpress Search Scraper](https://apify.com/crawloop/aliexpress-search-scraper). For sold comps, use [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper). For wholesale ASIN lots, use [888lots Scraper](https://apify.com/crawloop/888lots-scraper).

### FAQ

**What input do I need?**\
A search keyword in `query` (or a list in `queries`), or Amazon `/s` URLs in `searchUrls`. All other parameters are optional.

**How many pages can I scrape?**\
Up to **40 pages** per query/URL. Use `maxItems` to stop after N products even if pages remain.

**Can I paste an Amazon search URL?**\
Yes — `searchUrls` keeps query string filters (`k`, `rh`, `i`, category nodes). Marketplace is detected from the domain.

**Which marketplaces are supported?**\
23 country codes including US, GB, DE, JP, IN, FR, IT, ES, CA, BR, AU, MX, NL, SE, PL, BE, SA, AE, ZA, IE, SG, TR, EG.

**How do I sort results?**\
Use `sortBy`: `RELEVANCE`, `LOWEST_PRICE`, `HIGHEST_PRICE`, `REVIEWS`, `NEWEST`, or `BEST_SELLERS`.

**Does it detect sponsored listings?**\
Yes — each row includes `isSponsored`. Set `includeSponsored: false` to drop ad cards.

**What if no results are found?**\
Pagination stops automatically. Try a broader keyword, another marketplace, or residential proxy geo-matched to `country`.

**Can I scrape 500+ unique products?**\
Use multiple keywords in `queries` with `deduplicateAsins: true`. A single keyword may return fewer unique ASINs on later pages.

***

### Troubleshooting

| Issue | Likely cause | What to try |
| :--- | :--- | :--- |
| Empty dataset | Blocked IP or captcha | Enable Apify Residential proxy (geo is matched to `country` / URL domain automatically) |
| Missing prices or ratings | Amazon did not render field on SERP card | Normal — field availability varies by listing and locale |
| Slow runs | Many pages or a large batch | Lower `maxPages`, raise `maxConcurrency` (max 5), or split keywords |
| Duplicate ASINs in batch | Dedupe disabled | Set `deduplicateAsins: true` |

***

### Limitations

- **Residential proxy strongly recommended** — datacenter IPs may trigger captcha or empty responses
- **Search cards only** — fields depend on what Amazon renders on the SERP for each ASIN
- **Locale-specific markup** — badge and delivery text patterns vary by marketplace language

***

### Related Actors

| Actor | Best for |
| :--- | :--- |
| [Amazon Product Details Scraper](https://apify.com/crawloop/amazon-product-details-scraper) | ASIN product page: price, bullets, seller, rank |
| [Amazon Reviews Scraper](https://apify.com/crawloop/amazon-reviews-scraper) | Public product-page review cards |
| [Amazon Best Sellers Scraper](https://apify.com/crawloop/amazon-bestsellers-scraper) | Official category rank charts #1–100 |
| [Walmart Scraper](https://apify.com/crawloop/walmart-scraper) | US ZIP-local Walmart prices and stock |
| [AliExpress Search Scraper](https://apify.com/crawloop/aliexpress-search-scraper) | AliExpress retail search, sold count |
| [Naver Search Scraper](https://apify.com/crawloop/naver-search-scraper) | Korean 통합검색 rank / Powerlink |
| [Shopee Search Scraper](https://apify.com/crawloop/shopee-search-scraper) | Shopee regional search |
| [eBay Active Listings Scraper](https://apify.com/crawloop/ebay-active-listings-scraper) | Live eBay listings, BIN/auction, watchers, competition |
| [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper) | Completed eBay sales history and sold prices |
| [eBay Sold Price Intelligence](https://apify.com/crawloop/ebay-sold-price-intelligence) | Recommended price, demand score, CSV/report |
| [Mercado Libre Listings Scraper](https://apify.com/crawloop/mercado-libre-listings-scraper) | LATAM Mercado Libre search and PDP listings |
| [Mercado Libre Market Intelligence](https://apify.com/crawloop/mercado-libre-market-intelligence) | LATAM niche score, demand, GMV, market reports |

**Tags:** amazon search scraper, amazon keyword search, amazon serp scraper, amazon product search api, amazon asin scraper, amazon price scraper, amazon ranking tracker, amazon product research, amazon marketplace scraper, amazon search results extractor, amazon best seller scraper, amazon prime products, amazon sponsored listings, ecommerce scraper, product discovery, price monitoring

# Actor input Schema

## `query` (type: `string`):

Primary Amazon search keyword or phrase.

## `queries` (type: `array`):

Optional list of keywords. Each query uses the same country, sort, page, and filter settings. Up to 5 queries can run in parallel (`maxConcurrency`).

## `searchUrls` (type: `array`):

Paste Amazon /s search or category URLs (keeps k, rh, i, and other filters). Marketplace is detected from the domain. Pagination updates the page parameter.

## `maxPages` (type: `integer`):

Number of search result pages to scrape per query or URL (1–40). Each page typically contains 10–16 products. Stops earlier if maxItems is reached.

## `maxItems` (type: `integer`):

Optional cap on products saved per keyword or search URL. Combined with maxPages — scraping stops at whichever limit is reached first.

## `startPage` (type: `integer`):

First search results page to scrape (1-based).

## `country` (type: `string`):

Amazon marketplace country code. Controls domain, default currency, and proxy geo-targeting.

## `language` (type: `string`):

Preferred result language/locale. Added to the Amazon search URL as the language parameter and sent as Accept-Language. When omitted, Amazon uses the marketplace default.

## `sortBy` (type: `string`):

Amazon search sort order.

## `deduplicateAsins` (type: `boolean`):

When enabled, each ASIN is saved only once across all queries in the run. Recommended for batch keyword searches.

## `includeSponsored` (type: `boolean`):

Keep sponsored/ad placements in the dataset. Turn off to save organic cards only.

## `primeOnly` (type: `boolean`):

Keep only product cards that show Prime eligibility.

## `minPrice` (type: `number`):

Drop cards cheaper than this amount in the listing currency. Cards without a parsed price are dropped when this filter is set.

## `maxPrice` (type: `number`):

Drop cards more expensive than this amount in the listing currency. Cards without a parsed price are dropped when this filter is set.

## `minStars` (type: `number`):

Keep cards with at least this average rating (1–5). Cards without a rating are dropped when this filter is set.

## `maxConcurrency` (type: `integer`):

How many keywords/URLs to scrape in parallel (1–5). Each query uses its own sticky residential session. Default 3.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. Residential proxies are strongly recommended. Geo is matched automatically to the marketplace (URL domain or country), so you do not need to set apifyProxyCountry.

## Actor input object example

```json
{
  "query": "wireless mouse",
  "maxPages": 1,
  "startPage": 1,
  "country": "US",
  "sortBy": "RELEVANCE",
  "deduplicateAsins": true,
  "includeSponsored": true,
  "primeOnly": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "wireless mouse",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/amazon-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "wireless mouse",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("crawloop/amazon-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "wireless mouse",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call crawloop/amazon-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawloop/amazon-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/zFR8fKR13N5nYpoUO/builds/ZgO5LqBn5sbkHaEiB/openapi.json
