# Amazon Best Sellers Scraper — Ranked Top 100, 4 Charts (`memo23/amazon-bestsellers-scraper`) Actor

Scrape Amazon's ranked charts into clean rows — Best Sellers, New Releases, Movers & Shakers and Most Wished For — with rank, ASIN, title, numeric price, rating, review count and image. Any category, 18 marketplaces, full top-100 per chart. Pure HTTP, no browser.

- **URL**: https://apify.com/memo23/amazon-bestsellers-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce, AI, Agents
- **Stats:** 14 total users, 13 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.70 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Amazon Best Sellers Scraper — Ranked Top 100, 4 Charts

Scrape Amazon's ranked charts into clean, analysis-ready rows — **rank, ASIN, title, numeric price, rating, review count and image** — for any category across 18 marketplaces. Pure HTTP, no browser, no cookies to supply.

Four charts, one actor:

| Chart | What it shows |
|---|---|
| **Best Sellers** | The current top sellers in a category |
| **New Releases** | Newly launched products already charting |
| **Movers & Shakers** | Biggest 24-hour sales-rank gains |
| **Most Wished For** | What shoppers are adding to wish lists |

### Why use it

- **The full top-100, not the first screen.** Amazon server-renders only ~30 of the 50 rows per chart page. Most scrapers parse the DOM and quietly return 60 of 100 products. This one reads Amazon's own ranked payload, so you get **all 100 ranks** every time.
- **Numeric prices**, not `"$1,234.56"` strings — with both decimal conventions handled (`1.234,56 €` and `1,234.56`).
- **18 marketplaces**, country-correct: each is fetched through an exit IP in that country, so you get local prices and local rankings rather than a US view of a German chart.
- **Tells you why a run is empty.** A wrong category slug, a dead node, or an Amazon block each produce a distinct, readable reason instead of a silent zero.

### Input

```json
{
  "categories": ["electronics", "kitchen"],
  "charts": ["bestsellers", "movers-and-shakers"],
  "marketplaces": ["com", "de"],
  "maxItems": 400
}
```

Or paste chart URLs directly:

```json
{
  "startUrls": [
    "https://www.amazon.com/gp/bestsellers/electronics/",
    "https://www.amazon.de/gp/movers-and-shakers/computers/"
  ]
}
```

| Field | Type | Default | Notes |
|---|---|---|---|
| `categories` | array | `["electronics"]` | Category slugs — see the per-marketplace table below. At least one is required: the chart root is Amazon's category *picker*, not a chart, so it holds no ranked items. |
| `charts` | array | `["bestsellers"]` | Any of the four charts above. |
| `marketplaces` | array | `["com"]` | TLDs: `com`, `co.uk`, `de`, `fr`, `it`, `es`, `ca`, `com.au`, `co.jp`, `in`, `nl`, `se`, `pl`, `com.be`, `ae`, `com.mx`, `com.tr`, `sg`. |
| `startUrls` | array | `[]` | Full chart URLs — `/gp/bestsellers/`, `/zgbs/`, `/gp/new-releases/`, `/gp/movers-and-shakers/`, `/gp/most-wished-for/`. |
| `maxItems` | integer | `200` | Hard cap across the run. You are charged per row. |
| `maxItemsPerChart` | integer | `100` | Set `50` for the first page only. |
| `fetchMissingDetails` | boolean | `false` | Fetch product pages to fill title/price on un-hydrated rows. |
| `skipIncompleteRows` | boolean | `false` | Drop rank-only rows instead of returning them. |

Categories × charts × marketplaces are crossed, so 2 categories × 2 charts × 2 marketplaces = 8 charts.

### Output

```json
{
  "rank": 1,
  "asin": "B08JHCVHTY",
  "title": "Blink Plus Plan with monthly auto-renewal",
  "price": 11.99,
  "priceText": "$11.99",
  "currency": "$",
  "ratingStars": 4.4,
  "ratingCount": 278844,
  "imageUrl": "https://images-na.ssl-images-amazon.com/images/I/31YHGbJsldL._AC_UL300_.png",
  "productUrl": "https://www.amazon.com/dp/B08JHCVHTY",
  "detailLevel": "full",
  "chart": "bestsellers",
  "chartTitle": "Best Sellers",
  "category": "electronics",
  "marketplace": "amazon.com",
  "sourceUrl": "https://www.amazon.com/gp/bestsellers/electronics/",
  "scrapedAt": "2026-08-05T08:03:11.402Z"
}
```

#### About `detailLevel`

Amazon hydrates only part of each chart page server-side. Every row always carries **rank, ASIN and product URL**; `detailLevel` tells you whether the rest is filled:

- `"full"` — title, price, rating and image are present (~60 of 100 rows per chart)
- `"rank-only"` — Amazon had not rendered this row; rank and ASIN are still exact

Two ways to get 100 complete rows if you need them:

- `fetchMissingDetails: true` — fetches each missing product page (slower, more requests)
- `skipIncompleteRows: true` — returns only the complete rows

This is deliberate: dropping the un-hydrated rows silently would misreport the chart, since ranks 31–50 of every page would vanish.

### Category slugs per marketplace

Chart category slugs are **not** shared across marketplaces, and a slug that
does not exist on a marketplace returns an *empty chart*, not an error. This
table is harvested from Amazon's own chart navigation, so it is the real list.

> **The one that catches everyone:** `electronics` works on 17 of 18
> marketplaces — **amazon.de is the exception** and uses `computers` instead.

#### Works on all 18 marketplaces

`automotive` · `beauty` · `books` · `gift-cards` · `videogames`

#### Works nearly everywhere (exceptions listed)

| Slug | Markets | Not available on |
|---|---|---|
| `electronics` | 17/18 | `de` |
| `grocery` | 17/18 | `co.jp` |
| `musical-instruments` | 17/18 | `ae` |
| `pet-supplies` | 17/18 | `ae` |
| `kitchen` | 16/18 | `com.be`, `nl` |
| `music` | 16/18 | `ae`, `com.tr` |
| `software` | 16/18 | `ae`, `com.tr` |
| `fashion` | 15/18 | `com.mx`, `com.tr`, `in` |
| `industrial` | 15/18 | `ae`, `com.tr`, `sg` |
| `toys` | 15/18 | `co.uk`, `com`, `com.be` |
| `amazon-devices` | 13/18 | `com.tr`, `in`, `pl`, `se`, `sg` |
| `amazon-renewed` | 13/18 | `ae`, `com.be`, `com.tr`, `pl`, `sg` |
| `baby` | 13/18 | `com`, `com.au`, `com.be`, `com.tr`, `nl` |
| `digital-text` | 12/18 | `ae`, `com.be`, `com.tr`, `pl`, `se`, `sg` |
| `dvd` | 12/18 | `ae`, `com`, `com.au`, `com.be`, `com.tr`, `de` |
| `hpc` | 12/18 | `ae`, `co.uk`, `com.au`, `de`, `pl`, `se` |
| `sports` | 12/18 | `ae`, `com`, `com.au`, `com.be`, `com.tr`, `sg` |
| `computers` | 10/18 | `ca`, `com`, `com.be`, `com.mx`, `it`, `nl`, `pl`, `se` |
| `mobile-apps` | 10/18 | `ae`, `com.be`, `com.mx`, `com.tr`, `nl`, `pl`, `se`, `sg` |

#### Full list per marketplace

**amazon.com (US)** — 40 departments\
`amazon-devices` · `amazon-renewed` · `appliances` · `arts-crafts` · `audible` · `automotive` · `baby-products` · `beauty` · `books` · `boost` · `coins` · `digital-educational-resources` · `digital-text` · `dmusic` · `electronics` · `entertainment-collectibles` · `fashion` · `gift-cards` · `grocery` · `handmade` · `hi` · `home-garden` · `hpc` · `industrial` · `kitchen` · `lawn-garden` · `mobile-apps` · `movies-tv` · `music` · `musical-instruments` · `office-products` · `pc` · `pet-supplies` · `photo` · `software` · `sporting-goods` · `sports-collectibles` · `toys-and-games` · `videogames` · `wireless`

**amazon.co.uk** — 33 departments\
`amazon-devices` · `amazon-renewed` · `appliances` · `automotive` · `baby` · `beauty` · `books` · `boost` · `computers` · `digital-text` · `diy` · `dmusic` · `drugstore` · `dvd` · `electronics` · `fashion` · `gift-cards` · `grocery` · `handmade` · `industrial` · `instant-video` · `kids` · `kitchen` · `lighting` · `mobile-apps` · `music` · `musical-instruments` · `officeproduct` · `outdoors` · `pet-supplies` · `software` · `sports` · `videogames`

**amazon.de** — 34 departments\
`amazon-devices` · `amazon-renewed` · `appliances` · `automotive` · `baby` · `beauty` · `books` · `boost` · `ce-de` · `computers` · `digital-text` · `diy` · `dmusic` · `drugstore` · `dvd-de` · `fashion` · `garden` · `gift-cards` · `grocery` · `handmade` · `industrial` · `instant-video` · `kitchen` · `lighting` · `mobile-apps` · `music` · `musical-instruments` · `officeproduct` · `pet-supplies` · `photo` · `software` · `sports` · `toys` · `videogames`

**amazon.fr** — 32 departments\
`amazon-devices` · `amazon-renewed` · `appliances` · `automotive` · `baby` · `beauty` · `books` · `boost` · `computers` · `digital-text` · `dmusic` · `dvd` · `electronics` · `fashion` · `gift-cards` · `grocery` · `handmade` · `hi` · `hpc` · `industrial` · `kitchen` · `lawn-garden` · `lighting` · `mobile-apps` · `music` · `musical-instruments` · `officeproduct` · `pet-supplies` · `software` · `sports` · `toys` · `videogames`

**amazon.it** — 33 departments\
`amazon-devices` · `amazon-renewed` · `appliances` · `audible` · `automotive` · `baby` · `beauty` · `books` · `boost` · `digital-text` · `dmusic` · `dvd` · `electronics` · `fashion` · `garden` · `gift-cards` · `grocery` · `handmade` · `hpc` · `industrial` · `kitchen` · `lighting` · `mobile-apps` · `music` · `musical-instruments` · `office` · `pc` · `pet-supplies` · `software` · `sports` · `tools` · `toys` · `videogames`

**amazon.es** — 33 departments\
`amazon-devices` · `amazon-renewed` · `appliances` · `automotive` · `baby` · `beauty` · `books` · `boost` · `computers` · `digital-text` · `dmusic` · `dvd` · `electronics` · `fashion` · `gift-cards` · `grocery` · `handmade` · `hpc` · `industrial` · `kitchen` · `lawn-garden` · `lighting` · `luggage` · `mobile-apps` · `music` · `musical-instruments` · `office` · `pet-supplies` · `software` · `sports` · `tools` · `toys` · `videogames`

**amazon.ca** — 28 departments\
`amazon-devices` · `amazon-renewed` · `automotive` · `baby` · `beauty` · `books` · `digital-text` · `dvd` · `electronics` · `fashion` · `gift-cards` · `grocery` · `handmade` · `hi` · `hpc` · `industrial` · `kitchen` · `lawn-garden` · `luggage` · `mobile-apps` · `music` · `musical-instruments` · `office` · `pet-supplies` · `software` · `sports` · `toys` · `videogames`

**amazon.com.au** — 31 departments\
`amazon-devices` · `amazon-renewed` · `audible` · `automotive` · `baby-products` · `beauty` · `books` · `boost` · `computers` · `digital-text` · `electronics` · `fashion` · `garden` · `gift-cards` · `grocery` · `health` · `home` · `home-improvement` · `industrial` · `kitchen` · `lighting` · `mobile-apps` · `movies-and-tv` · `music` · `musical-instruments` · `office-products` · `pet-supplies` · `software` · `sporting-goods` · `toys` · `videogames`

**amazon.co.jp** — 31 departments\
`amazon-devices` · `amazon-renewed` · `appliances` · `automotive` · `baby` · `beauty` · `books` · `computers` · `digital-text` · `diy` · `dmusic` · `dvd` · `electronics` · `english-books` · `fashion` · `food-beverage` · `gift-cards` · `hobby` · `hpc` · `industrial` · `instant-video` · `kitchen` · `mobile-apps` · `music` · `musical-instruments` · `office-products` · `pet-supplies` · `software` · `sports` · `toys` · `videogames`

**amazon.in** — 31 departments\
`amazon-renewed` · `apparel` · `automotive` · `baby` · `beauty` · `books` · `boost` · `computers` · `digital-text` · `dvd` · `electronics` · `garden` · `gift-cards` · `grocery` · `home-improvement` · `hpc` · `industrial` · `jewelry` · `kitchen` · `luggage` · `mobile-apps` · `music` · `musical-instruments` · `office` · `pet-supplies` · `shoes` · `software` · `sports` · `toys` · `videogames` · `watches`

**amazon.nl** — 26 departments\
`amazon-devices` · `amazon-renewed` · `arts-crafts` · `automotive` · `baby-products` · `beauty` · `books` · `digital-text` · `dvd` · `electronics` · `fashion` · `gift-cards` · `grocery` · `hi` · `home` · `hpc` · `industrial` · `lawn-and-garden` · `music` · `musical-instruments` · `office-products` · `pet-supplies` · `software` · `sports` · `toys` · `videogames`

**amazon.se** — 23 departments\
`amazon-renewed` · `automotive` · `baby` · `beauty` · `books` · `dvd` · `electronics` · `fashion` · `garden` · `gift-cards` · `grocery` · `health` · `home-improvement` · `industrial` · `kitchen` · `music` · `musical-instruments` · `office` · `pet-supplies` · `software` · `sports` · `toys` · `videogames`

**amazon.pl** — 22 departments\
`automotive` · `baby` · `beauty` · `books` · `dvd` · `electronics` · `fashion` · `garden` · `gift-cards` · `grocery` · `health` · `home-improvement` · `industrial` · `kitchen` · `music` · `musical-instruments` · `office` · `pet-supplies` · `software` · `sports` · `toys` · `videogames`

**amazon.com.be** — 24 departments\
`amazon-devices` · `arts-crafts` · `automotive` · `baby-products` · `beauty` · `books` · `electronics` · `fashion` · `gift-cards` · `grocery` · `home` · `home-improvement` · `hpc` · `industrial` · `lawn-garden` · `movies-tv` · `music` · `musical-instruments` · `office-products` · `pet-supplies` · `software` · `sporting-goods` · `toys-and-games` · `videogames`

**amazon.ae** — 21 departments\
`amazon-devices` · `appliances` · `automotive` · `baby` · `beauty` · `books` · `computers` · `electronics` · `fashion` · `gift-cards` · `grocery` · `health` · `home` · `home-improvement` · `kitchen` · `mobile-phones` · `office-products` · `pet-products` · `sports-goods` · `toys` · `videogames`

**amazon.com.mx** — 25 departments\
`amazon-devices` · `amazon-renewed` · `automotive` · `baby` · `beauty` · `books` · `digital-text` · `dvd` · `electronics` · `gift-cards` · `grocery` · `handmade` · `hpc` · `industrial` · `kitchen` · `music` · `musical-instruments` · `officeproduct` · `pet-supplies` · `shoes` · `software` · `sports` · `tools` · `toys` · `videogames`

**amazon.com.tr** — 20 departments\
`apparel` · `automotive` · `baby-products` · `beauty` · `books` · `computers` · `electronics` · `garden` · `gift-cards` · `grocery` · `home` · `home-improvement` · `hpc` · `kitchen` · `musical-instruments` · `office-products` · `pet-supplies` · `sporting-goods` · `toys` · `videogames`

**amazon.sg** — 25 departments\
`automotive` · `baby` · `beauty` · `biss` · `books` · `computers` · `diy` · `dvd` · `electronics` · `fashion` · `gift-cards` · `grocery` · `home` · `hpc` · `kitchen` · `lawn-and-garden` · `luxury-beauty` · `music` · `musical-instruments` · `office-products` · `pet-supplies` · `software` · `sporting-goods` · `toys` · `videogames`

Sub-categories exist too: open any department chart on Amazon and copy the
slug out of the address bar. Anything after the chart segment works, so
`electronics/172623` (Portable Audio & Video) is a valid category value.

### Use cases

- **Product research** — find what is selling right now in a niche before sourcing it
- **Trend detection** — Movers & Shakers surfaces demand spikes within 24 hours
- **Competitor tracking** — schedule daily and diff rank changes for your ASINs
- **Launch monitoring** — New Releases shows which fresh products are gaining traction
- **Cross-market arbitrage** — compare the same category across `com`, `de` and `co.uk`

### How it works

1. Builds chart URLs from your categories × charts × marketplaces (or takes your URLs as-is).
2. Fetches each chart page over residential IPs pinned to the marketplace's country, with browser-shaped headers, cookie-jar warm-up and Akamai/AWS-WAF challenge solving.
3. Reads Amazon's embedded ranked payload for the authoritative rank list, then merges in the rendered grid for title/price/rating/image.
4. Pushes one row per ranked product.

Charts cost only 1–2 requests each, so a run is fast and cheap: a full 100-product chart is **two page fetches**.

### FAQ

**Why do some rows have no title or price?**
Amazon only server-renders ~30 of the 50 rows per page. See `detailLevel` above — use `fetchMissingDetails` or `skipIncompleteRows` if you need all rows complete.

**Which category slugs work?**
See the per-marketplace table above — it is harvested from Amazon's own chart navigation, not guessed. Only five slugs work on all 18 marketplaces (`automotive`, `beauty`, `books`, `gift-cards`, `videogames`), and `electronics` works everywhere **except amazon.de**, which uses `computers`. A slug that does not exist on a marketplace returns an empty chart, and the run tells you so explicitly instead of failing silently.

**Do I need proxies or Amazon cookies?**
No. Residential proxying is built in and country-matched per marketplace.

**Can I get more than 100 products per category?**
Amazon's charts stop at 100. To go wider, scrape sub-categories — each has its own top-100.

### Support

Found a bug or need a field that isn't here? Open an issue on the actor's Issues tab.

### ⚠️ Disclaimer

This actor collects only publicly available information from Amazon's public chart pages. It does not log in, bypass authentication, or access personal data. You are responsible for how you use the data, including compliance with Amazon's terms and any applicable laws.

### SEO Keywords

amazon best sellers scraper, amazon bestseller api, amazon top 100 products, amazon movers and shakers scraper, amazon new releases scraper, amazon most wished for, amazon sales rank scraper, amazon product research tool, amazon category bestsellers, amazon bsr scraper, amazon trending products, amazon niche research, amazon product data extraction

# Actor input Schema

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

Amazon category node slugs, e.g. "electronics", "books", "kitchen". At least one is required — the chart root is Amazon's category picker, not a chart, so it returns no items. Slugs differ per marketplace: "electronics" works on 17 of 18 marketplaces but NOT amazon.de, which uses "computers". Only automotive, beauty, books, gift-cards and videogames work on all 18. See the README for the full per-marketplace table. Sub-categories work too (e.g. "electronics/172623"). Each category is crossed with every selected chart and marketplace.

## `charts` (type: `array`):

Which ranked charts to pull. Amazon publishes four per category.

## `marketplaces` (type: `array`):

Amazon marketplace TLDs to scrape.

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

Paste full chart URLs instead of picking categories — e.g. https://www.amazon.com/gp/bestsellers/electronics/ or https://www.amazon.de/gp/movers-and-shakers/computers/. Works with /gp/bestsellers/, /zgbs/, /gp/new-releases/, /gp/movers-and-shakers/ and /gp/most-wished-for/.

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

Hard cap on rows across the whole run. You are charged per row returned.

## `maxItemsPerChart` (type: `integer`):

Amazon charts hold 100 ranked products (2 pages of 50). Set 50 to take only the first page.

## `fetchMissingDetails` (type: `boolean`):

Amazon server-renders only ~30 of the 50 rows per chart page; the rest arrive with rank + ASIN but no title/price. Turn this on to fetch each of those product pages and fill the missing fields. Slower and uses more requests.

## `skipIncompleteRows` (type: `boolean`):

Drop the un-hydrated rows entirely instead of returning them with rank + ASIN only. Gives ~60 complete rows per chart instead of 100 mixed ones.

## `concurrency` (type: `integer`):

Parallel page fetches. Lower it if you hit Amazon throttling.

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

Leave empty to use the actor's built-in residential proxy, which is what reliably returns full Amazon pages. Only set this to override with your own Apify proxy.

## Actor input object example

```json
{
  "categories": [
    "electronics"
  ],
  "charts": [
    "bestsellers"
  ],
  "marketplaces": [
    "com"
  ],
  "startUrls": [],
  "maxItems": 200,
  "maxItemsPerChart": 100,
  "fetchMissingDetails": false,
  "skipIncompleteRows": false,
  "concurrency": 6
}
```

# 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"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/amazon-bestsellers-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "categories": ["electronics"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/amazon-bestsellers-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "categories": [
    "electronics"
  ]
}' |
apify call memo23/amazon-bestsellers-scraper --silent --output-dataset

```

## MCP server setup

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

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8fPmhwTnFeQvhgleZ/builds/Ho8njJh3G66yhCTnY/openapi.json
