# Amazon Bestsellers Scraper Pro (`red.cars/amazon-bestsellers-scraper-pro`) Actor

Scrape Amazon Best Sellers, New Releases and Movers & Shakers for any category: rank, ASIN, price, star rating, ratings count and 24h rank movement. 21 marketplaces. Filters apply before billing.

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

## Pricing

from $2.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.

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 Bestsellers Scraper Pro

Scrape Amazon's Best Sellers, New Releases and Movers & Shakers for any category on any Amazon marketplace: rank, ASIN, title, current price, star rating, ratings count, image and (for Movers & Shakers) the 24-hour rank movement.

Most Amazon bestsellers tools give you a name, a price and a thumbnail. This one gives you the full product record as Amazon ranks it, including star rating and ratings count on every row, so you can see how crowded a niche is before you enter it.

### Why this over the alternatives

The most-used Amazon bestsellers actor (junglee/amazon-bestsellers, $3.20 per 1,000) exports only name, price, URL and thumbnail. This actor adds the fields buyers actually filter on:

- Star rating and ratings count on every row (spot 4.3-star niches with thin competition)
- Amazon's own best-seller rank per product
- Movers & Shakers support with 24-hour rank movement percentages
- New Releases support
- 21 Amazon marketplaces (amazon.com, co.uk, de, fr, es, it, ca, com.au, co.jp, and more)
- Filters (keyword, price range, min rating, min ratings) applied before billing: filtered-out rows are never charged

### Input

| Field | Type | Description |
| --- | --- | --- |
| `categoryUrls` | list (optional) | Full Amazon list URLs, e.g. `https://www.amazon.com/gp/bestsellers/electronics/172282`. Movers & Shakers and New Releases URLs work too, any marketplace. |
| `categoryPaths` | list (optional) | Category path without the domain, e.g. `electronics/172282` or `books`. |
| `domain` | select | Amazon marketplace. Default `amazon.com`. |
| `listTypes` | list | `BEST_SELLERS`, `NEW_RELEASES`, `MOVERS_AND_SHAKERS`. Default: Best Sellers. |
| `maxItems` | number | Hard cap on saved products for the whole run. Default 100. |
| `maxPagesPerList` | number | Pages of 50. Default 2 (top 100). |
| `keyword` | string | Keep only titles containing this. Filtered rows are free. |
| `minPrice` / `maxPrice` | number | Price window. Filtered rows are free. |
| `minRating` | number | e.g. `4.3`. Filtered rows are free. |
| `minReviews` | number | Minimum ratings count. Filtered rows are free. |

Category paths: every bestsellers URL is `amazon.com/gp/bestsellers/<category-path>`. Copy the path from the URL of any Best Sellers page.

### Output

One row per product per list:

| Field | Example |
| --- | --- |
| `listType` | `BEST_SELLERS` |
| `domain` | `amazon.com` |
| `rank` | `1` (Amazon's own rank; Movers & Shakers rows also carry `rankMovement` like `+37%`) |
| `asin` | `B08JHCVHTY` |
| `title` | `Apple AirPods Pro 3 Wireless Earbuds...` |
| `price` / `currency` | `11.99` / `$` |
| `rating` | `4.4` |
| `ratingsCount` | `280899` |
| `imageUrl` | product image URL |
| `productUrl` | clean `amazon.com/dp/<asin>` link |
| `scrapedAt` | ISO timestamp |

### Pricing

Pay per event: $0.005 per actor start plus $0.0025 per product row ($2.50 per 1,000 rows). Runs on Apify residential proxies; a 100-row run typically costs under $0.01 in platform resources.

### Use cases

- Niche research: pull top-100 bestsellers for a category with ratings and review counts to find gaps (high demand, thin reviews)
- Price and rank tracking: rerun daily and diff `rank` to see what is climbing
- Seller and brand monitoring: filter by keyword to watch your brand or competitor ranks across marketplaces
- Market expansion: same category across amazon.com, amazon.de, amazon.co.jp to compare demand

### FAQ

**Which categories are supported?** Any category with a Best Sellers page: copy its URL or the `gp/bestsellers/...` path. That includes departments (Electronics, Books) and leaf categories (e.g. `electronics/172282` for Headphones).

**Can I get Movers & Shakers rank changes?** Yes: set `listTypes` to `["MOVERS_AND_SHAKERS"]` (or paste a Movers & Shakers URL). Rows carry `rankMovement`, the 24-hour percentage change Amazon publishes.

**Do filtered results cost anything?** No. Filters are applied before rows are saved or charged: only rows that pass your filters are billed.

**How deep can I go?** Each list page carries 50 products and `maxPagesPerList` goes to 5 (top 250). Across multiple list types and category URLs in one run, `maxItems` caps the total.

**Which marketplaces?** amazon.com plus 20 more: UK, DE, FR, ES, IT, CA, AU, JP, MX, BR, IN, NL, SE, PL, AE, SA, TR, SG, EG, BE.

**How is this different from the jungle Amazon crawler?** junglee/Amazon-crawler is a general Amazon crawler; this actor is purpose-built for the three ranked lists with rank, rating and ratings count on every row, movers support, and pre-push filters that never bill filtered rows.

# Actor input Schema

## `categoryUrls` (type: `array`):

Optional. Full Amazon list URLs, e.g. https://www.amazon.com/gp/bestsellers/electronics/172282 or a movers-and-shakers or new-releases URL. Any marketplace.

## `categoryPaths` (type: `array`):

Category path without the domain, e.g. electronics/172282 or books. Combined with the list types and domain below.

## `domain` (type: `string`):

Which Amazon marketplace to scrape.

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

Which Amazon lists to scrape: BEST_SELLERS, NEW_RELEASES, MOVERS_AND_SHAKERS. Movers & Shakers includes the 24-hour rank movement when Amazon serves it.

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

Hard cap on saved (and billed) products for the whole run.

## `maxPagesPerList` (type: `integer`):

Each list page shows 50 items. Default 2 (top 100).

## `keyword` (type: `string`):

Keep only products whose title contains this (case-insensitive). Free when filtered.

## `minPrice` (type: `integer`):

Drop products cheaper than this. Free when filtered.

## `maxPrice` (type: `integer`):

Drop products more expensive than this. Free when filtered.

## `minRating` (type: `string`):

e.g. 4.3. Free when filtered.

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

Drop products with fewer ratings than this. Free when filtered.

## Actor input object example

```json
{
  "categoryPaths": [
    "electronics/172282"
  ],
  "domain": "amazon.com",
  "listTypes": [
    "BEST_SELLERS"
  ],
  "maxItems": 10,
  "maxPagesPerList": 2
}
```

# Actor output Schema

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

Array of bestseller rows: listType, domain, category, rank, asin, title, price, rating, ratingsCount, imageUrl, productUrl, rankMovement (movers & shakers) and scrapedAt.

# 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 = {
    "categoryPaths": [
        "electronics/172282"
    ],
    "domain": "amazon.com",
    "listTypes": [
        "BEST_SELLERS"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("red.cars/amazon-bestsellers-scraper-pro").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 = {
    "categoryPaths": ["electronics/172282"],
    "domain": "amazon.com",
    "listTypes": ["BEST_SELLERS"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("red.cars/amazon-bestsellers-scraper-pro").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 '{
  "categoryPaths": [
    "electronics/172282"
  ],
  "domain": "amazon.com",
  "listTypes": [
    "BEST_SELLERS"
  ],
  "maxItems": 10
}' |
apify call red.cars/amazon-bestsellers-scraper-pro --silent --output-dataset

```

## MCP server setup

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

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/EyGVnSULqKhDMs9YP/builds/90sd0274cGRKYgeeu/openapi.json
