Apify Store
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

FieldTypeDescription
categories*arrayCategory 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.
chartstring (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"
pagesintegerA chart page holds 50 ranks, so 2 pages = the Top 100. Walking stops early when a page adds nothing new. default 2
maxResultsPerCategoryinteger0 = 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
minRatingnumber0 = keep everything. 1-5 = keep only products rated at or above this. Filtered products are never charged. default 0
fillRanksbooleanAmazon 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
domainstringAmazon 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"
sessionsintegerHow many proxy sessions (egress IPs) run in parallel. More is faster; each is paced separately. default 4
perIpnumberPace for each session. Amazon tolerates about 0.5/s per IP; faster causes captchas, not speed. default 0.5
proxyConfigurationobjectApify 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 120
mcp
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.