# Amazon Best Sellers Scraper | 10 Countries, from $0.38/1K (`aurelix/amazon-best-sellers`) Actor

Scrape Amazon Best Sellers and Amazon New Releases at $1.80 per 1,000 products, 69% under the most-used Best Sellers scraper ($5.90), $0.38 on paid plans, with 10 marketplaces including amazon.ca and rank changes since your last run. Top 100 per category, no login: ASIN, price, rating, reviews.

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

## Pricing

from $0.38 / 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.
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

### What is Amazon Best Sellers Scraper?

**Track Amazon's top 100 in any category across 10 marketplaces (rank, ASIN, price) and see what moved since your last run, for $1.80 per 1,000 products, no login.**

For sellers, brands and product researchers. Paid Apify plans pay $0.38 per 1,000 products, and every row carries previous rank, rank change and a new-entry flag. Your first run with the example input costs about $0.091 (50 products in our test run).

[![Amazon Best Sellers Scraper: example output from a real run](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/amazon-best-sellers-card-v2.png)](https://console.apify.com/actors/NETmBbX7fdm72qFIs?addFromActorId=NETmBbX7fdm72qFIs)

[![Amazon Best Sellers Scraper: 75-second demo video](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/amazon-best-sellers-demo-thumb-v1.png)](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/amazon-best-sellers-demo-v1.mp4)

**[▶ Watch the 75-second demo](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/amazon-best-sellers-demo-v1.mp4)**

| | |
|---|---|
| **Search by** | Category slug (e.g. kitchen) or a Best Sellers / New Releases URL |
| **Marketplaces** | 10: .com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .in, .co.jp |
| **Lists** | Best Sellers or New Releases; top 50 or top 100 |
| **Output** | 21 fields per product; JSON, CSV, Excel, API |
| **Automate** | Schedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents |
| **Price** | $1.80 per 1,000 products ($0.38 per 1,000 products on paid Apify plans) |
| **Login needed** | No |

### Why Amazon Best Sellers Scraper users pick this one

- **Rank movement built in.** Previous rank, rank change and new-entry flags versus your last run.
- **All 100 ranks.** Including the ones Amazon loads only as you scroll.
- **10 marketplaces.** amazon.ca, .co.uk, .de, .co.jp and more, with a currency code on every price.
- **Cheapest on paid plans.** $0.38 per 1,000 products, below every Best Sellers rival we checked.
- **Only new entries.** A mode that returns just the products that joined the list.

### Get started in 3 steps

1. Add categories to 'Categories': a slug such as 'kitchen' or 'pet-supplies', or a Best Sellers / New Releases URL copied from any of the 10 supported Amazon sites.
2. Pick the marketplace for slugs (amazon.com by default), and optionally New Releases, the number of pages (50 ranks each), or 'Only new entries'.
3. Click Start, or schedule it daily to track rank moves. Download JSON, CSV or Excel, or send results to Google Sheets, Zapier, Make or n8n.

**[▶ Try it with the example input](https://console.apify.com/actors/NETmBbX7fdm72qFIs?addFromActorId=NETmBbX7fdm72qFIs)**

The form opens with an example input already filled in: that run costs about $0.091 on the free plan.

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

Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result.

| Products | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| 100 | $0.18 | $0.039 |
| 1,000 | $1.80 | $0.38 |
| 10,000 | $18.00 | $3.80 |

Totals include the $0.001 start fee per run, rounded to the cent. Apify's free plan includes $5 of credit a month, enough for about 2,700 products.

Unknown categories and unsupported pages return nothing and cost nothing beyond the start fee.

#### Billing events

| Event | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| `product-result` | $1.80 per 1,000 products | $0.38 per 1,000 products |
| `apify-actor-start` | $0.001 per run | $0.001 per run |

### Amazon Best Sellers Scraper vs alternatives

| | **This Actor** | junglee/amazon-bestsellers | amazon-scraper/amazon-bestsellers-scraper |
|---|---|---|---|
| **Price per 1,000 products, free plan** | $1.80 | $5.90 | $2.00 |
| **Price per 1,000 products, paid plans** | $0.38 | $5.00 | $0.39-$0.59 |
| **Start fee per run** | $0.001 | None | $0.0005 (at 1 GB) |
| **Platform usage billed on top** | No | No | No |
| **Amazon marketplaces** | 10 (incl. .ca) | 6 | 18 (incl. .ca) |
| **Rank change and new entries vs your last run** | ✓ | not stated | not stated |
| **'Only new entries' mode** | ✓ | not stated | not stated |
| **Slack or webhook digest after each run** | ✓ | not stated | not stated |
| **Movers & Shakers, Most Wished For** | ✗ | ✓ | ✓ |

Prices checked regularly on each Actor's Store page.

### Benchmarks: how we compare

| Test | Input | Products returned | Run time |
|---|---|---|---|
| One Best Sellers list, 2 pages | kitchen | 100 (ranks 1-100) | 21 s |
| One Best Sellers list, 2 pages | beauty, electronics, pet-supplies, toys-and-games (one run each) | 100 each | 20-22 s |
| One New Releases list, 2 pages | new-releases/books URL | 100 | 19 s |
| Eight Best Sellers lists, 2 pages each | kitchen, pet-supplies, beauty and 5 more | 800 | 99 s |
| 'Only new entries' rerun of the same list | kitchen | 0 repeats | 19 s |
| Unknown category, eBay URL, Movers & Shakers URL | 3 bad inputs | 0, each named in the run status | 4 s |
| Two marketplaces, 2 pages each (local run) | amazon.de Best Sellers + amazon.co.jp New Releases | 200, prices in EUR and JPY | 23 s |
| Spot check vs product pages | 10 random products | price and review count 10/10, rating 9/10 | - |
| Prefilled first run | kitchen, 1 page | 50 products, $0.091 charged | - |

Cloud rows: Apify runs at 256 MB with the free datacenter proxy, logged out, one run per row, on amazon.com. 14 of 14 lists in those runs returned all 100 ranks with no robot check. The two-marketplace row was a local run without proxy. The spot check compared 10 random list rows with each product's own page.

### What data you get

**Amazon Best Sellers Scraper** turns any Amazon Best Sellers or New Releases list, on 10 Amazon marketplaces (US, UK, Germany, France, Italy, Spain, Canada, Australia, India, Japan), into clean rows: rank, ASIN, title, price with its currency code, rating, review count, image and product link. Give a category slug like 'kitchen' and pick the marketplace, or paste a list URL, and get all 100 ranks, including the ones Amazon loads only when you scroll. Every run compares with your previous run of the same list, so you also get the previous rank, rank change and new entries.

- rank, asin, title, product_url, image_url
- price, price_max, price_text, currency
- rating, reviews_count
- list_type (bestsellers or new-releases), marketplace (e.g. amazon.de), category_name, category_url, page
- previous_rank, rank_change (positive = moved up), new_entry
- source_url, scraped_at in ISO 8601 UTC

| category_name | rank | asin | title | price | rating | reviews_count |
|---|---|---|---|---|---|---|
| Kitchen & Dining | 1 | B0BZYCJK89 | Owala FreeSip Stainless Steel Water Bottle 24 oz Denim | 29.99 | 4.6 | 144526 |
| Kitchen & Dining | 2 | B07YP2VH4B | KitchenAid Classic Multifunction Can Opener and Bottle Op... | 15.99 | 4.6 | 90483 |
| Pet Supplies | 2 | B0H8HDKGKQ | OIRLVCE 24Rolls 360 Dog Poop Bags,Leak Proof for Dog Walk... | 10.99 | 4.6 | 346 |

One full product record, exactly as a real run returned it (long text and lists shortened here). From a real run:

```json
{
  "list_type": "bestsellers",
  "marketplace": "amazon.com",
  "category_name": "Kitchen & Dining",
  "category_url": "https://www.amazon.com/gp/bestsellers/kitchen",
  "rank": 1,
  "asin": "B0BZYCJK89",
  "title": "Owala FreeSip Stainless Steel Water Bottle 24 oz Denim",
  "product_url": "https://www.amazon.com/dp/B0BZYCJK89",
  "image_url": "https://images-na.ssl-images-amazon.com/images/I/61Gvw0-b0eL._AC_UL300_SR300,200_.jpg",
  "price": 29.99,
  "price_max": 29.99,
  "price_text": "$29.99",
  "currency": "USD",
  "rating": 4.6,
  "reviews_count": 144563,
  "page": 1,
  "previous_rank": 1,
  "rank_change": 0,
  "new_entry": false,
  "source_url": "https://www.amazon.com/gp/bestsellers/kitchen",
  "scraped_at": "2026-11-04T11:24:07Z"
}
```

### Use cases

- Amazon sellers and brands tracking their category's top 100 every day
- Product researchers spotting new entries and fast climbers in a niche
- Dropshippers and resellers picking products with proven demand
- Analysts building a daily rank history with prices and review counts

### Use-case recipes

#### Daily movers report for your category

For sellers and brands. Add your category slug, keep a tracking name, and schedule the task daily. Sort the output by rank_change: positive numbers climbed, negative ones fell, and new_entry = true marks products that joined the list. Join on asin to your own catalogue to see where your products sit. Use 2 pages for the full top 100.

```json
{
  "categories": [
    "kitchen"
  ],
  "maxPages": 1,
  "stateKey": "kitchen-daily"
}
```

#### Only the newcomers on New Releases

For product researchers hunting early trends. Set listType to New Releases and turn on onlyNewEntries, then schedule it. The first run returns the whole list; later runs return only products that were not on it last time, with their rank, price and reviews_count, so a newcomer with many reviews stands out. Add a Slack webhook to get the top 10 newcomers after each run.

```json
{
  "categories": [
    "toys-and-games"
  ],
  "listType": "new-releases",
  "onlyNewEntries": true,
  "maxPages": 1
}
```

#### Compare one category across marketplaces

For sellers expanding to Canada or another market. Paste the same category's list URL from two marketplaces in one run. Each row carries marketplace, price and currency; join the two lists on asin to see which best sellers already sell in both markets and which gaps are open.

```json
{
  "categories": [
    "https://www.amazon.com/gp/bestsellers/pet-supplies",
    "https://www.amazon.ca/gp/bestsellers/pet-supplies"
  ],
  "maxPages": 1
}
```

#### Price and rating snapshot of a subcategory

For analysts sizing a niche. Paste a subcategory list URL from the Best Sellers page. Use price (and price_max for products sold in a range), rating and reviews_count to chart the price band and how established the top products are. Then put the top titles, shortened to a search phrase, into Google Trends.

```json
{
  "categories": [
    "https://www.amazon.com/gp/bestsellers/kitchen/289814"
  ],
  "maxPages": 1
}
```

### Input

| Field | Type | What it does | Default |
|---|---|---|---|
| `categories` (Categories) | array | Categories, as the slug from the Best Sellers URL (e.g. 'kitchen', 'pet-supplies', 'beauty'; read from the marketplace chosen below) or... |  |
| `maxPages` (Pages per list) | integer | Each page holds 50 ranks: 1 = top 50, 2 = top 100 (Amazon's maximum). | 2 |
| `amazonDomain` (Amazon marketplace) | string | Which Amazon a bare slug like 'kitchen' is read from. | "com" |
| `listType` (List for slugs) | string | Which list a bare slug like 'kitchen' means: Best Sellers or New Releases. | "bestsellers" |
| `onlyNewEntries` (Only new entries) | boolean | Return only products that were not on the same list at your previous run. | false |
| `proxyConfiguration` (Proxy) | object | Apify Proxy is required; the default datacenter group works for Best Sellers and New Releases. | {"useApifyProxy": true} |

All 9 fields, with examples: see the **Input** tab.

### Switching from junglee/amazon-bestsellers

Already running `junglee/amazon-bestsellers`? Its category URLs paste straight into this Actor, including the /zgbs/ form:

| `junglee/amazon-bestsellers` input | This Actor's input | Notes |
|---|---|---|
| `categoryUrls` | `categories` | Paste the same URLs (e.g. https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/), or give a bare slug like 'electronics' with `amazonDomain` and `listType`. |
| `maxItemsPerStartUrl` | `maxPages` | Ranks come in pages of 50: 1 = top 50, 2 = top 100. Default 2. |
| `depthOfCrawl` | no equivalent | No automatic subcategory crawl. Paste each subcategory's list URL; each one is a separate list in the output. |
| `language` | not needed | Each marketplace is read in its own language, set by the Actor. |
| `detailedInformation` | no equivalent | List fields only: no product-page details. |
| `useCaptchaSolver` | not needed | No CAPTCHA or check page is ever solved or clicked through. On Amazon's 'Continue shopping' check page the Actor drops that proxy session and retries with a fresh one. |
| no equivalent | `onlyNewEntries` / `stateKey` | Return only products that joined the list since your last run; previous_rank and rank_change are filled on every run. |

- Output naming: `rank`, `asin`, `price` (number), `price_text` (as printed), `currency`, `reviews_count`, plus `marketplace`, `list_type` and `category_name` on every row.
- Each list is read once per run even if you paste it twice, and each ASIN appears once per list.
- Movers & Shakers and Most Wished For URLs are refused with a message in the run status; this Actor reads Best Sellers and New Releases only.
- Pricing is per product with a $0.001 start fee and no platform usage on top; an unknown category costs only the start fee.

### Use with AI agents (Apify MCP server, Claude, ChatGPT, n8n AI agent)

Amazon Best Sellers Scraper is a ready-made tool for AI agents. Through the Apify MCP server an agent reads this Actor's input schema, fills in the input from your request, starts the run and reads the products back. You pay the same per-result price as a run started by hand, from your own Apify account.

#### Example prompts

- "Get the top 100 Amazon Best Sellers in kitchen on amazon.com and show me rank, ASIN, title, price and rating in a table"
- "Pull the Amazon.ca and Amazon.com Best Sellers for pet-supplies, top 50 each, and tell me which ASINs appear on both"
- "Show me the top 50 Amazon New Releases in toys-and-games on amazon.de with prices and review counts"

#### Claude (claude.ai and Claude Desktop)

Open **Settings > Connectors**, choose **Add custom connector**, paste `https://mcp.apify.com/?tools=aurelix/amazon-best-sellers` and sign in to Apify when asked. Then ask Claude one of the prompts above.

#### Claude Code, Cursor, VS Code and other MCP clients

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/amazon-best-sellers"
```

Clients configured with JSON take the same URL:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=aurelix/amazon-best-sellers"
    }
  }
}
```

A client without Apify sign-in sends the header `Authorization: Bearer <YOUR_APIFY_TOKEN>`; to run the server locally instead, use `npx -y @apify/actors-mcp-server --actors aurelix/amazon-best-sellers` with `APIFY_TOKEN` set.

#### ChatGPT

Where your ChatGPT plan offers custom connectors (developer mode), add `https://mcp.apify.com/?tools=aurelix/amazon-best-sellers` as a connector, sign in to Apify, and ask for the data in plain words.

#### n8n AI agent

Give an **AI Agent** node an **MCP Client Tool** with the endpoint `https://mcp.apify.com/?tools=aurelix/amazon-best-sellers` and a Bearer credential holding your Apify token. The agent can then call Amazon Best Sellers Scraper whenever a workflow step needs products; for a fixed, non-agent workflow use Apify's n8n node with **Run Actor** instead.

### Use it from AI agents (MCP), the API or no-code

#### Copy this to your AI assistant

```text
Use the Apify Actor aurelix/amazon-best-sellers (Amazon Best Sellers Scraper) through Apify's MCP server or API. Main input: categories (Categories). Example input: {"categories": ["kitchen", "https://www.amazon.com/gp/new-releases/pet-supplies"], "maxPages": 2}. Each result is one product with fields such as list_type, marketplace, category_name, category_url, rank, asin, title, product_url. It costs $1.80 per 1,000 products on Apify's free plan plus a $0.001 start fee per run, and needs no login.
```

MCP server URL for this Actor: `https://mcp.apify.com/?tools=aurelix/amazon-best-sellers` (setup for each client in the section above).

#### API

Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("aurelix/amazon-best-sellers").call(run_input={"categories": ["kitchen", "https://www.amazon.com/gp/new-releases/pet-supplies"], "maxPages": 2})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### No-code: schedule it in 3 clicks

Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.

1. Fill in the input, then click **Save as a new task**.
2. In the task, click **Schedule** and pick daily or weekly (Apify Schedules).
3. Turn on **Only new entries** so each run returns only what is new, and paste a Slack or webhook URL into **Slack webhook URL** / **Webhook URL** to get a digest of the new items (count plus the top 10) after every run.

Prefer n8n or Make? Ask in the **Issues** tab and we will share a ready-made workflow for it.

### FAQ

#### Can I scrape Amazon Best Sellers without login?

Yes. It never logs in, so you need no Amazon account, password or cookies; only a free Apify account to run it.

#### Is there a Amazon Best Sellers API?

You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.

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

About $1.80 for 1,000 products on Apify's free plan and $0.38 on paid plans, start fee included. The free $5 monthly credit covers about 2,700 products.

#### Can I export Amazon Best Sellers data to Excel or Google Sheets?

Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's **Storage** tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.

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

It reads only public data any logged-out visitor can see: Amazon Best Sellers pages. It goes at a polite pace, never logs in and never solves or clicks through CAPTCHAs or check pages (when Amazon shows its 'Continue shopping' check page, the Actor treats it as a block, drops that proxy session and retries on a fresh one). It returns product listing fields only (rank, title, price, rating, review count, links); no review text or reviewer data. To have a record removed, open an issue on this Actor's Issues tab; if Amazon formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. anti-spam and privacy laws; this is not legal advice.

#### Can I scrape Amazon Best Sellers in other countries?

Yes: 10 marketplaces, amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .in and .co.jp, with the currency code on every price.

#### Which Amazon sites are supported?

Ten: amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .in and .co.jp. Pick one in 'Amazon marketplace' for slugs, or paste a list URL from any of them; a run can mix marketplaces. Prices come exactly as Amazon shows them, with the code in 'currency': usually the marketplace's own currency, but amazon.co.uk and .de can show US dollars to Apify's US-based proxy (seen in our cloud tests).

#### Does it cover Movers & Shakers or Most Wished For?

No. Amazon serves those lists empty to logged-out visitors on all 10 marketplaces, so they are rejected rather than returned blank. Schedule a Best Sellers list daily instead: rank_change and new_entry show what moved.

#### How do I find a category slug?

Open the category's Best Sellers page on your Amazon site (e.g. amazon.de/gp/bestsellers); the slug is the part after /bestsellers/, e.g. 'kitchen'. For a subcategory, paste the whole URL.

#### What are rank_change and new_entry?

They compare with your previous run of the same list: rank_change = previous rank minus current rank (positive means it climbed), new_entry = it was not on the list last time. On the first run previous_rank and rank_change are empty and new_entry is false.

#### Why is price empty for some products?

Amazon does not show a price on the list for every product (for example when it is only sold through other offers). We never guess a price.

#### Does it need a proxy?

Apify Proxy is used and the default datacenter group works; nothing extra to buy.

#### What am I charged for an unknown category or an empty run?

Each run pays the $0.001 start fee, and then only for products saved to the dataset. An unknown category, an unsupported URL, or an 'Only new entries' run with nothing new returns 0 products and costs only the start fee; unknown and unsupported entries are named in the run status. If Amazon blocks a list midway, the products already read are kept and charged, and the status starts with 'Partial'.

#### Which URL formats work?

Best Sellers and New Releases list URLs from the 10 supported marketplaces: /gp/bestsellers/..., /gp/new-releases/..., and the /zgbs/ and /zgnr/ forms such as amazon.com/Best-Sellers-Electronics/zgbs/electronics. The www. prefix is optional, and ref= tags and query strings are removed. A bare slug like 'kitchen' is read from the marketplace and list chosen in the input.

#### Can it crawl all subcategories of a category?

No. Each entry in 'Categories' is one list. To cover subcategories, paste each subcategory's Best Sellers URL; every row then carries its own category_name and category_url.

#### How does rank tracking remember the previous run?

It keeps one memory per list URL and tracking name, holding each product's rank from the last run of that list. Every run replaces it, so rank_change always compares with the run just before. A run stopped by your maximum charge limit does not update the memory. Use a different 'Tracking name' to track the same list separately, e.g. per client.

#### Why did a page return fewer than 50 ranks?

Amazon renders the first 30 products of a page and loads ranks 31 to 50 with a second request, which the Actor makes too. If that second request fails, the page keeps what it has and the status says how many pages returned fewer than 50 ranks.

#### What are price, price_max and reviews_count?

price is the number Amazon shows on the list, in the marketplace's own number format, and price_text is the text as printed. For a range such as '$9.99 - $19.99', price is the low end and price_max the high end. reviews_count is the number of ratings shown next to the stars.

#### How fast is it?

In our test runs, one list of 100 ranks took about 20 seconds, and 8 lists (800 products) took 99 seconds. The Actor pauses about 2 seconds between requests.

### What happens on empty or partial runs

- An unknown category returns 0 products; the run still succeeds and the status lists it under 'no ranked products (unknown category?)'.
- Entries that are not a supported Amazon list (another site, Movers & Shakers, Most Wished For) are skipped and listed under 'ignored'.
- If Amazon keeps answering a list's first page with a robot check, that list is skipped and named under 'not read'; the other lists still run.
- If the check appears on page 2, page 1's products are kept and the status starts with 'Partial'.
- Only the $0.001 start fee and the products actually saved are charged.

### Limits (stated honestly)

- 10 Amazon marketplaces (.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .in, .co.jp); Movers & Shakers and Most Wished For are not supported (Amazon serves them empty to logged-out visitors).
- Up to 100 ranks per list, Amazon's own maximum.
- Amazon sometimes repeats a product at two ranks while the list updates; the repeat is dropped, so a list can return 98 or 99 products.
- Some products show no price on the list; price is then empty.
- Lists change through the day; a run is a snapshot of when it ran.
- If Amazon starts answering with robot checks midway, the products already read are kept and the run status says 'Partial'.

### Works great with

- **Then: [Google Trends Scraper](https://apify.com/aurelix/google-trends-scraper)**: put product names (shortened to the search phrase) into its `keywords` input to see whether demand is rising before you stock or list them

### Related Aurelix tools

Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.

#### E-commerce and product data

- **[AliExpress Scraper](https://apify.com/aurelix/aliexpress-product-search)**: AliExpress search results by keyword: price, discount, rating, units sold, ship-from country and sponsored flag.

#### Jobs and hiring data

- **[Greenhouse Jobs Scraper](https://apify.com/aurelix/greenhouse-jobs-scraper)**: Live jobs from a company's Greenhouse, Lever, Ashby or SmartRecruiters board, with salary and Canadian province tags.
- **[LinkedIn Jobs Scraper](https://apify.com/aurelix/linkedin-jobs)**: Public LinkedIn job postings by keyword and country: title, company, location, seniority, job type, salary text, description.

#### Leads and company data

- **[Google Maps Business Scraper](https://apify.com/aurelix/google-maps-scraper)**: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
- **[Recently Funded Companies](https://apify.com/aurelix/recently-funded-companies)**: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.

#### Ad intelligence

- **[Facebook Ad Library Scraper](https://apify.com/aurelix/facebook-ad-library-scraper)**: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.

#### Canada and government data

- **[Canada Building Permits Scraper](https://apify.com/aurelix/canada-building-permits-scraper)**: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, contractor company.

#### AI, content and SEO

- **[Google Trends Scraper](https://apify.com/aurelix/google-trends-scraper)**: Google Trends interest over time, by region and rising queries for any number of keywords, plus trending searches.
- **[Website to Markdown Crawler](https://apify.com/aurelix/website-to-markdown)**: Crawls a site and returns one row of clean main-content Markdown per page, with title, headings and links.

### Recent changes

- **0.1**: Amazon's 'Continue shopping' check page is now treated as a block: the Actor never follows it or a redirect into Amazon's error pages, and retries on a fresh proxy session instead.

The full history is on the **Changelog** tab.

### Tested daily

An automated health check runs this Actor every day on a fixed input and checks that at least 45 products come back with `rank`, `asin`, `title`, `product_url`, `category_name`, `source_url` filled in; a failed check alerts the maintainer straight away.

### Your feedback

Missing a field, found a bug or need another filter? Open an issue on the **Issues** tab; we aim to answer within a day. If this Actor saved you time, a short review helps other people find it.

# Changelog

This Actor's version history is a separate document: https://apify.com/aurelix/amazon-best-sellers/changelog.md

# Actor input Schema

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

Categories, as the slug from the Best Sellers URL (e.g. 'kitchen', 'pet-supplies', 'beauty'; read from the marketplace chosen below) or a full list URL from any of the 10 marketplaces, e.g. 'https://www.amazon.com/gp/bestsellers/kitchen/289814', 'https://www.amazon.de/gp/new-releases/toys' or 'https://www.amazon.co.jp/gp/bestsellers/kitchen'. Subcategory URLs work too.

## `amazonDomain` (type: `string`):

Which Amazon a bare slug like 'kitchen' is read from. Full URLs keep their own marketplace. Prices come in that marketplace's currency.

## `listType` (type: `string`):

Which list a bare slug like 'kitchen' means: Best Sellers or New Releases. Full URLs keep their own list.

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

Each page holds 50 ranks: 1 = top 50, 2 = top 100 (Amazon's maximum).

## `onlyNewEntries` (type: `boolean`):

Return only products that were not on the same list at your previous run. The first run returns everything. Rank changes are filled in on every run either way.

## `stateKey` (type: `string`):

Name for the 'previous run' memory used for rank changes and new entries, e.g. 'kitchen-daily'. Leave empty to share one memory per list across all your runs.

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

Apify Proxy is required; the default datacenter group works for Best Sellers and New Releases.

## `slackWebhookUrl` (type: `string`):

After each run, post a short digest to Slack: how many results were saved (new ones only when 'Only new entries' is on) and the top 10 with links, e.g. https://hooks.slack.com/services/T000/B000/XXXX. Nothing is posted when the run saved nothing. Leave empty to skip.

## `webhookUrl` (type: `string`):

After each run, POST the same digest as JSON (actor, newOnly, count, items = top 10 results, runUrl, text) to any URL, e.g. a Zapier, Make or n8n webhook. Nothing is sent when the run saved nothing. Leave empty to skip.

## Actor input object example

```json
{
  "categories": [
    "kitchen"
  ],
  "amazonDomain": "com",
  "listType": "bestsellers",
  "maxPages": 1,
  "onlyNewEntries": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `products` (type: `string`):

One item per ranked product per list, in rank order.

# 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": [
        "kitchen"
    ],
    "maxPages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("aurelix/amazon-best-sellers").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": ["kitchen"],
    "maxPages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("aurelix/amazon-best-sellers").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": [
    "kitchen"
  ],
  "maxPages": 1
}' |
apify call aurelix/amazon-best-sellers --silent --output-dataset

```

## MCP server setup

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

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/NETmBbX7fdm72qFIs/builds/xkKLbyF52846l4f5R/openapi.json
