# Amazon Best Sellers Scraper — Category Rank Charts & ASIN (`crawloop/amazon-bestsellers-scraper`) Actor

Amazon Best Sellers scraper for category rank charts: Best Sellers, New Releases, Movers & Shakers, Most Wished For, Gift Ideas. Rank #1–100, ASIN, title, price, ratings across 20+ marketplaces. Multi-country batch, ASIN watch, full ranked payload.

- **URL**: https://apify.com/crawloop/amazon-bestsellers-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** E-commerce, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 scraped chart products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Amazon Best Sellers Scraper — Category Rank Charts & ASIN

> **Disclaimer:** Unofficial integration for publicly accessible Amazon chart pages. **Amazon** and related names are trademarks of Amazon.com, Inc. or its affiliates. Not affiliated with, sponsored by, or endorsed by Amazon. Provided for informational and research purposes only.

**Amazon Best Sellers scraper** for **category rank charts** — extract **rank (#1–100)**, **ASIN**, **title**, **price**, **rating**, and **image** from Best Sellers, New Releases, Movers & Shakers, Most Wished For, and Gift Ideas. Works as an **Amazon chart API alternative** via **Python**, **Node.js**, **cURL**, or **MCP**. Built for **private-label sourcing**, **trend detection**, and **ASIN rank tracking** across **20+ marketplaces** — not keyword SERP clones.

> **Crawloop Marketplace & E-commerce Suite** — Amazon charts + keyword search, eBay, and Mercado Libre.

| Amazon Best Sellers Scraper ◄── *you are here* | [Amazon Search Scraper](https://apify.com/crawloop/amazon-search-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) |
| :---: | :---: | :---: | :---: |
| Category rank charts #1–100 | Keyword SERP, badges, sponsored | Live eBay listings | Completed eBay sold comps |

Also see: [eBay Sold Price Intelligence](https://apify.com/crawloop/ebay-sold-price-intelligence) · [Mercado Libre Listings Scraper](https://apify.com/crawloop/mercado-libre-listings-scraper)

***

### Why charts beat search clones

A keyword search (even sorted by “Best Sellers”) mixes **relevance**, **ads**, and popularity heuristics. An Amazon **Best Sellers chart** is ordered by **sales rank** in a category — the signal private-label and trend teams actually want.

| Chart | What it shows |
| :--- | :--- |
| **Best Sellers** | Current top sellers in a category (#1–100) |
| **New Releases** | Recent launches already charting |
| **Movers & Shakers** | Biggest 24-hour sales-rank gains |
| **Most Wished For** | Demand that has not fully converted yet |
| **Gift Ideas** | What shoppers buy for others (seasonal) |

***

### Key Features

- **Full top-100 ranks** — reads Amazon’s ranked payload (not only the ~30 hydrated DOM cards)
- **Five charts** — Best Sellers, New Releases, Movers & Shakers, Most Wished For, Gift Ideas
- **Category × chart × country batching** — scrape many departments and marketplaces in one run
- **Multi-country** — `countries: ["US","DE","GB"]` with per-marketplace residential geo rotation
- **ASIN watch / rank tracking** — `watchAsins` + optional `watchOnly` / `watch_miss` rows for daily monitors
- **Typed errors** — wrong slug / empty chart / block; `continueOnError` + `TARGET_ERRORS` KV record
- **Category auto-remap** — e.g. DE `electronics` → `computers`
- **`detailLevel` honesty** — `full` / `partial` / `rank_only` / `watch_miss`
- **Optional PDP fill** — `fetchMissingDetails` hydrates title/price for incomplete rows
- **20+ marketplaces** — same country codes as [Amazon Search Scraper](https://apify.com/crawloop/amazon-search-scraper)
- **Paste chart URLs** — `/gp/bestsellers/…`, `/zgbs/…`, movers, new releases, wished-for, most-gifted
- **Fast HTTP** — `curl_cffi` Chrome TLS impersonation; residential proxy geo-matched to marketplace
- **Dataset export** — JSON / CSV / Excel from the Apify dataset; wire into sheets, warehouses, or agents

***

### Use Cases

| Use case | What you get | Why it helps |
| :--- | :--- | :--- |
| **Private-label sourcing** | Rank, ASIN, price, review count | Spot high-rank / low-review niches |
| **Trend detection** | Movers & Shakers daily diffs | Catch products accelerating before they lock the chart |
| **Competitive rank tracking** | Stable `rank` + `asin` time series | Monitor your SKUs vs category leaders |
| **Seasonal planning** | Gift Ideas / Most Wished For | See demand build before Best Sellers moves |
| **Cross-market expansion** | Same category on US / DE / JP | Compare local charts before inventory commits |

***

### Quick Start

**Basic — US Electronics Best Sellers (full top 100):**

```json
{
  "categories": ["electronics"],
  "charts": ["bestsellers"],
  "country": "US",
  "maxItemsPerChart": 100
}
```

**Advanced — multiple categories + Movers, optional detail fill:**

```json
{
  "categories": ["electronics", "kitchen", "pet-supplies"],
  "charts": ["bestsellers", "movers-and-shakers"],
  "country": "US",
  "maxItemsPerChart": 100,
  "maxItems": 600,
  "fetchMissingDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

**Paste chart URLs:**

```json
{
  "startUrls": [
    "https://www.amazon.com/gp/bestsellers/electronics/",
    "https://www.amazon.de/gp/bestsellers/computers/"
  ],
  "country": "US"
}
```

**Multi-country + ASIN watch (schedule-friendly):**

```json
{
  "categories": ["electronics"],
  "charts": ["bestsellers"],
  "countries": ["US", "DE"],
  "watchAsins": ["B08JHCVHTY", "B0DCH8VDXF"],
  "watchOnly": true,
  "emitWatchMisses": true,
  "maxItemsPerChart": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### When to use this Actor

- You need **official category chart ranks**, not keyword SERP positions
- You want **Movers & Shakers / New Releases / Wished For** in the same pipeline as Best Sellers
- You are chaining chart ASINs into keyword research with [Amazon Search Scraper](https://apify.com/crawloop/amazon-search-scraper)

### When not to use this Actor

- **Keyword product search** — use [Amazon Search Scraper](https://apify.com/crawloop/amazon-search-scraper)
- **Full PDP specs / A+ content** — charts return card-level fields (optional light PDP fill only)
- **Historical BSR databases** — this Actor snapshots the live public chart pages
- **eBay / LATAM comps** — use the eBay and Mercado Libre Actors in the suite table above

***

### Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `categories` | Array | `["electronics"]` | Category slugs from the chart URL |
| `charts` | Array | `["bestsellers"]` | `bestsellers`, `new-releases`, `movers-and-shakers`, `most-wished-for`, `gift-ideas` |
| `country` | String | `US` | Single marketplace (ignored if `countries` set) |
| `countries` | Array | — | Multi-marketplace batch; proxy geo rotates per country |
| `startUrls` | Array | — | Full chart URLs (optional) |
| `watchAsins` | Array | — | ASINs to track (`watched=true`; optional miss rows) |
| `watchOnly` | Boolean | `false` | Only output watched matches (+ misses) |
| `emitWatchMisses` | Boolean | `true` | Emit `watch_miss` rows for ASINs not in the chart |
| `maxItemsPerChart` | Integer | `100` | Cap per chart (max 100; Amazon’s limit) |
| `maxItems` | Integer | `0` | Global run cap (`0` = unlimited) |
| `fetchMissingDetails` | Boolean | `false` | Fetch PDP for incomplete rows |
| `skipIncompleteRows` | Boolean | `false` | Drop `rank_only` rows (breaks contiguous ranks) |
| `applyCategoryRemap` | Boolean | `true` | Remap known slug mismatches (DE electronics→computers) |
| `continueOnError` | Boolean | `true` | Continue after wrong slug / empty / block on one target |
| `proxyConfiguration` | Object | Residential | Apify Proxy; leave country empty for multi-geo rotation |

#### Category slug notes

Chart slugs are **marketplace-specific**. A wrong slug returns an empty chart (typed `wrong_slug` / `empty_chart`), not a silent US fallback. With `applyCategoryRemap` (default on), known mismatches are fixed automatically (e.g. DE `electronics` → `computers`).

| Marketplace | Prefer these slugs (examples) | Watch out |
| :--- | :--- | :--- |
| **US** (`amazon.com`) | `electronics`, `kitchen`, `books`, `pc`, `beauty`, `pet-supplies`, `toys-and-games` | `computers` is often `pc` |
| **DE** (`amazon.de`) | `computers`, `kitchen`, `books`, `beauty`, `toys` | Use `computers`, not `electronics` |
| **GB** (`amazon.co.uk`) | `electronics`, `kitchen`, `books`, `computers`, `diy` | Toys slug may differ — paste the chart URL |
| **JP** (`amazon.co.jp`) | `electronics`, `computers`, `kitchen`, `books` | Some grocery/fashion slugs differ |
| **Others** | Start from the same family (`kitchen`, `books`, `beauty`, `automotive`) | When unsure, paste `startUrls` from the browser |

Common starting slugs: `electronics`, `computers`, `pc`, `kitchen`, `books`, `beauty`, `automotive`, `pet-supplies`, `toys-and-games`, `sporting-goods`, `office-products`, `home-garden`, `fashion`, `grocery`, `videogames`.

***

### Output

| Field | Type | Description |
| :--- | :--- | :--- |
| `rank` | Integer | Chart position 1–100 |
| `asin` | String | Product ASIN |
| `productTitle` | String | Title when hydrated |
| `productPrice` / `priceValue` | String / Number | Display + numeric price |
| `currency` | String | Currency code |
| `productStarRating` | Number | Stars 0–5 |
| `productNumRatings` | Integer | Rating count |
| `productUrl` / `productPhoto` | String | Product link + image |
| `detailLevel` | String | `full`, `partial`, `rank_only`, or `watch_miss` |
| `watched` / `foundInChart` | Boolean | ASIN watch flags for rank-tracking schedules |
| `chart` / `chartTitle` | String | Chart key + page heading |
| `category` / `page` | String / Integer | Slug + chart page (1 or 2) |
| `percentageChange` | String | Movers change when present |
| `country` / `domain` / `sourceUrl` | String | Marketplace metadata |
| `scrapedAt` | String | UTC ISO timestamp |

**About `detailLevel`:** Amazon server-renders only part of each 50-item chart page. Every row still has **exact rank + ASIN** from the ranked payload. Use `fetchMissingDetails: true` when you need titles/prices on every row.

Example row:

```json
{
  "source": "amazon_bestsellers",
  "rank": 1,
  "asin": "B08JHCVHTY",
  "productTitle": "Blink Plus Plan with monthly auto-renewal",
  "productPrice": "$11.99",
  "priceValue": 11.99,
  "currency": "USD",
  "productStarRating": 4.4,
  "productNumRatings": 279104,
  "productUrl": "https://www.amazon.com/dp/B08JHCVHTY",
  "detailLevel": "full",
  "chart": "bestsellers",
  "chartTitle": "Amazon Best Sellers",
  "category": "electronics",
  "page": 1,
  "country": "US",
  "domain": "www.amazon.com",
  "sourceUrl": "https://www.amazon.com/gp/bestsellers/electronics/",
  "scrapedAt": "2026-08-13T17:00:00.000Z"
}
```

***

### 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-bestsellers-scraper').call({
  categories: ['electronics'],
  charts: ['bestsellers'],
  country: 'US',
  maxItemsPerChart: 100,
  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("YOUR_TOKEN")
run = client.actor("crawloop/amazon-bestsellers-scraper").call(
    run_input={
        "categories": ["electronics", "kitchen"],
        "charts": ["bestsellers", "movers-and-shakers"],
        "country": "US",
        "maxItemsPerChart": 100,
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"],
            "apifyProxyCountry": "US",
        },
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["rank"], item["asin"], item.get("productTitle"), item.get("priceValue"))
```

#### cURL

```bash
curl "https://api.apify.com/v2/acts/crawloop~amazon-bestsellers-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"categories":["electronics"],"charts":["bestsellers"],"country":"US","maxItemsPerChart":50}'
```

***

### 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-bestsellers-scraper`.

Example prompts:

- "Run Amazon Best Sellers Scraper for electronics and kitchen on US, return the top 20 ranks as JSON"
- "Scrape Movers & Shakers for pet-supplies and summarize ASINs that jumped into the top 10"
- "Watch ASINs B08JHCVHTY and B0DCH8VDXF on US+DE Best Sellers charts daily and report which are missing"
- "Chain Amazon Best Sellers Scraper then Amazon Search Scraper: take chart ASINs and check keyword SERP visibility for wireless earbuds"

***

### Suite next step

1. Pull category charts here (ranks + ASINs).
2. Feed interesting ASINs / titles into [Amazon Search Scraper](https://apify.com/crawloop/amazon-search-scraper) for keyword SERP, badges, and sponsored context.
3. For sold-price comps outside Amazon, continue with [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).

***

### FAQ

**How many products does one chart return?**\
Amazon publishes **100** products per chart (two pages of 50). Scale by adding categories, charts, and marketplaces.

**Why are some rows `rank_only`?**\
Amazon hydrates only part of the grid in the initial HTML. Rank and ASIN still come from the official ranked payload — the chart is complete even when titles are missing.

**Is this the same as search sort “Best Sellers”?**\
No. Search sort is still a keyword SERP. This Actor scrapes **category chart pages** (`/gp/bestsellers/…` and siblings).

**Is there an Amazon Best Sellers API?**\
There is no official public Best Sellers chart API for this use case. This Actor is an **API alternative**: run it from **Python**, **Node.js**, **cURL**, or **Apify MCP**, then export the dataset as JSON/CSV.

**Can I schedule daily ASIN rank checks?**\
Yes. Set `watchAsins`, `watchOnly: true`, `emitWatchMisses: true`, and schedule the Actor in Apify Console. Each run yields a compact found / missing time series per marketplace.

**Does Movers & Shakers need a special proxy?**\
Use **residential** proxies. For multi-country runs leave `apifyProxyCountry` empty so geo rotates per marketplace. Empty movers charts are reported as `empty_chart` (not a silent zero).

**How do I track my own ASINs?**\
Set `watchAsins` and schedule the Actor daily. Use `watchOnly: true` plus `emitWatchMisses: true` to get a compact rank / not-in-chart time series.

**What happens on a wrong category slug?**\
The run records a typed `wrong_slug` / `empty_chart` / `blocked` error. With `continueOnError` (default) remaining targets still run; details are stored in the `TARGET_ERRORS` key-value record.

***

### Related Actors

| Actor | Role |
| :--- | :--- |
| [Amazon Search Scraper](https://apify.com/crawloop/amazon-search-scraper) | Keyword SERP / ASIN discovery |
| [eBay Active Listings Scraper](https://apify.com/crawloop/ebay-active-listings-scraper) | Live marketplace listings |
| [eBay Sold Listings Scraper](https://apify.com/crawloop/ebay-sold-listings-scraper) | Completed sale comps |
| [Mercado Libre Listings Scraper](https://apify.com/crawloop/mercado-libre-listings-scraper) | LATAM listings |

**Tags:** amazon best sellers scraper, amazon bestsellers scraper, amazon category rankings, amazon movers and shakers scraper, amazon new releases scraper, amazon most wished for, amazon gift ideas, amazon asin rank tracker, amazon sales rank scraper, amazon chart api alternative, ecommerce product research, private label sourcing, amazon marketplace scraper, mcp amazon scraper

# Actor input Schema

## `categories` (type: `array`):

Best Sellers category slugs as they appear in the chart URL (e.g. electronics, kitchen, books). Slugs are marketplace-specific — on Amazon.de 'electronics' is auto-remapped to 'computers' when applyCategoryRemap is on. Leave empty only when startUrls are provided.

## `charts` (type: `array`):

Which Amazon rank charts to scrape for each category. Categories × charts × countries are crossed.

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

Single marketplace country code. Ignored when countries is set. Controls domain, currency, and default proxy geo.

## `countries` (type: `array`):

Scrape the same categories/charts across multiple marketplaces in one run. Proxy geo rotates per country. Example: \["US","DE","GB"].

## `startUrls` (type: `array`):

Paste full chart URLs such as https://www.amazon.com/gp/bestsellers/electronics/ or /zgbs/ paths. Marketplace is taken from the URL host when present.

## `watchAsins` (type: `array`):

ASINs to track in the scraped charts. Matching rows get watched=true. Missing ASINs can emit watch\_miss rows (foundInChart=false) for schedule-friendly rank monitoring.

## `watchOnly` (type: `boolean`):

When watchAsins is set, only push matching chart rows (plus optional miss rows). Full chart dump is skipped.

## `emitWatchMisses` (type: `boolean`):

When watchAsins is set, emit one row per ASIN not found in each chart target (detailLevel=watch\_miss, rank=null).

## `maxItemsPerChart` (type: `integer`):

Amazon publishes at most 100 products per chart (2 pages of 50). Use 50 for the first page only.

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

Hard cap across the whole run. 0 = unlimited (still capped by maxItemsPerChart × targets).

## `fetchMissingDetails` (type: `boolean`):

Amazon hydrates only ~30 of 50 cards per chart page. When enabled, product pages are fetched for rank-only/partial rows to fill title, price, rating, and image.

## `skipIncompleteRows` (type: `boolean`):

Drop rows that only have rank + ASIN (no title/price). Prefer leaving this off so chart ranks stay contiguous.

## `applyCategoryRemap` (type: `boolean`):

When enabled, known marketplace mismatches are remapped (e.g. DE electronics → computers).

## `continueOnError` (type: `boolean`):

If one category/country/chart fails (wrong slug, empty chart, block), continue with remaining targets. Errors are logged and saved to TARGET\_ERRORS key-value record.

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

Apify Proxy settings. Residential proxies are strongly recommended. For multi-country runs, geo is rotated per marketplace automatically when apifyProxyCountry is left empty.

## Actor input object example

```json
{
  "categories": [
    "electronics"
  ],
  "charts": [
    "bestsellers"
  ],
  "country": "US",
  "watchOnly": false,
  "emitWatchMisses": true,
  "maxItemsPerChart": 100,
  "maxItems": 0,
  "fetchMissingDetails": false,
  "skipIncompleteRows": false,
  "applyCategoryRemap": true,
  "continueOnError": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "categories": [
        "electronics"
    ],
    "charts": [
        "bestsellers"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/amazon-bestsellers-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 = {
    "categories": ["electronics"],
    "charts": ["bestsellers"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("crawloop/amazon-bestsellers-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 '{
  "categories": [
    "electronics"
  ],
  "charts": [
    "bestsellers"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call crawloop/amazon-bestsellers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawloop/amazon-bestsellers-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/hxqxuCs21C654Oe8o/builds/IkTAFVQKz1mbmNhZF/openapi.json
