# Amazon Best Sellers API (`whosandrw/amazon-best-sellers-api`) Actor

Top 100 Amazon Best Sellers and New Releases for any category and marketplace (US, UK, DE, ES, MX, BR...): rank, ASIN, title, price, rating, reviews. Subcategory crawl, residential proxy retries.

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

## Pricing

$3.00 / 1,000 products

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 Best Sellers API — Top 100 Products by Category (Any Marketplace)

Get the **Amazon Best Sellers** and **New Releases** lists for any category — the **top 100 products** with rank, ASIN, title, price, rating, number of reviews, link and image — from **any Amazon marketplace**: US, UK, Germany, France, Italy, **Spain, Mexico, Brazil**, Canada, India, Japan and more. Crawl whole category trees, schedule daily snapshots, and export to **Excel / CSV / JSON** or call it as an API.

> 🇪🇸 **¿Hablas español?** [Ver la guía en español ↓](#-qué-vender-en-amazon-lo-más-vendido-por-categoría)

**Why this Actor**

- ✅ **All 100 products per list.** Amazon only renders part of each page and loads the rest with JavaScript; this Actor gets the complete top 100 without a browser, so it's fast and cheap.
- ✅ **Runs don't die on captchas.** Amazon shows captchas to automated traffic. Every captcha or block is retried from a **new residential IP** with fresh cookies.
- ✅ **Any marketplace, any language.** Amazon.com, .co.uk, .de, .fr, .it, .es, .com.mx, .com.br, .ca, .in, .co.jp and more — product titles come in the marketplace's language.
- ✅ **Whole category trees.** Set a subcategory depth and get the best sellers of every subcategory automatically.
- ✅ **Fair pricing:** $3 per 1,000 products, and failed lists are never charged.

### Use cases

- **Product research for Amazon sellers (FBA):** find what sells, spot new trending products early in New Releases, and track rank changes over time.
- **E-commerce & retail intelligence:** monitor categories and competitors across countries.
- **Price monitoring:** daily snapshots of top products' prices and ratings.
- **Affiliate marketing & content:** always-fresh "best sellers" lists for your site.
- **Market research & data science:** category-level demand signals by marketplace.

### How to use it (no code)

1. Click **Try for free**.
2. Paste Best Sellers / New Releases URLs from any Amazon marketplace, **or** choose a marketplace and type category names (e.g. `electronics`, `toys-and-games`, `beauty`).
3. Optionally set **Subcategory depth** (1 = every direct subcategory too).
4. Click **Start**, then download the results as **Excel / CSV / JSON** from **Output**.
5. Optional: **Schedule** it daily to build a rank history.

Example — best sellers and new releases in electronics and toys, Amazon Mexico:

```json
{
  "marketplace": "amazon.com.mx",
  "categories": ["electronics", "toys"],
  "listTypes": ["bestsellers", "new-releases"],
  "maxItemsPerList": 100
}
```

Example — a whole category tree from URLs:

```json
{
  "categoryUrls": [{ "url": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/" }],
  "subcategoryDepth": 1,
  "maxLists": 30
}
```

### Output

One row per product:

```json
{
  "marketplace": "amazon.com",
  "listType": "bestsellers",
  "category": "Best Sellers in Electronics",
  "categoryUrl": "https://www.amazon.com/gp/bestsellers/electronics/",
  "rank": 2,
  "asin": "B0DCH8VDXF",
  "title": "Apple EarPods Headphones with USB-C Plug, Wired Ear Buds with Built-in Remote...",
  "url": "https://www.amazon.com/dp/B0DCH8VDXF",
  "image": "https://images-na.ssl-images-amazon.com/images/I/513OSdW4elL._AC_UL300_SR300,200_.jpg",
  "rating": 4.5,
  "reviewsCount": 18384,
  "price": 19.0,
  "priceText": "$19.00",
  "currency": "$",
  "currencyCode": "USD",
  "scrapedAt": "2026-09-28T22:30:00Z"
}
```

### Use it as an Amazon Best Sellers API

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("whosandrw/amazon-best-sellers-api").call(run_input={
    "marketplace": "amazon.com", "categories": ["electronics"], "maxItemsPerList": 100,
})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(product["rank"], product["title"], product["price"])
```

Works with **Make, Zapier, n8n, Google Sheets** and AI agents through Apify integrations.

### Pricing

**$3 per 1,000 products.** A full list (100 products) costs **$0.30**. Failed lists are never charged. You can set a maximum cost per run in the Apify Console.

### FAQ

**How many products per category?** Amazon's lists have up to 100 products; this Actor returns all of them (some New Releases lists have slightly fewer).

**Why are some prices empty?** Pre-orders and currently unavailable products have no price on Amazon.

**Do I need proxies?** Keep the default **residential proxy**: Amazon shows captchas to datacenter IPs, and residential IPs are what make retries work.

**Is it legal?** The Actor collects publicly visible product listings and no personal data. You are responsible for complying with Amazon's terms and your local regulations when using the data.

***

### 🇪🇸 Qué vender en Amazon: lo más vendido por categoría

Obtén las listas de **Los más vendidos** y **Novedades** de Amazon para cualquier categoría: los **100 productos principales** con posición, ASIN, título, precio, calificación, número de reseñas, enlace e imagen. Funciona en **Amazon México, España, Estados Unidos**, Brasil y cualquier otro país. Descárgalo en **Excel / CSV** o úsalo como API.

**Ideal para vendedores de Amazon (FBA):** descubre qué productos se venden más en cada categoría, detecta productos nuevos en tendencia en *Novedades* antes que la competencia y sigue la evolución de sus posiciones programando el Actor a diario.

#### Por qué este Actor

- ✅ **Los 100 productos completos por lista.** Amazon solo muestra parte de la página y carga el resto con JavaScript; este Actor obtiene el top 100 completo, rápido y barato.
- ✅ **No se detiene por captchas:** reintenta desde una nueva IP residencial.
- ✅ **Cualquier país:** amazon.com.mx, amazon.es, amazon.com y más, con los títulos en el idioma de cada tienda.
- ✅ **Árboles de categorías completos** con la opción *Subcategory depth*.
- ✅ **US$3 por cada 1.000 productos** (una lista completa de 100 cuesta US$0,30). Las listas que fallan no se cobran.

#### Cómo usarlo

1. Haz clic en **Try for free**.
2. Pega URLs de *Los más vendidos* o *Novedades* de cualquier Amazon, **o** elige la tienda (por ejemplo `amazon.com.mx`) y escribe nombres de categorías (`electronics`, `toys`, `beauty`, `kitchen`…).
3. Si quieres todas las subcategorías, pon **Subcategory depth** en 1 o más.
4. Haz clic en **Start** y descarga los resultados en **Excel / CSV** desde **Output**.

Ejemplo: más vendidos y novedades de electrónica y juguetes en Amazon México.

```json
{
  "marketplace": "amazon.com.mx",
  "categories": ["electronics", "toys"],
  "listTypes": ["bestsellers", "new-releases"]
}
```

**¿Soporte en español?** Sí, abre un ticket en la pestaña **Issues** en español o en inglés.

# Actor input Schema

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

Amazon Best Sellers or New Releases URLs from any marketplace, e.g. https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ or https://www.amazon.com.mx/gp/bestsellers/electronics/

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

Amazon store used with the Category names field.

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

Category slugs as they appear in Best Sellers URLs, e.g. electronics, toys-and-games, beauty, kitchen, books, videogames, sporting-goods, pet-supplies.

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

Which Amazon lists to get for the Category names.

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

Amazon lists have up to 100 products (2 pages).

## `subcategoryDepth` (type: `integer`):

0 = only the given categories. 1 = also every direct subcategory, 2 = two levels down, etc.

## `maxLists` (type: `integer`):

Safety limit for subcategory crawling.

## `maxRetries` (type: `integer`):

Each retry uses a fresh proxy session (new IP) and cookies.

## `requestDelaySecs` (type: `number`):

Pause after each list to keep captchas rare.

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

Residential proxies are recommended: Amazon shows captchas to datacenter IPs, and every retry leaves from a new IP.

## Actor input object example

```json
{
  "categoryUrls": [
    {
      "url": "https://www.amazon.com/gp/bestsellers/electronics/"
    }
  ],
  "marketplace": "amazon.com",
  "listTypes": [
    "bestsellers"
  ],
  "maxItemsPerList": 100,
  "subcategoryDepth": 0,
  "maxLists": 50,
  "maxRetries": 6,
  "requestDelaySecs": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Rank, title, price, rating, reviews, ASIN, link and image for every product.

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

Every field, including marketplace, list type, category URL and scrape time.

# 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 = {
    "categoryUrls": [
        {
            "url": "https://www.amazon.com/gp/bestsellers/electronics/"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("whosandrw/amazon-best-sellers-api").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 = {
    "categoryUrls": [{ "url": "https://www.amazon.com/gp/bestsellers/electronics/" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("whosandrw/amazon-best-sellers-api").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 '{
  "categoryUrls": [
    {
      "url": "https://www.amazon.com/gp/bestsellers/electronics/"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call whosandrw/amazon-best-sellers-api --silent --output-dataset

```

## MCP server setup

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

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/0RVCv4UGQFqVQfG1z/builds/jcusyzA3DwF386jcZ/openapi.json
