# Amazon Best Sellers Scraper (`cirkit/amazon-bestsellers-scraper`) Actor

Scrape Amazon Best Sellers, New Releases, Movers & Shakers and Most Wished For lists. Get rank, ASIN, title, price, rating, review count, author and image for the top 100 in any category and subcategory, on 22 Amazon sites.

- **URL**: https://apify.com/cirkit/amazon-bestsellers-scraper.md
- **Developed by:** [Crikit](https://apify.com/cirkit) (community)
- **Categories:** E-commerce, Automation, Marketing
- **Stats:** 7 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 product results

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/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

### What is Amazon Best Sellers Scraper?

**Amazon Best Sellers Scraper** lets you extract the ranked top 100 products from [Amazon Best Sellers](https://www.amazon.com/Best-Sellers/zgbs/), New Releases, Movers & Shakers, Most Wished For and Gift Ideas lists, helping you spot winning products, track category rankings over time and research competitors before you source or launch. Paste a list link such as `https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/` and get every rank as a clean row: **rank, ASIN, title, price, star rating, number of ratings, image** and the full category path, plus author and format for books and media.

- 🏆 **Find winning products to sell:** see what actually sells in any category or subcategory, ranked by Amazon's own hourly sales data
- 📈 **Track rankings over time:** schedule a daily run and watch products climb and fall in the top 100
- 🔎 **Research a niche in one run:** set a subcategory depth and read the top 100 of every subcategory under a department
- 🆕 **Catch launches early:** New Releases shows the best-selling new products before they reach the main list
- 📚 **Monitor books and media:** author, format (Paperback, Kindle, Hardcover) and formats available on every book row
- 🌍 **22 Amazon sites:** amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .co.jp, .in, .com.mx, .com.br and more, each priced in its own currency
- ⚡ **No browser, no login, no cookies.** Fast HTTP requests through Apify Proxy

Amazon only shows the first 30 products of each list when the page loads and fetches the rest as you scroll. Amazon Best Sellers Scraper reads that lazy-loaded part too, so every list comes back **complete, ranks 1 to 100, with no gaps**.

### What data does Amazon Best Sellers Scraper extract?

- 🥇 Rank in the list, 1 to 100 (`rank`)
- 🆔 ASIN, or ISBN-10 for most books (`asin`)
- 🏷 Product title and clean product URL (`title`, `url`)
- 💲 Price as a number, price range upper end, price as printed, and currency (`price`, `priceMax`, `priceText`, `currency`)
- ⭐️ Star rating and number of ratings (`rating`, `reviewsCount`)
- ✍️ Author or artist and their Amazon page, for books and media (`byline`, `bylineUrl`)
- 📖 Format and number of formats available (`format`, `formatsAvailable`)
- 🛒 Number of seller offers when shown (`offersCount`)
- 📸 Full-size image and list thumbnail (`imageUrl`, `thumbnailUrl`)
- 📊 Movers & Shakers sales rank now, 24 hours ago, and percent change (`salesRank`, `salesRankPrevious`, `salesRankChangePercent`)
- 🗂 Category name, breadcrumb path, department and browse node id (`categoryName`, `categoryPath`, `department`, `categoryNodeId`)
- 🌐 List name, list URL, Amazon site and page (`listName`, `listUrl`, `marketplace`, `page`)

Rank, ASIN, title, URL, image and category are returned on every product row. Price, rating, author and format are filled whenever Amazon shows them on the card (a brand-new product has no rating yet, and some cards show no price when the item is out of stock).

### How to scrape Amazon Best Sellers

1. Click **Try for free** and open the Input tab.
2. Paste one or more **Amazon list URLs**. Browse to any Best Sellers or New Releases page on Amazon and copy the link.
3. Optionally pick **List types** to read several lists for the same category, and a **Subcategory depth** to go down the category tree.
4. Set **Max products in total** to cap the cost, then click **Start**.
5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

### Input

```json
{
    "startUrls": [
        "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
        "https://www.amazon.co.uk/gp/bestsellers/books/"
    ],
    "listTypes": ["bestsellers", "new-releases"],
    "maxDepth": 1,
    "maxItemsPerList": 100,
    "maxItems": 2000
}
```

| Field | What it does |
|---|---|
| `startUrls` | Amazon Best Sellers, New Releases, Movers & Shakers, Most Wished For or Gift Ideas links. Required. Both `/zgbs/...` and `/gp/bestsellers/...` link styles work. |
| `listTypes` | Read these lists for every URL: `bestsellers`, `new-releases`, `movers-and-shakers`, `most-wished-for`, `gift-ideas`. Empty means the list in the URL. |
| `maxDepth` | Subcategory levels to read under each URL. 0 is just the given list. |
| `maxItemsPerList` | Ranks to keep from each list, from the top (1 to 100). |
| `maxItems` | Hard cap on rows across all lists, and so on cost. |

**Tip:** start from `https://www.amazon.com/Best-Sellers/zgbs/` to get the top 100 of every department in one run.

### Output

```json
{
    "listType": "bestsellers",
    "listName": "Best Sellers",
    "rank": 1,
    "asin": "153878405X",
    "title": "Verity",
    "url": "https://www.amazon.com/dp/153878405X",
    "price": 13.53,
    "priceMax": null,
    "priceText": "$13.53",
    "currency": "USD",
    "rating": 4.6,
    "reviewsCount": 411667,
    "byline": "Colleen Hoover",
    "bylineUrl": "https://www.amazon.com/Colleen-Hoover/e/B006SKAK42",
    "format": "Paperback",
    "offersCount": null,
    "formatsAvailable": 4,
    "imageUrl": "https://images-na.ssl-images-amazon.com/images/I/91SzIoUOaJL.jpg",
    "thumbnailUrl": "https://images-na.ssl-images-amazon.com/images/I/91SzIoUOaJL._AC_UL300_SR300,200_.jpg",
    "salesRank": null,
    "salesRankPrevious": null,
    "salesRankChangePercent": null,
    "categoryName": "Books",
    "categoryPath": ["Books"],
    "department": "books",
    "categoryNodeId": null,
    "listUrl": "https://www.amazon.com/gp/bestsellers/books",
    "marketplace": "amazon.com",
    "page": 1,
    "scrapedAt": "2026-10-04T14:02:11.512Z",
    "noResults": false,
    "notice": null
}
```

The **Overview** table shows rank, image, product, ASIN, price, rating, ratings count, author, category, list and site side by side. A separate **Movers & Shakers** view shows the sales rank change columns.

### How much does it cost to scrape Amazon Best Sellers?

Amazon Best Sellers Scraper uses flat pay-per-result pricing: **$1.00 per 1,000 products**, with no monthly fee. Apify's free plan credit covers your first few thousand products every month.

| Products | Cost |
|---|---|
| 100 (one full list) | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

For comparison, the most used Amazon best sellers actors on the Apify Store charge $2.00 to $5.90 per 1,000 results on the free plan.

### Measured coverage

Measured on 2,179 product rows from 29 lists across amazon.com, .co.uk, .de, .co.jp and .in during QA on 2026-10-04 (cloud and local runs through Apify Proxy). Every list came back with complete, gap-free ranks.

| Field | Best Sellers | New Releases | Books, Kindle, music, movies |
|---|---|---|---|
| Rank, ASIN, title, URL, image | 100% | 100% | 100% |
| Category name and path | 100% | 100% | 100% |
| Price | 99% | 86% | 99% |
| Rating and number of ratings | 93% | 35% | 68% |
| Author or artist (`byline`) | media only | media only | 73% |
| Format | media only | media only | 98% |

New Releases are often too new to have ratings yet, and some pre-order cards show no price; those fields are null exactly when Amazon's own card leaves them out.

### Limits

- **Every Amazon list stops at rank 100.** That is Amazon's limit, not the scraper's. Use subcategories (`maxDepth`) for more products: each subcategory has its own top 100.
- **Movers & Shakers, Most Wished For and Gift Ideas are empty in many categories right now.** Amazon shows "Sorry, there are no movers and shakers available in this category" on those pages. The run returns one row saying so instead of failing, and Best Sellers and New Releases are full everywhere.
- **Prices are the list card price**, not the full offer listing. For every seller's offer, Buy Box owner or stock, feed the ASINs into an Amazon product details scraper.
- **The department index page** (`/Best-Sellers/zgbs/`) has no ranked list of its own; starting there reads every department's list instead.

### FAQ

#### Is it legal to scrape Amazon Best Sellers?

Amazon Best Sellers lists are public pages anyone can view without an account. This actor reads only that public data, uses no login and collects no personal data. You are responsible for how you use the results; check Amazon's terms and the laws that apply to you, and consult a lawyer if unsure.

#### How often does Amazon update Best Sellers rankings?

Amazon says the Best Sellers lists are updated hourly from sales data. Schedule the actor hourly or daily to build a ranking history.

#### Can I scrape Best Sellers for every category at once?

Yes. Start from `https://www.amazon.com/Best-Sellers/zgbs/` to read every department, and raise **Subcategory depth** to go into subcategories. Use **Max products in total** to keep the run within budget.

#### Which Amazon sites are supported?

amazon.com, .ca, .com.mx, .com.br, .co.uk, .de, .fr, .it, .es, .nl, .com.be, .ie, .se, .pl, .com.tr, .ae, .sa, .eg, .in, .co.jp, .sg and .com.au. Prices come back in each site's own currency.

#### Can I use Amazon Best Sellers Scraper as an API?

Yes. Every run is available through the [Apify API](https://docs.apify.com/api/v2), and you can start runs and download results with a single HTTP call.

#### Can I use this in Python?

Yes, with the `apify-client` package:

```python
from apify_client import ApifyClient
run = ApifyClient("<YOUR_TOKEN>").actor("cirkit/amazon-bestsellers-scraper").call(run_input={"startUrls": ["https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"]})
```

#### Can I integrate it with Google Sheets, Zapier or Make?

Yes. Apify integrates with Google Sheets, Zapier, Make, Slack, Airbyte and webhooks, so new rankings can land in a spreadsheet or trigger a workflow automatically.

#### How do I schedule it to run automatically?

Create a Schedule in Apify Console (for example daily at 06:00) and pick this actor with your saved input. Each run adds a new dataset you can compare with the last.

#### Why did I get fewer results than expected?

Most often the list itself is short or empty (see Limits), `maxItems` or `maxItemsPerList` capped the run, or the URL points at the department index with depth 0. The run summary in the key-value store (`RUN_SUMMARY`) lists every list read, how many rows it gave and why it stopped.

#### Can I get a field that is not listed?

Open an issue on the actor's Issues tab and describe the field. Fields Amazon prints on the list card can usually be added quickly.

### You might also like

- [eBay Product & Sold Scraper](https://apify.com/cirkit/ebay-product-scraper): sold prices and listings for the products that rank on Amazon
- [AliExpress Product Scraper](https://apify.com/cirkit/aliexpress-product-search-scraper): find suppliers for the products that sell
- [Etsy Scraper](https://apify.com/cirkit/etsy-shop-product-scraper): listings, shops and search results on Etsy
- [Shopify Store Catalog Scraper](https://apify.com/cirkit/shopify-store-catalog-scraper): every product and price from any Shopify store
- [Google Trends Scraper](https://apify.com/cirkit/google-trends-scraper): check whether a best seller's search demand is rising

### Changelog

- **0.1** (2026-10-04): first release. Best Sellers, New Releases, Movers & Shakers, Most Wished For and Gift Ideas on 22 Amazon sites, subcategory crawling, complete ranks 1 to 100.

# Actor input Schema

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

Best Sellers, New Releases, Movers & Shakers, Most Wished For or Gift Ideas links from any of 22 Amazon sites, one per line. Example: https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ or https://www.amazon.co.uk/gp/new-releases/kitchen/. Use https://www.amazon.com/Best-Sellers/zgbs/ to get every department.

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

Read these lists for every URL above, whatever list the URL itself points to. Leave empty to read only the list in each URL. Amazon currently leaves Movers & Shakers, Most Wished For and Gift Ideas empty in many categories; the run says so in a row instead of failing.

## `maxDepth` (type: `integer`):

How many levels of subcategories to read under each URL. 0 reads only the given list, 1 adds its direct subcategories (Electronics > Headphones), 2 goes one level further (Headphones > Earbud Headphones). Each subcategory is its own top 100. Starting from the Any Department page always reads every department.

## `maxItemsPerList` (type: `integer`):

Ranks to keep from each list, from the top. Every Amazon list ends at 100.

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

Hard cap on rows across every list, and therefore on what the run can cost. Leave empty for no cap.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
  ],
  "listTypes": [],
  "maxDepth": 0,
  "maxItemsPerList": 100
}
```

# Actor output Schema

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

Every product from every list read, one row per rank, with ASIN, title, price, rating, reviews and category path.

## `resultsCsv` (type: `string`):

The same rows as a downloadable CSV file.

## `movers` (type: `string`):

Sales rank now, 24 hours ago, and percent change, for Movers & Shakers lists.

## `summary` (type: `string`):

Per-list counts, stop reasons and request totals for this run.

# 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": [
        "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cirkit/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 = { "startUrls": ["https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"] }

# Run the Actor and wait for it to finish
run = client.actor("cirkit/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 '{
  "startUrls": [
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
  ]
}' |
apify call cirkit/amazon-bestsellers-scraper --silent --output-dataset

```

## MCP server setup

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