# Amazon Best Sellers Scraper: Ranks, 21 Countries, $1.9/1K (`transparent_meteorite/amazon-bestsellers`) Actor

Amazon Best Sellers, New Releases, Movers & Shakers, Most Wished For and Gift Ideas ranks in 21 countries: rank, ASIN, title, price, rating, reviews, images, category path. Subcategory crawl, rank-change monitor, optional product details.

- **URL**: https://apify.com/transparent_meteorite/amazon-bestsellers.md
- **Developed by:** [Detroit Web Agent - Open Data](https://apify.com/transparent_meteorite) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 ranked products

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: ranks from 5 Amazon lists in 21 countries

![Amazon Best Sellers Scraper: features, price and a real output row](https://api.apify.com/v2/key-value-stores/9BAn0msnxToXlD9TO/records/sf-amazon-bestsellers-banner-10140227.png)

[![Run it free on Apify](https://api.apify.com/v2/key-value-stores/9BAn0msnxToXlD9TO/records/sf-cta.png)](https://console.apify.com/actors/z2F9Poil2f2WkMbdq/input)

| Price per 1,000 products | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| **This Actor** | **$1.90** | **$1.50** | **$1.20** | **$1.00** |

<sub>Pay per event, no monthly rental. Prices read from each Actor's public Apify pricing on 2026-10-13; check the Pricing tab for the current figure.</sub>

![Amazon Best Sellers Scraper sample output table from a real run](https://api.apify.com/v2/key-value-stores/9BAn0msnxToXlD9TO/records/sf-amazon-bestsellers-output-10140227.png)

Turn Amazon's public Best Sellers, New Releases, Movers & Shakers, Most Wished For and Gift Ideas lists into a clean ranked table: rank, ASIN, title, price, currency, stars, review count, thumbnail, full-size image, category and full category path. Crawl subcategories, track rank changes between runs, filter by rating, price or reviews, and optionally open every product page for brand, bullets, availability, seller and images. Public pages only. No login.

- **In short:** Amazon Best Sellers Scraper (Apify actor `transparent_meteorite/amazon-bestsellers`) reads Amazon's public ranked lists (Best Sellers, New Releases, Movers & Shakers, Most Wished For, Gift Ideas) and returns one row per ranked product.
- **Who it is for:** Amazon sellers and brands, product researchers, dropshippers, affiliate sites, retail analysts and anyone tracking what sells on Amazon.
- **Input:** categories by name or slug, or any Amazon list URL; list types; country (21 Amazon sites); language; ranks per list (up to 100); subcategory depth; filters (min stars, max price, min reviews); product details on/off; monitor mode; proxy.
- **Output:** one row per ranked product with 26 list fields (plus about 16 more with product details), as JSON, CSV or Excel.
- **Pricing:** pay per event. Per ranked product delivered: $0.0019 on the Apify free plan, $0.0015 Bronze, $0.0012 Silver, $0.001 Gold, Platinum and Diamond. Plus a start event of $0.00005 per GB of run memory.
- **Limits:** Amazon publishes at most 100 ranks per list. Movers & Shakers, Most Wished For and Gift Ideas are often empty on Amazon's side; an empty list is reported in the log and costs nothing.

**Pick a country and a category; get Amazon's top 100 as a clean table in under a minute.**

### Run in 30 seconds

1. Open the actor in [Apify Console](https://console.apify.com/actors?search=transparent_meteorite%2Famazon-bestsellers) (a free Apify account is enough).
2. Press **Start** with the prefilled input. With nothing changed it reads the top 100 US Best Sellers in Electronics, which costs about $0.19 on the free plan.
3. Open the **Output** tab, switch to Table view, download as CSV, Excel or JSON.

Prefilled input:

```json
{
  "categories": ["electronics"],
  "listTypes": ["bestsellers"],
  "countryCode": "US",
  "maxItemsPerCategory": 100
}
```

An empty input `{}` does the same thing: US Best Sellers, Electronics, ranks 1 to 100.

### Why choose this over alternatives

- Lower price per product than the most-used Amazon best sellers actor on the Free to Platinum plans and the same on Diamond (see the table). One of the alternatives is cheaper on paid plans; we say so below.
- 18 input options against 6 on the most-used alternative: categories by name, five list types in one run, 21 countries, English or local language, subcategory depth, rating / price / review filters, product details, monitor mode and a residential fallback.
- Monitor mode: schedule it daily and you only get (and only pay for) products that are new on a list or moved rank, with the old rank and the change.
- Empty lists, filtered rows and unchanged rows are never charged.

| | This actor | Most-used alternative | Another alternative |
|---|---|---|---|
| Price per product, free plan | $0.0019 | $0.0059 | $0.002 |
| Bronze / Silver / Gold | $0.0015 / $0.0012 / $0.001 | $0.005 / $0.0041 / $0.0032 | $0.00039 / $0.00029 / $0.00029 |
| Platinum / Diamond | $0.001 / $0.001 | $0.002 / $0.001 | $0.00029 / $0.00029 |
| Input options | 18 | 6 | see its page |
| List types | 5 (Best Sellers, New Releases, Movers & Shakers, Most Wished For, Gift Ideas) | see its page | see its page |
| Rank-change monitor that charges only changes | yes | no | no |

Prices read from each actor's public pricing on 2026-10-13. Speed measured 2026-10-13: the empty-input run (100 ranks, US Electronics) took 47 s end to end in a local test through Apify datacenter proxy, with 4 page requests and 0 blocks. One run is a small sample.

### What it does and who it is for

Amazon publishes five public ranked lists for every department and most subcategories, updated about every hour:

- **Best Sellers**: the products that sell most in a category right now.
- **New Releases**: the best-selling products released recently.
- **Movers & Shakers**: the biggest gainers in sales rank over the last 24 hours, with the percentage change.
- **Most Wished For**: products added most often to wish lists and registries.
- **Gift Ideas**: products bought most often as gifts.

This actor opens those lists for the countries and categories you choose, reads all ranks Amazon shows (1 to 100), and writes one row per product. It is built for:

- **Amazon sellers and brands** watching where their products and competitors sit in their categories.
- **Product researchers and dropshippers** looking for products that are rising (New Releases, Movers & Shakers) before they are everywhere.
- **Affiliate and review sites** building "top 10" and "best of" pages that need fresh rank, price and image data.
- **Retail and market analysts** comparing what sells in the US, the UK, Germany, Japan, India and other markets.
- **Agencies and data teams** feeding dashboards, spreadsheets or databases on a schedule.

### Quick start

1. Choose a **Country** (21 Amazon sites, default US).
2. Add one or more **Categories** by name or slug, for example `electronics`, `Toys & Games`, `kitchen`, `beauty`, `books`. Or paste any Amazon list URL into **List URLs**, including subcategory URLs.
3. Pick the **List types** (Best Sellers by default; add New Releases or the others).
4. Optional: set **Subcategory depth** to 1 to also read every subcategory, add filters, or turn on **Add product details**.
5. Press **Start**. Rows stream into the Output tab while the run is going.

Category names are matched against the department list Amazon shows in that country, so local names work too (`Küche, Haushalt & Wohnen` on amazon.de). If a name does not match, the log lists every valid department with its slug.

### What you get: output fields

| Field | Example | Notes |
|---|---|---|
| `rank` | 1 | Position on the list, 1 to 100 |
| `asin` | B08JHCVHTY | Amazon product ID |
| `title` | blink plus plan with monthly auto-renewal | As shown on the list |
| `url` | https://www.amazon.com/dp/B08JHCVHTY | Canonical product URL |
| `price` | 11.99 | Lowest price on the list card, site currency |
| `priceMax` | null | Upper end when the card shows a range, else null |
| `currency` | USD | ISO code |
| `stars` | 4.4 | Average rating, 0 to 5 |
| `reviewsCount` | 281069 | Number of ratings |
| `thumbnail` | https://images-na.ssl-images-amazon.com/images/I/31YHGbJsldL.*AC_UL300_SR300,200*.png | List card image |
| `highResImage` | https://images-na.ssl-images-amazon.com/images/I/31YHGbJsldL.png | Full-size image |
| `listType` | bestsellers | bestsellers, new-releases, movers-and-shakers, most-wished-for, most-gifted |
| `listName` | Best Sellers | Human name |
| `category` | Camera & Photo | Category name as Amazon shows it |
| `categoryPath` | Electronics > Camera & Photo | Ancestors and category |
| `categorySlug` | electronics | Department slug |
| `categoryId` | 502394 | Browse node of a subcategory, null for a department |
| `categoryUrl` | https://www.amazon.com/gp/bestsellers/electronics/502394/ | The list that was read |
| `countryCode` | US | Amazon site |
| `salesRank`, `previousSalesRank`, `percentChange` | |  Movers & Shakers only: rank now, 24 hours ago, and the change in percent |
| `subtitle`, `offersText` | | Author / format line or "N offers from" text when Amazon shows it |
| `page` | 1 | 1 = ranks 1-50, 2 = ranks 51-100 |
| `scrapedAt` | 2026-10-13T15:02:11.000Z | When the list was read |

Monitor mode adds `changeType` (`new`, `up`, `down`), `rankLastRun`, `rankChange` (positions gained, negative when it fell) and `lastRunAt`.

With **Add product details** each row also gets: `brand`, `bullets`, `availability`, `seller`, `images` (all full-size images), `detailPrice`, `listPrice`, `isPrime`, `breadcrumbs`, `bestsellerRanks` (every Best Sellers Rank on the product page, e.g. `#1 in Home & Kitchen`, `#1 in Washing Machine Parts & Accessories`), `boughtInPastMonth`, `dateFirstAvailable`, `manufacturer`, `modelNumber`, `dimensions`, `weight` and `description`. A product page that cannot be read keeps the list fields and gets `detailError`.

Fields that Amazon does not show are `null`, never `0` or an empty string pretending to be a value.

### Sample output

```json
{
  "rank": 76,
  "asin": "B0DC6GXZSV",
  "title": "Surge Protector Power Strip - CHCORE 5Ft Braided Extension Cord with 8 Outlets with 4 USB (2 USB C) Charging Ports, Flat Plug Multi Plug Outlet Extender Charging Station for Home Office, ETL, White",
  "url": "https://www.amazon.com/dp/B0DC6GXZSV",
  "price": 9.99,
  "priceMax": null,
  "currency": "USD",
  "stars": 4.6,
  "reviewsCount": 9035,
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/611zhZdA6DL._AC_UL300_SR300,200_.jpg",
  "highResImage": "https://images-na.ssl-images-amazon.com/images/I/611zhZdA6DL.jpg",
  "listType": "bestsellers",
  "listName": "Best Sellers",
  "category": "Electronics",
  "categoryPath": "Electronics",
  "categorySlug": "electronics",
  "categoryId": null,
  "categoryUrl": "https://www.amazon.com/gp/bestsellers/electronics/",
  "countryCode": "US",
  "salesRank": null,
  "previousSalesRank": null,
  "percentChange": null,
  "subtitle": null,
  "offersText": null,
  "page": 2,
  "scrapedAt": "2026-10-13T15:02:11.000Z"
}
```

A German subcategory row (local language):

```json
{
  "rank": 1,
  "asin": "B0CQ45YD2C",
  "title": "Lifewit 105L Pfandflaschen Sammelbehälter mit Deckel ...",
  "price": 17.98,
  "currency": "EUR",
  "stars": 4.8,
  "reviewsCount": 3098,
  "listName": "Best Sellers",
  "category": "Abfall & Recycling",
  "categoryPath": "Küche, Haushalt & Wohnen > Abfall & Recycling",
  "categorySlug": "kitchen",
  "categoryId": "3312271",
  "countryCode": "DE"
}
```

### Input options

| Option | Default | What it does |
|---|---|---|
| Categories (`categories`) | electronics | Department names or slugs in the chosen country |
| List URLs (`startUrls`) | none | Any list URL of the 5 types, incl. subcategories; a root URL expands into every department |
| List types (`listTypes`) | bestsellers | Any of bestsellers, new-releases, movers-and-shakers, most-wished-for, most-gifted |
| Country (`countryCode`) | US | US, UK, DE, FR, IT, ES, NL, BE, SE, PL, TR, CA, MX, BR, JP, IN, AU, SG, AE, SA, EG |
| Language (`language`) | local | `en` uses Amazon's English pages where they exist |
| Ranks per list (`maxItemsPerCategory`) | 100 | Top N per list, 1 to 100 |
| Max rows (`maxItems`) | 100 | Stop for the whole run and your cost cap |
| Subcategory depth (`depth`) | 0 | 1 = also direct subcategories, up to 5 |
| Max lists (`maxCategories`) | 50 | Upper bound on lists per run |
| Min stars (`minRating`) | none | Drop rows below this rating |
| Max price (`maxPrice`) | none | Drop rows above this price |
| Min reviews (`minReviews`) | none | Drop rows with fewer ratings |
| Add product details (`scrapeProductDetails`) | off | Opens each product page for 16 more fields |
| Detail pages in parallel (`detailConcurrency`) | 5 | 1 to 10 |
| Monitor mode (`monitorMode`) | off | Output only new or moved products |
| Monitor store name (`monitorStoreName`) | amazon-bestsellers-monitor | One name per tracker |
| Proxy (`proxyConfiguration`) | Apify datacenter | Any Apify proxy group or your own |
| Residential fallback (`autoProxyFallback`) | on | Switch a country to residential if it keeps blocking |

#### Input examples

Top 100 New Releases and Best Sellers in UK Toys & Games:

```json
{ "countryCode": "UK", "categories": ["Toys & Games"], "listTypes": ["bestsellers", "new-releases"] }
```

Every subcategory of German Kitchen, top 20 each, in English:

```json
{ "countryCode": "DE", "categories": ["kitchen"], "depth": 1, "maxItemsPerCategory": 20, "maxItems": 2000, "language": "en" }
```

A subcategory by URL, with product details:

```json
{ "startUrls": [{ "url": "https://www.amazon.com/Best-Sellers-Electronics-Camera-Photo-Products/zgbs/electronics/502394/" }], "maxItemsPerCategory": 20, "scrapeProductDetails": true }
```

Daily rank tracker that only reports changes (schedule it):

```json
{ "categories": ["beauty"], "monitorMode": true, "monitorStoreName": "beauty-us-tracker", "maxItems": 100 }
```

Well-rated, cheap products only:

```json
{ "categories": ["home-garden"], "minRating": 4.5, "maxPrice": 25, "minReviews": 500 }
```

### Pricing

Pay per event. There is no subscription and no rental fee for this actor.

| Event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Ranked product (one per row delivered) | $0.0019 | $0.0015 | $0.0012 | $0.001 | $0.001 | $0.001 |
| Actor start (one per GB of run memory, minimum one) | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 |

The default run memory is 512 MB, so the start costs $0.00005 per run. The price per row is the same with product details on or off.

Worked examples:

| Rows delivered | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| 100 (one full list, the default) | $0.19005 | $0.15005 | $0.12005 | $0.10005 | $0.10005 | $0.10005 |
| 1,000 | $1.90005 | $1.50005 | $1.20005 | $1.00005 | $1.00005 | $1.00005 |
| 10,000 | $19.00005 | $15.00005 | $12.00005 | $10.00005 | $10.00005 | $10.00005 |

A daily monitor on one 100-rank list typically outputs only the products that moved, so 30 days cost far less than 30 x 100 rows; the first run outputs the whole list.

Apify's free plan includes $5 of monthly platform credit, which covers about 2,600 rows with this actor at the free-plan price.

What is and is not charged:

- One event per ranked product row written to the dataset.
- Empty lists ("no items available, check back later") deliver nothing and cost nothing.
- Rows dropped by a filter are not charged.
- In monitor mode, unchanged products are not output and not charged.
- A list that stays blocked after all retries delivers nothing and costs nothing.
- The same product on the same list is never delivered twice in one run.

To cap spend, set **Max rows** or **Maximum cost per run** in the run options; the actor stops when either limit is reached.

### How to run it

#### In Apify Console

Open the actor, fill in the form and press **Start**. Rows appear in the **Output** tab while the run is going. When the run ends, use **Export** for JSON, CSV, Excel, XML or HTML, or switch views: Overview, Rank changes (monitor mode) and With product details.

#### From the API or a client library

Set `APIFY_TOKEN` to your token from Apify Console > Settings > API & Integrations.

```bash
curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~amazon-bestsellers/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"countryCode":"US","categories":["toys-and-games"],"maxItemsPerCategory":50}'
```

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("transparent_meteorite/amazon-bestsellers").call(run_input={
    "countryCode": "UK",
    "categories": ["electronics"],
    "listTypes": ["bestsellers", "new-releases"],
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["rank"], row["asin"], row["price"], row["title"][:60])
```

JavaScript:

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('transparent_meteorite/amazon-bestsellers').call({ countryCode: 'DE', categories: ['kitchen'], depth: 1, maxItemsPerCategory: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);
```

#### On a schedule

In Apify Console open **Schedules**, create a schedule (for example every day at 06:00), and add this actor with your input. Turn on **Monitor mode** so each run only returns what changed since the last one. Use a different **Monitor store name** for each tracker.

#### With n8n, Make, Zapier or AI agents

Use the Apify integration in n8n, Make or Zapier: "Run actor" with `transparent_meteorite/amazon-bestsellers`, then "Get dataset items". Each row is flat JSON, so it maps straight into Google Sheets, Airtable, a database or a Slack message. AI agents can call it through the Apify MCP server (see the end of this page).

### Reliability and blocking

- Each page is fetched on a fresh proxy session. A robot-check page, a 503/429, a JavaScript challenge or any page that is not a real list is treated as blocked and retried on a new IP with exponential backoff, up to 6 times.
- Ranks 31 to 50 of each page are loaded the same way Amazon's own page does (a follow-up request on the same session), so a list returns all 50 ranks per page, 100 in total.
- If a country keeps blocking the proxy, the run switches that country to Apify residential proxy in the right country for the rest of the run (turn off with **Switch to residential proxy if blocked**).
- Prices are requested in each site's own currency, so amazon.co.jp returns yen even through a proxy in another country.
- Captchas are never solved. A list that stays blocked is reported in the log and costs nothing.

### Run summary record

Every run writes an `OUTPUT` record to its key-value store:

```json
{
  "lists": 1,
  "emptyLists": 0,
  "failedLists": 0,
  "requests": 4,
  "ok": 4,
  "blocked": 0,
  "delivered": 100,
  "charged": 100,
  "filtered": 0,
  "unchanged": 0,
  "duplicates": 0,
  "detailFailures": 0,
  "successRatePct": 100,
  "residentialFallback": false,
  "warnings": []
}
```

`warnings` names every empty list, unknown category (with the valid ones), list that stayed blocked, and skipped URL.

### Limits and honest caveats

- Amazon publishes at most 100 ranks per list, so `maxItemsPerCategory` stops at 100.
- Movers & Shakers, Most Wished For and Gift Ideas are frequently empty on Amazon itself ("Sorry, there are no movers and shakers available in this category. Please check back later."). On 2026-10-13 they were empty in every country and category we tried. The actor supports them fully and reports an empty list in the log without charging; Best Sellers and New Releases always had items.
- The list card shows the lowest current offer price; with product details on, `detailPrice` is the buy-box price, which can differ.
- Some products have no price on the list (unavailable or only third-party offers); `price` is then `null`.
- Category names depend on the site language. Slugs (such as `electronics`) work everywhere.
- Ranks change about every hour. Each row is a snapshot at `scrapedAt`.
- 21 Amazon sites were verified on 2026-10-13. Other Amazon sites are not supported yet.

New to Apify? [Create a free account](https://console.apify.com/sign-up?fpr=rnmakg) and run this Actor in under a minute. Some links are affiliate links.

### Related actors

More tools from the same publisher that fit this workflow:

- [Amazon Product Search](https://apify.com/transparent_meteorite/amazon-product-search): search Amazon for prices, ratings and ASINs
- [Shopify Leads & Store Scraper](https://apify.com/transparent_meteorite/shopify-store-leads): Shopify store leads with apps, products and contacts
- [Company Enrichment by Domain](https://apify.com/transparent_meteorite/company-enrichment-by-domain): enrich a domain with socials, emails and tech stack
- [Website Email Extractor](https://apify.com/transparent_meteorite/website-contact-extractor): pull emails, phones and socials from each business website
- [Website Tech Stack Detector](https://apify.com/transparent_meteorite/website-tech-stack-detector): detect the CMS, frameworks and hosting behind any site
- [Local Business Leads](https://apify.com/transparent_meteorite/local-business-leads): find local businesses with no website from OpenStreetMap, a cheap complement to Maps data

Use from AI agents: every actor here is callable through the Apify MCP server (mcp.apify.com).

### FAQ

**Do I need an Amazon account or cookies?** No. Only public list pages are read.

**How many products does one list have?** Up to 100. Ranks 1 to 50 come from page 1 and 51 to 100 from page 2.

**Can I scrape a subcategory?** Yes: paste its URL into List URLs, or set Subcategory depth to 1 or more to crawl all subcategories of a department.

**Which category names can I use?** Whatever Amazon shows in that country's Best Sellers menu, or the slug from the URL (`/gp/bestsellers/<slug>/`). An unknown name makes the log list every valid one.

**Why did Movers & Shakers return nothing?** Amazon shows that list as empty right now ("check back later"). You were not charged.

**Can I get English titles from amazon.de or amazon.co.jp?** Yes, set Language to English. It uses Amazon's own English pages, which exist on DE, FR, IT, ES, NL, BE, SE, JP, SA and EG.

**How do I track ranks over time?** Turn on Monitor mode and schedule the actor. Each run outputs only products that are new or moved, with the previous rank.

**Is the price the same with product details?** Yes, one event per row either way.

### Troubleshooting

- **"category ... not found"**: copy a name or slug from the list printed in the same warning, or paste the list URL instead.
- **0 rows and "Amazon currently shows no items"**: that list is empty on Amazon. Try Best Sellers or New Releases, or another category.
- **Some rows lack ranks 31-50**: Amazon refused the follow-up request; the warning names the list. Run again or lower Ranks per list to 30.
- **Blocked pages in the summary**: normal at low rates; they are retried. If a whole list stays blocked, leave the residential fallback on or choose a residential proxy group.
- **Prices in the wrong currency**: open an issue with the run URL; prices are requested in the site's currency.

### Terms & responsible use

This actor reads public Amazon pages that anyone can open without logging in. Amazon's Conditions of Use restrict automated access, so you are responsible for how you use the data: respect Amazon's terms, applicable law and rate limits, do not resell Amazon content as your own, and keep volumes reasonable. The actor collects no login data, no cookies of yours and no personal data of any kind. It is an independent tool and is not affiliated with or endorsed by Amazon. Ranks and prices change quickly and vary by location; treat each row as a snapshot at `scrapedAt`.

### More resources

- Guide & examples: [mamoo85.github.io/open-data-actors/amazon-bestsellers.html](https://mamoo85.github.io/open-data-actors/amazon-bestsellers.html)

### Works well with

Other actors from Detroit Web Agent - Open Data that pair with this one:

- [Amazon Product Search](https://apify.com/transparent_meteorite/amazon-product-search): search Amazon by keyword or ASIN for the products you found on a best sellers list.
- [Shopify Store Leads](https://apify.com/transparent_meteorite/shopify-store-leads): find the independent stores selling the same products.

### Changelog

- 2026-10-13: First version (private): 5 list types, 21 countries, subcategory depth, filters, product details, monitor mode.

### Support

A list that should have returned rows, a field that parsed wrongly, or a field you need added? Open an issue on this actor's **Issues** tab with the run URL and what you expected. The run URL lets us see the exact input and the `OUTPUT` record.

### Need more than the data?

This actor is built by [Detroit Web Agent](https://www.detroitwebagent.com/?utm_source=apify\&utm_medium=readme\&utm_campaign=amazon-bestsellers), a small Detroit studio that builds websites, lead pages and simple data tools for small businesses. If you want these results turned into a working website, a landing page or a dashboard, or you need a field this actor does not cover yet, open an issue on the Issues tab or visit [detroitwebagent.com](https://www.detroitwebagent.com/?utm_source=apify\&utm_medium=readme\&utm_campaign=amazon-bestsellers).

***

Built and maintained by **Detroit Web Agent - Open Data** (Detroit, Michigan). Questions, bugs or a field you need: open an issue on this Actor's Issues tab and we will reply there.

### Use it from AI assistants (MCP)

Amazon Best Sellers Scraper works as a tool for AI assistants through the official Apify MCP server. Add this server URL to any MCP client (Claude Desktop, Claude Code, Cursor, ChatGPT connectors, VS Code):

```
https://mcp.apify.com/?actors=transparent_meteorite/amazon-bestsellers
```

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?actors=transparent_meteorite/amazon-bestsellers",
      "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
    }
  }
}
```

# Actor input Schema

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

Department names or slugs as Amazon shows them in the country you pick, e.g. "electronics", "Toys & Games", "kitchen", "Küche, Haushalt & Wohnen". Each is matched against the country's department list; an unknown name lists the valid ones in the log. Leave empty and add no URLs for Electronics.

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

Any Amazon Best Sellers / New Releases / Movers & Shakers / Most Wished For / Gift Ideas URL, including subcategories, e.g. https://www.amazon.com/Best-Sellers-Electronics-Camera-Photo-Products/zgbs/electronics/502394/ or https://www.amazon.de/gp/new-releases/kitchen/. The country and list type are read from the URL. A root URL such as https://www.amazon.com/gp/bestsellers/ expands into every department.

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

Which Amazon lists to read for each category above (URLs carry their own type). Movers & Shakers, Most Wished For and Gift Ideas are often empty on Amazon; an empty list is reported in the log and costs nothing.

## `countryCode` (type: `string`):

Amazon site for the categories above. Prices are requested in the site's own currency.

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

Language of titles and category names. English uses Amazon's own /-/en/ pages; sites without an English version stay in their language.

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

Top N ranks per list (Amazon publishes 100: ranks 1-50 on page 1 and 51-100 on page 2). 30 or less needs one request per list.

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

Hard stop for the whole run. You pay per row delivered, so this is also your cost cap.

## `depth` (type: `integer`):

0 = only the categories you gave. 1 = also every direct subcategory (e.g. Electronics -> Headphones, Cell Phones, ...). 2 = their subcategories too, and so on.

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

Upper bound on lists read in one run (each category x list type x subcategory is one list). Protects deep crawls from running away.

## `minRating` (type: `number`):

Keep only products rated at least this many stars, e.g. 4.5.

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

Keep only products at or below this price (site currency). Rows without a price are dropped when this is set.

## `minReviews` (type: `integer`):

Keep only products with at least this many ratings.

## `scrapeProductDetails` (type: `boolean`):

Also open each product page: brand, feature bullets, availability, seller, all images, breadcrumbs, best-sellers ranks, bought-in-past-month, model, dimensions, weight, description. One extra request per row; same price per row.

## `detailConcurrency` (type: `integer`):

Only used with product details.

## `monitorMode` (type: `boolean`):

Remember each list's ranks between runs and output only products that are new to the list or moved rank (with rankLastRun and rankChange). Unchanged products are not output and not charged. Schedule it daily for a cheap rank tracker. The first run outputs everything.

## `monitorStoreName` (type: `string`):

Named key-value store that holds the last ranks. Use a different name per tracker.

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

Apify datacenter proxy by default (fast and cheap). Each blocked page is retried on a new IP.

## `autoProxyFallback` (type: `boolean`):

If a country keeps blocking the proxy above, switch that country to Apify residential proxy for the rest of the run.

## Actor input object example

```json
{
  "categories": [
    "electronics"
  ],
  "listTypes": [
    "bestsellers"
  ],
  "countryCode": "US",
  "language": "local",
  "maxItemsPerCategory": 100,
  "maxItems": 100,
  "depth": 0,
  "maxCategories": 50,
  "scrapeProductDetails": false,
  "detailConcurrency": 5,
  "monitorMode": false,
  "monitorStoreName": "amazon-bestsellers-monitor",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "autoProxyFallback": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `summary` (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 = {
    "categories": [
        "electronics"
    ],
    "listTypes": [
        "bestsellers"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

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

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

```

## MCP server setup

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