AS
Apify Store
/kestrel/amazon-best-sellers-scraper
Amazon Best Sellers Scraper — Top 100 by Category & BSR
Amazon Best Sellers and New Releases charts for any category and marketplace, every rank on every page: best seller rank, ASIN, title, price, rating, rating count and image. Track BSR daily, spot products taking off, feed the ASINs into a reviews run. Pay per product row.
liveasyncunknown~30s typical
ECOMMERCEAUTOMATIONLEAD_GENERATION
$0.0020
per result + $0.01 call
plus $0.001 platform fee per run
Usage-based actor: event charges passed through at cost plus 25%
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /kestrel/amazon-best-sellers-scraper for me.
Input
| Field | Type | Description |
|---|---|---|
| categories* | array | Category slugs to pull the chart for, e.g. "electronics", "kitchen", "books", "toys-and-games" — the segment after /gp/bestsellers/ in a Best Sellers URL. Nested paths work too. |
| chart | string (bestsellers | new_releases) | Best Sellers (the standing sales-rank chart) or New Releases (the newest products gaining traction), pulled for each category above. default "bestsellers" |
| pages | integer | A chart page holds 50 ranks, so 2 pages = the Top 100. Walking stops early when a page adds nothing new. default 2 |
| maxResultsPerCategory | integer | 0 = every entry on the pages requested. N = the top N only — the main cost control. Lazy-loaded entries are only requested for ranks you asked for. default 0 |
| minRating | number | 0 = keep everything. 1-5 = keep only products rated at or above this. Filtered products are never charged. default 0 |
| fillRanks | boolean | Amazon renders 30 of a page's 50 entries and lazy-loads the rest. On (default), the missing ranks are fetched with the page's own load-more call (one small request per page; product pages only as a fallback) so the chart has no gaps. Off = only the entries the page renders (30 per page, one request). default true |
| domain | string | Amazon marketplace: com, co.uk, de, fr, it, es, ca, com.au, co.jp, in, com.mx, com.br, nl, se, pl, sa, ae, sg, com.tr, com.be. default "com" |
| sessions | integer | How many proxy sessions (egress IPs) run in parallel. More is faster; each is paced separately. default 4 |
| perIp | number | Pace for each session. Amazon tolerates about 0.5/s per IP; faster causes captchas, not speed. default 0.5 |
| proxyConfiguration | object | Apify Proxy is required: Amazon captchas datacentre traffic that is not rotated. RESIDENTIAL works best. default {"useApifyProxy":true} |
Call it
curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
-H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
-d '{"provider":"apify","endpoint":"/kestrel/amazon-best-sellers-scraper","input":{"categories":[],"chart":"bestsellers","pages":2,"maxResultsPerCategory":0,"minRating":0,"fillRanks":true,"domain":"com","sessions":4,"perIp":0.5,"proxyConfiguration":{"useApifyProxy":true}},"wait":false}'poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."cli
npx cracked-ai run -p apify -e /kestrel/amazon-best-sellers-scraper -i '{"categories":[],"chart":"bestsellers","pages":2,"maxResultsPerCategory":0,"minRating":0,"fillRanks":true,"domain":"com","sessions":4,"perIp":0.5,"proxyConfiguration":{"useApifyProxy":true}}' -w 120mcp
run_tool({ provider: "apify", endpoint: "/kestrel/amazon-best-sellers-scraper", input: {"categories":[],"chart":"bestsellers","pages":2,"maxResultsPerCategory":0,"minRating":0,"fillRanks":true,"domain":"com","sessions":4,"perIp":0.5,"proxyConfiguration":{"useApifyProxy":true}}, wait: false })Try it
Runs against your signed-in workspace balance. Sign in if you have not.