Amazon Bestsellers Scraper avatar

Amazon Bestsellers Scraper

Pricing

from $0.23 / 1,000 item extracteds

Go to Apify Store
Amazon Bestsellers Scraper

Amazon Bestsellers Scraper

Extract ranked Amazon Best Sellers, New Releases, Most Wished, and Most Gifted product lists.

Pricing

from $0.23 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Extract ranked product rows from public Amazon Best Sellers, New Releases, Most Wished For, and Most Gifted pages. Movers & Shakers URLs are reported as unsupported because Amazon no longer exposes public product-card markup on that route to anonymous HTTP clients. Export ASINs, ranks, titles, category provenance, prices, ratings, review counts, and product URLs to CSV, JSON, Excel, API, or MCP workflows.

At a glance

  • Primary job: Monitor ranked Amazon category lists without building your own parser.
  • Input: Public Amazon list/category URLs such as https://www.amazon.com/Best-Sellers/zgbs.
  • Output: One row per ranked product plus explicit diagnostic rows for blocked, invalid, or empty inputs.
  • Best for: Ecommerce research, rank monitoring, product discovery, merchandising checks, and BI enrichment.

Ready-to-run examples

Open a public example to inspect its input, run it, or reuse it as a task:

  • Small smoke test: startUrls: [{ "url": "https://www.amazon.com/Best-Sellers/zgbs" }], maxItems: 10.
  • Category monitoring: Use a specific category URL such as Books or Electronics and schedule daily runs.
  • Launch tracking: Use a New Releases URL and compare ASIN/rank movement between dataset exports.

What data can you extract?

FieldDescription
statusOK for product rows or ERROR for diagnostic rows.
listTypeBest Sellers, New Releases, Most Wished For, Most Gifted, or movers-and-shakers on unsupported diagnostic rows.
marketplaceAmazon marketplace hostname such as www.amazon.com.
categoryCategory/list title visible on the page.
categoryUrlCategory/list URL used for the row.
categoryPathVisible breadcrumb/subcategory path when supplied by Amazon.
positionRank within the category/list page.
asinAmazon product ASIN.
titleProduct title from the list card.
productUrlPublic Amazon product URL.
imageUrlProduct image URL.
priceParsed displayed price when visible.
priceTextRaw displayed price text.
currencyCurrency code derived from displayed price or marketplace.
ratingStar rating when visible.
reviewCountReview count when visible.
numberOfOffersOffer count when visible.
availabilityAvailability/status text when visible.
inputUrlOriginal user-provided URL.
urlProduct URL for product rows or source URL for diagnostic rows.
scrapedAtISO timestamp when the row was saved.
errorCodeDiagnostic code for error rows.
errorShort error label.
errorDescriptionHuman-readable diagnostic description.

Input configuration

SettingJSON keyUse it forExample
Start URLsstartUrlsPublic Amazon Best Sellers, New Releases, Most Wished For, or Most Gifted category URLs. Movers & Shakers URLs return an UNSUPPORTED_LIST_TYPE diagnostic row.https://www.amazon.com/Best-Sellers/zgbs
Maximum product rowsmaxItemsCap saved product rows and control spend.30
Subcategory depthsubcategoryDepthReserved for bounded category discovery.0
Include next pageincludeNextPageReserved until unique Amazon continuation is proven.false
Proxy country codeproxyCountryCodeMatch marketplace-sensitive price/availability context.US

Example input

{
"startUrls": [{ "url": "https://www.amazon.com/Best-Sellers/zgbs" }],
"maxItems": 10,
"subcategoryDepth": 0,
"includeNextPage": false,
"proxyCountryCode": "US"
}

Example output

{
"status": "OK",
"listType": "best-sellers",
"marketplace": "www.amazon.com",
"category": "Amazon Best Sellers",
"categoryUrl": "https://www.amazon.com/Best-Sellers/zgbs",
"categoryPath": ["Any Department"],
"position": 1,
"asin": "B0EXAMPLE1",
"title": "Example ranked product",
"productUrl": "https://www.amazon.com/dp/B0EXAMPLE1",
"imageUrl": "https://m.media-amazon.com/images/I/example.jpg",
"price": 19.99,
"priceText": "$19.99",
"currency": "USD",
"rating": 4.7,
"reviewCount": 1234,
"numberOfOffers": null,
"availability": null,
"inputUrl": "https://www.amazon.com/Best-Sellers/zgbs",
"url": "https://www.amazon.com/dp/B0EXAMPLE1",
"scrapedAt": "2026-08-02T16:45:00.000Z",
"errorCode": null,
"error": null,
"errorDescription": null
}

Who is it for

  • Ecommerce sellers checking which products lead public Amazon category rankings.
  • Retail analysts and brand teams monitoring rank, price, rating, and review-count movement.
  • Affiliate publishers finding popular products for buying guides and category pages.
  • Automation teams feeding bestseller snapshots into dashboards, alerts, or AI workflows.

Pricing

This Actor uses pay-per-event billing. A small Run started event is charged once per run, and the primary Item extracted event is charged only for each Amazon product row saved to the dataset. Diagnostic error rows for invalid URLs or blocked pages are preserved for troubleshooting and are not product rows.

For the current rates and volume tiers, open the live Apify Pricing tab.

Tips and limits

  • Start with maxItems: 10-30 to confirm the marketplace and category return public rows.
  • Amazon page availability, prices, currency, and visible card fields can vary by marketplace and region.
  • Diagnostic rows are saved for invalid URLs, Robot Check/Sorry responses, request failures, and pages where no product cards are detected.
  • Product detail pages, seller profiles, reviews, carts, orders, and account-specific recommendations are outside this Actor's scope.

API usage

Node.js:

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/amazon-bestsellers-scraper").call({
startUrls: [{ url: "https://www.amazon.com/Best-Sellers/zgbs" }],
maxItems: 10
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/amazon-bestsellers-scraper").call(run_input={
"startUrls": [{ "url": "https://www.amazon.com/Best-Sellers/zgbs" }],
"maxItems": 10,
})
print(run["defaultDatasetId"])

cURL:

curl "https://api.apify.com/v2/acts/fetch_cat~amazon-bestsellers-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"startUrls":[{"url":"https://www.amazon.com/Best-Sellers/zgbs"}],"maxItems":10}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server.

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/amazon-bestsellers-scraper"

Example MCP server configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}

Example prompts:

  • "Run fetch_cat/amazon-bestsellers-scraper for the Amazon US Best Sellers root with maxItems 20 and summarize the top categories."
  • "Compare today's top 10 product ASINs from this bestseller dataset with yesterday's dataset and highlight rank changes."

FAQ

Can this Actor scrape Amazon product detail pages?
No. It focuses on ranked public list pages. Use a product-detail Actor for deeper product attributes.

Why are price, rating, or review fields sometimes empty?
Amazon does not show every commerce field on every list card. The Actor preserves nulls instead of inventing values.

Does it return diagnostic rows?
Yes. Invalid URLs, Robot Check/Sorry pages, failed requests, and parse-empty pages are saved with status: "ERROR" and an error code.

Can I schedule rank monitoring?
Yes. Schedule the same category URL daily or hourly and compare ASIN + position changes across datasets.

More Amazon scrapers

Support

Questions, bugs, or feature requests? Open an issue on the Actor page in Apify Console and include your run ID and input.