Amazon Best Sellers Scraper & Rank Tracker avatar

Amazon Best Sellers Scraper & Rank Tracker

Pricing

from $1.40 / 1,000 result items

Go to Apify Store
Amazon Best Sellers Scraper & Rank Tracker

Amazon Best Sellers Scraper & Rank Tracker

Scrapes Amazon Best Sellers, New Releases, Most Wished For and Most Gifted grids per category URL — structured prices, change tracking, errors never charged.

Pricing

from $1.40 / 1,000 result items

Rating

5.0

(1)

Developer

Torchtechnology LTD

Torchtechnology LTD

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

What does this Actor do?

Amazon Best Sellers Scraper extracts the ranked product charts of any Amazon category — Best Sellers, Movers & Shakers, New Releases, Most Wished For, and Most Gifted — across eighteen verified marketplaces: amazon.de, .com, .co.uk, .fr, .it, .es, .ca, .com.au, .co.jp, .in, .nl, .se, .pl, .com.be, .com.mx, .com.br, .ae, and .sa. For every ranked product you get position, ASIN, name, price as a structured number with the marketplace's own currency, star rating, review count, thumbnail, and product URL — and for Movers & Shakers the rank change in percent Amazon reports. Optional change tracking compares every category against its previous run and reports climbers, new entries, and drop-outs — no external state needed on your side.

It is designed for both humans and AI agents: deterministic JSON output, documented error semantics, and pay-per-result pricing where errors are never charged.

When to use this Actor

  • Trend detection — "Which products entered the top 100 in category X this week?" → run daily/weekly with trackChanges: true and read positionDelta, isNewEntry, droppedOut. For the fastest movers right now, scrape the Movers & Shakers chart and read rankChangePercent.
  • Assortment & market research — pull the top products of any category, filtered by price band, rating, or review count (minPrice/maxPrice/minStars/minReviews). Filters are applied before charging.
  • Competitive monitoring — track specific subcategories over time via scheduled runs.

When not to use it: you need full product detail pages (use a product-data actor) or review texts (use a reviews actor).

Quickstart (API)

curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~amazon-bestsellers/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"categoryUrls": ["https://www.amazon.com/gp/bestsellers/beauty"],
"maxItemsPerCategory": 100,
"trackChanges": true
}'

Or in the Console: paste one or more category URLs, click Start, download as JSON/CSV/Excel/XML.

Input reference

FieldTypeDefaultDescription
categoryUrlsstring[]Chart URLs: /gp/bestsellers/… or /zgbs/…, /gp/movers-and-shakers/…, /gp/new-releases/…, /gp/most-wished-for/…, /gp/most-gifted/…. Multiple URLs and marketplaces per run are fine. Optional when chartType + marketplace are set.
chartTypestringbestsellers | movers-and-shakers | new-releases | most-wished-for | most-gifted — builds the chart URL for you.
marketplacestringOne of the 18 marketplace codes (e.g. de, com, co.jp) — used with chartType.
categorySlugstringOptional category path appended to the chart URL, e.g. beauty or electronics/172541. Empty = chart root page.
maxItemsPerCategoryinteger100Cap per category (Amazon renders max. 100 per chart).
includeSubcategoriesbooleanfalseAlso crawl child categories discovered in the nav tree.
maxSubcategoryDepthinteger1Tree depth when subcategory crawl is enabled (1–3).
minStarsnumber0Only items with ≥ this rating.
minReviewsinteger0Only items with ≥ this many reviews.
minPrice / maxPricenumber0Price band in marketplace currency.
trackChangesbooleanfalseRank-diff against the previous snapshot of each category. Snapshots persist across runs and always store the unfiltered grid.
proxyConfigurationobjectbundled geo proxiesOptional — the actor ships with bundled geo proxies per marketplace (no setup needed, we cover the cost). Enable this only to force your own or Apify proxies instead.
proxiesByMarketplaceobjectBring-your-own geo-pinned proxies per marketplace ({"co.uk": ["http://…"]}). Overrides the bundled pool for the listed marketplaces.

Output

One dataset item per ranked product:

{
"position": 1,
"asin": "B08P4YPB8Q",
"name": "Maybelline New York Sky High Mascara …",
"url": "https://www.amazon.com/dp/B08P4YPB8Q",
"thumbnailUrl": "https://m.media-amazon.com/images/I/…jpg",
"price": { "value": 9.31, "currency": "USD" },
"stars": 4.4,
"reviewsCount": 37118,
"numberOfOffers": null,
"rankChangePercent": null,
"chartType": "bestsellers",
"categoryName": "Beauty & Personal Care",
"categoryUrl": "https://www.amazon.com/gp/bestsellers/beauty",
"marketplace": "com",
"input": "https://www.amazon.com/gp/bestsellers/beauty",
"previousPosition": 2,
"positionDelta": 1,
"isNewEntry": false,
"scrapedAt": "2026-08-16T10:33:30Z"
}
FieldMeaning
positionRank in the chart (from the rank badge; DOM order as fallback; null if not observable)
asin, name, url, thumbnailUrlProduct identity; url is the canonical /dp/ link
price{value, currency} — numeric, in the marketplace's own currency
priceStringPrice exactly as rendered on the page
stars, reviewsCountRating and review count as rendered on the card
numberOfOffersOffer count when Amazon renders it, otherwise null
isPrimetrue when a Prime badge is rendered on the card; null when the grid shows no Prime info (never a guessed false)
badgesVisible badge texts on the card (e.g. "Bestseller"); usually empty on chart grids
rankChangePercentMovers & Shakers only: Amazon's "% increase in sales rank" figure as an integer (e.g. 256 for "+256%"); always null on the other charts
chartTypebestsellers | new-releases | most-wished-for | most-gifted | movers-and-shakers
categoryNameThe category name only (no chart label), localized as rendered by the marketplace — e.g. Kosmetik for amazon.de …/bestsellers/beauty. Use it to group items when batching many categories in one run
inputThe start URL this category was reached from (also for subcrawled categories)
previousPosition, positionDelta, isNewEntryOnly with trackChanges: true. positionDelta > 0 = climbed. All null on the first (baseline) run
scrapedAtUTC timestamp of capture

null means "not rendered by Amazon" — never a guess. If Amazon skips positions in a grid, the gap is reported in the RUN_SUMMARY key-value record, never silently filled. RUN_SUMMARY also contains per-category item counts and, with change tracking, changes: {newEntries, droppedOut, basedOnSnapshotAt}.

Error items (never charged)

Failures are pushed as dataset items for transparency, but no result event is charged for them:

errorMeaningTypical action
invalid_urlNot a supported Amazon marketplace URLFix the URL
category_not_foundAmazon returned 404Check the category path
no_results_foundPage rendered no product cardsRetry later
category_unavailableAmazon renders the URL as an empty "undefined" category page — the bare slug no longer resolvesUse the node-id URL form: …/gp/bestsellers/<slug>/<nodeId> (e.g. https://www.amazon.de/gp/bestsellers/electronics/562066)
blockedBot-detection page after automatic retries across the proxy tier chain (own pool → Apify DC → Apify residential)Use residential / geo-pinned proxies
transportNavigation failure (proxy/timeout)Simply retry

Pricing

Pay-per-event: one result event per product item pushed. Error items are free. Filters are applied before charging. A full top-100 category costs 100 result events; a daily change-tracked watchlist of 10 categories costs 1,000 events/day. See the Pricing tab for the current event price.

Tips

  • Batch your categories into one run — per-run startup cost is shared across all URLs.
  • Use maxItemsPerCategory while exploring to cap spend.
  • Subcategory crawl multiplies output fast (one root can mean 30+ categories). Combine with filters and caps.
  • For correct prices, the proxy exit country must match the marketplace — the bundled pool is already geo-pinned per marketplace; if you bring your own, use proxiesByMarketplace or Apify Residential with country targeting.
  • Schedule the Actor (e.g. daily) with trackChanges: true to build a trend time series; snapshots persist between runs.

Known limitations

  • Movers & Shakers availability: Amazon gates this chart more aggressively than the others — anonymous sessions sometimes get no product grid at all (the page renders but stays empty). The actor renders the page in a real browser and extracts the grid whenever Amazon serves it, including the rankChangePercent figures; when Amazon withholds the grid, you get an uncharged no_results_found error item instead of being charged for nothing.
  • Dead bare slugs (e.g. /gp/bestsellers/ce on amazon.de): Amazon has stopped resolving some bare category slugs server-side — the page loads with HTTP 200 but the category renders as "undefined" with no product grid at all, so there is no markup any scraper could parse. The same chart still works via its node-id URL (e.g. https://www.amazon.de/gp/bestsellers/electronics/562066 for Elektronik & Foto). The Actor detects this case and returns an uncharged category_unavailable error item instead of a generic no_results_found; pass the node-id form of the URL to get data.
  • Amazon caps every chart at 100 visible items per category — this is a platform limit, not an Actor limit.
  • Verified marketplaces: de, com, co.uk, fr, it, es, ca, com.au, co.jp, in, nl, se, pl, com.be, com.mx, com.br, ae, sa (18). Others may work but are untested — report your results via the Issues tab.

Use with AI agents (MCP)

This Actor is MCP-ready and works as a structured Amazon chart tool for AI agents. Exact identity: cyprusapi/amazon-bestsellers.

Tool description: fetch ranked Amazon chart products (Best Sellers, Movers & Shakers, New Releases, Most Wished For, Most Gifted) from 18 marketplaces and return structured records with rank, ASIN, title, structured local-currency price, rating, review count, and chart context — Movers & Shakers items additionally carry rankChangePercent. Optionally diffs against the previous run (trackChanges).

Example prompt: "Scrape the US Amazon Best Sellers chart for Electronics, top 20, with rank, ASIN, title, price, rating, and review count." → input: {"chartType": "bestsellers", "marketplace": "com", "categorySlug": "electronics", "maxItemsPerCategory": 20}

Output interpretation for agents:

  • position is the chart rank, 1 is the top item
  • asin + url identify the product for follow-up enrichment
  • price.value / price.currency are numeric and marketplace-local — safe for arithmetic
  • positionDelta > 0 means the product climbed since the previous run
  • rankChangePercent is only set on Movers & Shakers items — Amazon's own "% increase in sales rank" figure
  • Items with an error field are failures — they are never charged and should not be counted as data
  • A field set to null means "not rendered by Amazon" — do not treat it as zero or absence of the attribute

Cost guidance: one product = one result event; errors, filters, and the first baseline snapshot cost nothing. Lower maxItemsPerCategory when only the chart top is needed.

FAQ, disclaimers, and support

  • Is it legal? The Actor reads publicly available chart pages. You are responsible for complying with Amazon's Terms of Service and applicable law in your jurisdiction.
  • Do I need proxies? No — the actor ships with bundled geo-pinned residential proxies per marketplace, and we cover their cost. You only touch the proxy settings if you want to force your own pool or Apify Proxy instead.
  • Found a bug or need another marketplace or chart type? Open an issue — selector maintenance is part of the product.