ApifyAmazonScanner
Pricing
Pay per usage
ApifyAmazonScanner
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Matt Cook
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
2 months ago
Last modified
Categories
Share
Amazon Product Scraper (Apify actor)
Scrapes Amazon product data based on URL and country, without the Amazon API: reviews, prices, descriptions, ASINs, ratings, images, Best Sellers Rank, and the full product-information tables.
Feed it any mix of Amazon URLs — search results, category / browse-node pages, Best Sellers pages, or product detail pages — and/or a bare search keyword plus a country, and it writes one JSON record per product to the run's dataset.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
categoryOrProductUrls | [{ url }] | — | Search (/s?k=…), category (/b?node=…), Best Sellers (/gp/bestsellers/…), or product (/dp/ASIN) URLs. Bare ASINs also accepted. Aliases: startUrls, productUrls. |
search | string | — | Bare keyword; searched on the country marketplace. Aliases: keyword, searchKeywords, keywords, queries. |
country | string | US | Marketplace for bare keywords + proxy geolocation. 23 marketplaces supported (US, GB/UK, DE, FR, IT, ES, CA, JP, IN, MX, BR, AU, NL, SE, PL, TR, AE, SG, SA, BE, IE, EG, ZA). A URL's own domain always wins — country then only steers the proxy. |
maxItems | int | 100 | Total product cap for the run. Alias: maxResults. |
maxItemsPerStartUrl | int | 0 (off) | Per-start-URL cap. Alias: maxProductsPerStartUrl. |
maxSearchPagesPerStartUrl | int | 5 | Result pages walked per search/category URL (Amazon serves ≤ ~20). |
scrapeProductDetails | bool | true | OFF = shallow, fast listing-only records (no dp-page visits). |
scrapeReviews | bool | true | Alias: includeReviews. Requires details ON. |
maxReviews | int | 20 | Per product. Amazon caps anonymous review pages at ~10 (~100 reviews); where the reviews pages are login-walled (increasingly common since late 2024) the actor keeps the product page's top reviews instead. |
reviewsSort | helpful|recent | helpful | Review page order. |
proxyConfiguration | proxy | Apify RESIDENTIAL | Amazon blocks datacenter IPs quickly — keep residential. |
Robot-check pages are detected (captcha form, block-page markers) and retried on a fresh session/IP automatically; requests that still fail salvage what's already known (listing-row data, on-page reviews) instead of dropping the product.
Output (one record per product)
{"asin": "B0TESTMUG1","url": "https://www.amazon.com/dp/B0TESTMUG1","title": "Bigfoot Sasquatch Coffee Mug, 15 oz Ceramic","brand": "CryptidWorks","price": 18.99,"priceRaw": "$18.99","currency": "USD","listPrice": 24.99,"rating": 4.6,"reviewsCount": 1234,"inStock": true,"availability": "In Stock","featureBullets": ["15 oz ceramic mug…", "Dishwasher and microwave safe"],"description": "Start every morning with the legend himself…","image": "https://m.media-amazon.com/images/I/71test._AC_SL1500_.jpg","images": ["…hi-res first…"],"breadcrumbs": ["Home & Kitchen", "Mugs"],"bsr": 12345,"bestsellerRanks": [{ "rank": 12345, "category": "Home & Kitchen" }, { "rank": 678, "category": "Coffee Mugs" }],"attributes": { "Brand": "CryptidWorks", "Material": "Ceramic", "ASIN": "B0TESTMUG1" },"reviews": [{"id": "R1TEASER001", "title": "Best mug I own", "rating": 5,"body": "Sturdy, funny…", "author": "Jane D.","date": "March 3, 2025", "country": "United States","verified": true, "helpfulVotes": 12, "variant": "Color: Forest Green"}],"sponsored": false,"domain": "amazon.com","country": "US","scrapedAt": "2026-07-05T12:00:00.000Z"}
The field names (asin, title, brand, price, rating, reviewsCount,
bsr, url, image) line up with what the common Amazon actors emit, so
consumers built for those (including the Suppliers app's
src/ai/amazon-scan.ts normalizer) read this actor's output unchanged.
Develop / test / deploy
npm installnpm test # fixture-pinned parser tests, no network# local run against real Amazon (uses your logged-in `apify` CLI for proxy):apify run --purge --input '{"search":"bigfoot mug","country":"US","maxItems":5,"maxReviews":5}'# deploy to your Apify account:apify loginapify push
Once pushed, point the Suppliers app at it by setting
APIFY_AMAZON_ACTOR=<your-apify-username>/amazon-product-scraper on Render
(the actor name comes from .actor/actor.json; the app's default is a
third-party store actor — this makes the Amazon market scan run on your own
actor and your own proxy budget).
Design notes
- CheerioCrawler, no browser — every page shape used (search grid, dp page,
reviews pages, bestseller grid) renders its data server-side, so plain HTTP is
~10× cheaper than a headless browser. Bestseller grids lazy-load beyond ~30
items per page; the actor takes both static pages (
pg=1,2) which covers the Top-100 lists' server-rendered portion. - Fallback selector chains everywhere — Amazon A/B-tests layouts; every field
reads primary + legacy selectors (
test/fixtures/pins them). - Reviews strategy — dp-page top reviews are captured first (always
available), then the dedicated
/product-reviews/pages are walked up tomaxReviews/ Amazon's ~10-page anonymous cap; a login-walled reviews page degrades gracefully to the top reviews rather than losing the product. - Budgeting — a
scheduledcounter reserves dataset slots at listing time so the crawler never fans out to hundreds of dp pages it won't use;maxItemstriggers a gracefulcrawler.stop().