# Amazon Bestsellers (`data_xplorer/amazon-bestsellers`) Actor

🏆 Scrape the Amazon Best Sellers top 100 of any category, plus New Releases, Movers & Shakers, Most Wished For and Gift Ideas, across 20 Amazon stores. Get rank, ASIN, title, price, rating, reviews and image for every product. Fast, complete and in Amazon's order. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/data\_xplorer/amazon-bestsellers.md
- **Developed by:** [Data Xplorer](https://apify.com/data_xplorer) (community)
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 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 Best Sellers Scraper

🛒 Scrape the **Amazon Best Sellers top 100** of any category, plus **New Releases**, **Movers & Shakers**, **Most Wished For** and **Gift Ideas**, across **20 Amazon marketplaces**. Get rank, ASIN, title, price, currency, rating, reviews, image and category for every product, in seconds, ready to export as JSON, CSV or Excel.

https://www.youtube.com/watch?v=MzxN7WMSIu8

## 💎 Why choose our Amazon Best Sellers Scraper?

- 💯 **The complete top 100**: Amazon only shows ~30 products per page until you scroll. We fetch the rest the way Amazon's own page does, so all 100 products come with title, price, rating, reviews and image
- ⚡ **Fast**: plain HTTP requests, no headless browser. The amazon.com Electronics top 100 takes about 12 seconds
- 🌍 **20 Amazon stores**: amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .co.jp, .in, .com.au, .com.br, .com.mx and more
- 🏅 **5 Amazon rankings**: Best Sellers, New Releases, Movers & Shakers, Most Wished For and Gift Ideas
- 🧭 **Results in Amazon's order**: departments and subcategories exactly as listed on Amazon, each followed by its products from rank 1 to 100
- 🌳 **Whole category trees**: one department, its subcategories, or every department of a store in one run
- 💶 **Local prices**: residential proxies included, exiting in each store's own country, so amazon.de returns EUR and amazon.co.jp returns JPY. No proxy setup on your side
- 🗣️ **Any language**: category names come from Amazon itself ("Küche, Haushalt & Wohnen" on amazon.de, "High-Tech" on amazon.fr)
- 🧹 **Clean data**: one row per product, only the fields that apply, no empty columns
- 📜 **Readable progress logs**: see which department is being scraped and how many products are saved, in real time

### 🛒 What is Amazon Best Sellers Scraper?

Amazon Best Sellers Scraper is a web scraper that extracts the **top-selling products of Amazon's ranking pages** and turns them into structured data. Amazon publishes five rankings, refreshed around the clock, for every category and every country:

| Ranking | Amazon page | What it tells you |
|---|---|---|
| 🥇 **Best Sellers** | `/gp/bestsellers/` | The most popular products by sales, category leaders |
| 🆕 **New Releases** | `/gp/new-releases/` | New products gaining traction fast |
| 🚀 **Movers & Shakers** | `/gp/movers-and-shakers/` | Biggest sales-rank gainers of the last 24 hours, with % change |
| 💝 **Most Wished For** | `/gp/most-wished-for/` | Products most added to wish lists: demand before purchase |
| 🎁 **Gift Ideas** | `/gp/most-gifted/` | Products most bought as gifts |

🌍 **Supported marketplaces:** 🇺🇸 amazon.com · 🇬🇧 amazon.co.uk · 🇩🇪 amazon.de · 🇫🇷 amazon.fr · 🇮🇹 amazon.it · 🇪🇸 amazon.es · 🇳🇱 amazon.nl · 🇧🇪 amazon.com.be · 🇸🇪 amazon.se · 🇵🇱 amazon.pl · 🇹🇷 amazon.com.tr · 🇨🇦 amazon.ca · 🇲🇽 amazon.com.mx · 🇧🇷 amazon.com.br · 🇯🇵 amazon.co.jp · 🇮🇳 amazon.in · 🇦🇺 amazon.com.au · 🇸🇬 amazon.sg · 🇦🇪 amazon.ae · 🇸🇦 amazon.sa

### 🔮 How do I scrape Amazon Best Sellers?

#### 1. 🧭 Choose your scraping mode

Two ways to tell the scraper what to collect. Pick one at the top of the input, then open the matching option.

![Amazon Best Sellers Scraper input: choose a scraping mode](https://i.ibb.co/LXKJs6kf/input-overview.png)

#### 2. 🔗 Option 1: paste Amazon URLs (easiest)

Open any ranking on Amazon, in any category and any country, and paste its URL. One URL = one list of up to 100 products. Mix stores and rankings freely.

#### 3. 🧭 Option 2: pick a store, rankings and categories

No URLs to collect: choose the Amazon store, one or more rankings and the categories. Every ranking is scraped for every category (2 rankings × 3 categories = 6 lists). Tick **Every department** to scrape the whole store.

#### 4. 🌳 Go deeper with subcategories, set your limits

Include subcategories 1, 2 or 3 levels down, or the whole category tree. Keep the top N of each list and cap the total number of products: the first ones in Amazon's order are kept, and the scraper only opens the departments it needs.

#### 5. ▶️ Run and download

Click **Start**. Follow the progress in the log, then export the results as JSON, CSV, Excel, XML or HTML, or read them through the Apify API.

### 📊 How many results can you scrape?

Amazon publishes **up to 100 products per ranking list**. How many products you get depends on how many lists you scrape:

- 🔗 **One URL**: up to 100 products
- 🏬 **Every department of a store**: about 30 to 40 lists, so 3,000 to 4,000 products per ranking
- 🌳 **With subcategories**: thousands of lists and hundreds of thousands of products for a whole category tree

Some lists have fewer than 100 products (Amazon leaves a rank empty when a product is unavailable), and Movers & Shakers lists are sometimes empty on Amazon itself.

### 📋 Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `"urls"` | `"urls"` (Option 1: from Amazon URLs) or `"categories"` (Option 2: by store & categories) |
| **Option 1: Amazon URLs** | | | |
| `startUrls` | array | – | Amazon ranking URLs, e.g. `https://www.amazon.com/gp/bestsellers/electronics/` |
| **Option 2: Store & categories** | | | |
| `marketplace` | string | `"com"` | Amazon store: `com`, `co.uk`, `de`, `fr`, `it`, `es`, `ca`, `co.jp`, … |
| `listTypes` | array | `["bestsellers"]` | `bestsellers`, `new-releases`, `movers-and-shakers`, `most-wished-for`, `most-gifted` |
| `categories` | array | – | Category names from Amazon URLs (`electronics`, `kitchen`), optionally with a node id (`electronics/172541`) |
| `allDepartments` | boolean | `false` | Scrape every top-level department of the store |
| **Subcategories & limits** | | | |
| `subcategories` | string | `"0"` | `"0"` only your lists · `"1"`, `"2"`, `"3"` levels down · `"all"` the whole tree |
| `maxItemsPerCategory` | number | `100` | Top N per list (max 100). 50 or less is twice as fast |
| `maxCategories` | number | `1000` | Max number of lists in the run (yours + subcategories) |
| `maxItems` | number | `0` | Stop after N products in total (0 = no limit). The first products in Amazon's order are kept |

#### 🔗 Input example: Option 1, Amazon URLs

```json
{
  "mode": "urls",
  "startUrls": [
    { "url": "https://www.amazon.com/gp/bestsellers/electronics/" },
    { "url": "https://www.amazon.co.uk/gp/new-releases/kitchen/" },
    { "url": "https://www.amazon.de/gp/movers-and-shakers/toys/" }
  ]
}
```

#### 🏬 Input example: Option 2, a whole store

```json
{
  "mode": "categories",
  "marketplace": "com",
  "listTypes": ["bestsellers"],
  "allDepartments": true,
  "subcategories": "0",
  "maxItems": 1000
}
```

This returns the full top 100 of the first 10 departments of amazon.com, in Amazon's order.

### ✨ What you'll get

![Amazon Best Sellers Scraper results table](https://i.ibb.co/vx0MqPHg/output-overview-table.png)

#### 🏷️ Product data structure

| Field | Description |
|---|---|
| `rank` | Position in the Amazon ranking (1 to 100) |
| `asin` | Amazon product ID |
| `title` | Product name |
| `url` | Product page on Amazon |
| `imageUrl` | Product image (900 px) |
| `price` | Price as a number (`null` when Amazon shows none) |
| `currency` | ISO currency code: `USD`, `EUR`, `GBP`, `JPY`, … |
| `rating` | Average star rating |
| `reviewsCount` | Number of ratings |
| `listType` | Ranking: `bestsellers`, `new-releases`, `movers-and-shakers`, `most-wished-for`, `most-gifted` |
| `marketplace` | Amazon store, e.g. `amazon.com` |
| `department` | Top-level department, e.g. `Electronics` (also for its subcategories) |
| `categoryName` | Category of the list, e.g. `Headphones` |
| `categoryPath` | Full path, e.g. `Electronics > Headphones` |
| `categoryUrl` | Amazon ranking page the product comes from |
| `scrapedAt` | Date and time of the scrape (ISO 8601) |

Added only when they apply:

| Field | When |
|---|---|
| `currentSalesRank`, `previousSalesRank`, `salesRankChangePercent` | Movers & Shakers: sales rank now, 24 hours ago, and % change |
| `maxPrice` | Products sold at a price range (`$19.99 - $49.99`) |
| `isLowestOfferPrice` | `true` when Amazon shows "N offers from $X" instead of a buy-box price |
| `brand` | Products whose details were completed from their product page |

#### 📦 Output example

```json
{
  "rank": 3,
  "asin": "B0DJGDC3BD",
  "title": "Amazon Fire TV Stick HD (newest model), free & live TV, Alexa Voice Remote, powered by the TV, effortless setup, find shows faster with Alexa+",
  "url": "https://www.amazon.com/dp/B0DJGDC3BD",
  "imageUrl": "https://images-na.ssl-images-amazon.com/images/I/610j-wmxRcL._AC_UL900_SR900,600_.jpg",
  "price": 15.99,
  "currency": "USD",
  "rating": 4.1,
  "reviewsCount": 5657,
  "listType": "bestsellers",
  "marketplace": "amazon.com",
  "department": "Amazon Devices & Accessories",
  "categoryName": "Amazon Devices & Accessories",
  "categoryPath": "Amazon Devices & Accessories",
  "categoryUrl": "https://www.amazon.com/gp/bestsellers/amazon-devices/",
  "scrapedAt": "2026-09-28T13:17:34.817Z"
}
```

#### 📜 Clear progress logs

```
🚀 Amazon Best Sellers Scraper
🛒 Store: amazon.com · Rankings: Best Sellers · Every department
📦 Up to 100 products per list · Max 1000 products · Subcategories: none

🔍 Reading the department list of amazon.com…
   → 40 departments found
📡 [1/40] Amazon Devices & Accessories…
📡 [2/40] Amazon Renewed…
   ✅ Amazon Devices & Accessories: 100 products (total: 350/1000)
   ✅ Baby: 98 products (total: 848/1000)
📡 [11/40] Camera & Photo Products…
   ✂️ Camera & Photo Products: first 2 products kept to stay within the limit

🏁 Completed in 36.5s — 1000 products saved from 11 lists
```

### 🔗 Integrations

Connect Amazon Best Sellers Scraper to your favorite tools or LLM and automate your product research:

- 🔄 **N8N**: [Apify + N8N Integration Guide](https://docs.apify.com/platform/integrations/n8n)
- ⚡ **Make (Integromat)**: [Apify + Make Integration Guide](https://docs.apify.com/platform/integrations/make)
- 🤖 **MCP (AI Agents)**: [Apify MCP Server](https://docs.apify.com/platform/integrations/mcp)
- 📊 **Google Sheets, Slack, Zapier, webhooks**: [Apify integrations](https://docs.apify.com/platform/integrations)

### 🎯 Use cases

#### 🛍️ **Amazon sellers & FBA**

- Find winning products and profitable niches before you source
- Track the category leaders you compete with, rank by rank
- Spot rising products early with New Releases and Movers & Shakers

#### 🏢 **Brands & e-commerce teams**

- Monitor your products' Best Seller rank every day
- Benchmark prices, ratings and reviews against the top 100
- Compare the same category across countries

#### 📊 **Market researchers & analysts**

- Build datasets of category leaders across 20 marketplaces
- Analyze price levels and review counts by department
- Export to CSV or Excel for dashboards and reports

#### 🎁 **Affiliates & content creators**

- Build always-fresh "best products" and gift guides from Gift Ideas and Most Wished For
- Find trending products to feature before they peak

### 💡 Pro tips

#### 📅 **Track rankings over time**

Schedule the scraper daily (or hourly for Movers & Shakers) and compare `rank` per `asin` between runs.

#### ⚡ **Go faster**

Set `maxItemsPerCategory` to 50 or less: one page per list instead of two.

#### 🎯 **Target a precise subcategory**

Open the subcategory on Amazon and paste its URL (Option 1), or add its node id to the category name in Option 2 (`electronics/172541` for Headphones).

#### 🌍 **Compare countries**

In Option 1, paste the same ranking from several stores (amazon.com, amazon.de, amazon.co.jp…). Each row carries its `marketplace` and local `currency`.

### ❓ FAQ

**🛡️ Do I need proxies to scrape Amazon Best Sellers?**
No. Residential proxies are included and automatically exit in the country of each Amazon store, so you get local prices and currencies with nothing to configure.

**💻 Can I use Amazon Best Sellers Scraper with the API?**
Yes. Start runs and fetch results with the [Apify API](https://docs.apify.com/api/v2) or the [JavaScript](https://docs.apify.com/api/client/js) and [Python](https://docs.apify.com/api/client/python) clients.

**🔌 Can I integrate it with other apps?**
Yes: n8n, Make, Zapier, Google Sheets, Slack, webhooks and AI agents through MCP. See [Integrations](#-integrations).

**🔄 How often does Amazon update its Best Sellers?**
Amazon refreshes its rankings throughout the day. Schedule the scraper as often as you need fresh data.

**🤔 Why does a product have no price or rating?**
The scraper returns what Amazon displays. Some products show no price (unavailable, offer-only) or have no ratings yet. Prices also change between runs as Amazon updates offers and deals.

**📭 A Movers & Shakers list came back empty. Why?**
Amazon sometimes publishes no Movers & Shakers for a category, even to regular visitors. The scraper recognizes these pages in every language and reports them as empty lists, without wasting retries.

**⚖️ Is it legal to scrape Amazon Best Sellers?**
The scraper only collects publicly visible ranking data, without logging in. You are responsible for how you use the data; check the regulations that apply to your use case.

### 🤝 Support & feedback

Need help, found an issue or want a feature? Open an issue on the **Issues** tab, we answer quickly.

**❤️ Love our scraper?** Please leave a review, it helps a lot! [here](https://console.apify.com/actors/NqO7I7NkbcTc3KbUj/info/reviews?build=stable)

***

**Built with ❤️ for Amazon sellers, brands and data enthusiasts**

# Changelog

This Actor's version history is a separate document: https://apify.com/data\_xplorer/amazon-bestsellers/changelog.md

# Actor input Schema

## `mode` (type: `string`):

<b>Option 1, from Amazon URLs</b>: paste the URLs of the rankings you want (easiest, works for any category).<br><b>Option 2, by store & categories</b>: pick a store, one or more rankings and categories, or a whole store, without collecting URLs.

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

Open a ranking on Amazon (Best Sellers, New Releases, Movers & Shakers, Most Wished For or Gift Ideas), in any category and any country, and paste its URL. Example: <code>https://www.amazon.com/gp/bestsellers/electronics/</code>. One URL = one list of up to 100 products.

## `marketplace` (type: `string`):

Country store to scrape.

## `listTypes` (type: `array`):

Which Amazon rankings to scrape for the categories below.

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

The category name as it appears in Amazon URLs, after <code>/bestsellers/</code>. Examples: <code>electronics</code>, <code>kitchen</code>, <code>toys-and-games</code>. For a precise subcategory, add its number: <code>electronics/172541</code> (Headphones). Not sure of the name? Use Option 1 and paste the URL instead.

## `allDepartments` (type: `boolean`):

Ignore the categories above and scrape every top-level department of the store (about 30 to 40 lists). Combine with <i>Include subcategories</i> to go deeper.

## `subcategories` (type: `string`):

Also scrape the rankings of the subcategories under each list. Example with Electronics: <i>1 level</i> adds Headphones, Cameras, Computers…; <i>2 levels</i> also adds Earbuds, Over-Ear Headphones…

## `maxItemsPerCategory` (type: `integer`):

Keep the top N of each list. Amazon publishes up to 100. Choosing 50 or less is twice as fast (one page per list instead of two).

## `maxCategories` (type: `integer`):

Stop adding lists after this many (your lists + subcategories). A safety limit so a run with subcategories can't grow bigger than you expect. 1 list = up to 100 products.

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

Stop after this many products. 0 = no limit. Products are kept in Amazon's order: with <i>Every department</i> and 1000, you get the full top 100 of the first 10 departments as listed on Amazon.

## Actor input object example

```json
{
  "mode": "urls",
  "startUrls": [
    {
      "url": "https://www.amazon.com/gp/bestsellers/electronics/"
    }
  ],
  "marketplace": "com",
  "listTypes": [
    "bestsellers"
  ],
  "categories": [
    "electronics"
  ],
  "allDepartments": false,
  "subcategories": "0",
  "maxItemsPerCategory": 100,
  "maxCategories": 1000,
  "maxItems": 0
}
```

# Actor output Schema

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

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.amazon.com/gp/bestsellers/electronics/"
        }
    ],
    "categories": [
        "electronics"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_xplorer/amazon-bestsellers").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 = {
    "startUrls": [{ "url": "https://www.amazon.com/gp/bestsellers/electronics/" }],
    "categories": ["electronics"],
}

# Run the Actor and wait for it to finish
run = client.actor("data_xplorer/amazon-bestsellers").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 '{
  "startUrls": [
    {
      "url": "https://www.amazon.com/gp/bestsellers/electronics/"
    }
  ],
  "categories": [
    "electronics"
  ]
}' |
apify call data_xplorer/amazon-bestsellers --silent --output-dataset

```

## MCP server setup

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

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/NqO7I7NkbcTc3KbUj/builds/ABY1d8vtMVKqNZ54e/openapi.json
