Amazon Scraper - Amazon Product Scraper & Price Tracker avatar

Amazon Scraper - Amazon Product Scraper & Price Tracker

Pricing

from $2.40 / 1,000 products

Go to Apify Store
Amazon Scraper - Amazon Product Scraper & Price Tracker

Amazon Scraper - Amazon Product Scraper & Price Tracker

Amazon scraper and Amazon product scraper for 20 sites: ASINs, URLs, search and Best Sellers. Get price, stock, rating, BSR, monthly buys, seller, variations and price tracking. Still-blocked or failed pages are free; recovered pages are charged. $3/1,000 products, $1/1,000 search/list rows.

Pricing

from $2.40 / 1,000 products

Rating

5.0

(1)

Developer

Yukai Lin

Yukai Lin

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

8

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Amazon Scraper: Amazon product scraper and price tracker

What it does

This Amazon scraper reads public Amazon pages on 20 Amazon sites. You give it product URLs or ASINs, search terms, or Best Sellers / New Releases list URLs. You get one row per product or list position. Each row has price, rating, rank and stock.

Example: input B0DCH8VDXF → one product row: title, brand Apple, price: 19, currency: USD, inStock: true, rating: 4.5, reviewCount: 18580, boughtPastMonth: 10000, seller Amazon.com.

Price: $3.00 per 1,000 products ($0.003 each). $1.00 per 1,000 search or list rows ($0.001 each). No start fee. Pages still blocked or failed after retries are free; recovered pages are charged normally.

  • Bulk: paste a whole list at once, one per line or separated by tabs, semicolons or commas. Each entry gets its own row, and the same product written twice is read and charged once.
  • Blocked rows: when Amazon refuses a page, the run tries the other routes and, at the end of the run, tries that page once more after a pause. A page read on that try is charged once, like any other. A page still refused is a free row with errorType: "blocked", and SUMMARY.retryLater lists what to run again. We never solve robot checks, so some pages can stay blocked.

It reads public Amazon pages on 20 Amazon sites and returns clean rows:

  • 📦 Products (product URLs or bare ASINs): title, brand or authors, price, list price and discount, availability, rating and ratings count, "bought in past month", Best Sellers Rank in every category, breadcrumb categories, seller and ships-from, feature bullets, all images, variations (size, color ... with their ASINs), the product details table (dimensions, weight, model, date first available ...) and optionally the description.
  • If Amazon blocks a desktop /dp/<ASIN> product page, the Actor tries the mobile /gp/aw/d/<ASIN> page on the same available routes. A recovered product has sourcePage: "mobile" and uses the usual product event once; an ordinary page has sourcePage: "desktop". If both pages are blocked, the row is free and appears in SUMMARY.retryLater. Mobile pages may omit optional fields.
  • 🏆 Best Sellers, New Releases, Movers & Shakers, Most Wished For and Gift Ideas lists of any category: rank, ASIN, title, price, rating, ratings count, image.
  • 🔎 Search results for keywords: position, ASIN, title, price, list price, rating, ratings count, bought in past month, badge, Prime, sponsored or not.
  • 📉 Tracking for schedules: price drop or increase with the old price, back in stock / out of stock, Best Sellers Rank up or down, seller changed, new entries and products that dropped out of a best-seller list.
  • 🧾 Final failures are free: pages still blocked by robot checks after retries, missing pages, pages without a price for our servers' location and invalid lines are free rows with an errorType or a note.

Turn on Product details to open the product page of every search result or list position.

Real results (3 October 2026)

  • The default input (1 product, Best Sellers in Electronics, the search "wireless earbuds", 10 rows each): 21 rows in 7.3 seconds, $0.023.
  • 60 of 60 product pages from the US Best Sellers in Beauty and Toys & Games with full details in 93 seconds, $0.18: price 58/60 (the other 2 were unavailable), Best Sellers Rank 60/60, bought in past month 55/60, seller 48/60.
  • 5 Amazon sites in one run (US and UK kitchen best sellers, an amazon.de search, a Japanese product, French new releases) with details: 49 of 49 products read.
  • Tracking: run twice with "Output only changes" (the saved state edited to older values): a best seller that moved from #6 to #3 came back as rank_up (rankChange: 3), a new #5 as new, an old entry as dropped_out (free), and a product as price_increase + rank_up; unchanged rows were not returned.

Use cases

  • Product research: what sells in a category (Best Sellers, Movers & Shakers) and how much ("bought in past month", ranks).
  • Price monitoring: competitors' prices, stock and sellers every day; only the changes.
  • Rank tracking: your products' Best Sellers Rank and their position for your keywords.
  • Catalog data: titles, images, features, variations and specs for a list of ASINs.
  • AI agents: "What are the top 10 best sellers in Kitchen right now and their prices?"

How much does it cost?

EventPriceWhen
Product$3.00 / 1,000 ($0.003 each)one product page read with its title and price or stock (plus rating, ranks, seller, images, variations, specs as shown); in tracking mode: a new or changed product
Search or list row$1.00 / 1,000 ($0.001 each)one search result or best-seller position with ASIN, title, price, rating and rank
Unchanged product check$0.50 / 1,000 ($0.0005)tracking mode only: a product read again with the same price, stock, rank and seller

Free: blocked pages and robot checks, missing pages, products for which Amazon showed our servers no price ("cannot be delivered to your location"), list positions Amazon shows without data (ranks 31-50 of a list page, unless Product details is on), unchanged search and list rows in tracking mode, sponsored results you skip, invalid lines, and repeats: the same product, search or list entered twice in different spellings is read and charged once, and a product that turns up again in the same run (for example in two lists with Product details) is charged once, the later rows are free with duplicate: true. No start fee. Larger Apify plans get the usual volume discount (Silver 10%, Gold and above 20%).

Example: the top 100 of 5 best-seller lists every day = 500 rows = $0.50 a day; with "Output only changes" the unchanged rows are free, so a day with 60 changes costs $0.06. Tracking 1,000 of your products daily: $3 the first day, then $0.50 plus $0.0025 more for each changed product.

For comparison (Apify Store, 3 October 2026): junglee/Amazon-crawler charges $0.005 per product plus $0.0025 per offer or seller (2,304 users in the last 30 days, 87.8% of runs succeeded); junglee/amazon-bestsellers $0.0059 per item; amazon-scraper/amazon-bestsellers-scraper $0.002 per item; santamaria-automations/amazon-search-scraper $0.001 per item plus $0.001 per run; automly's product scraper $0.00555 per item plus $0.05 per run.

Control your cost

  • maxItems caps the charged rows per run and maxResultsPerInput the rows per search or list.
  • The run logs its worst-case plan at the start and compares it with your maximum charge per run; when the next row could pass it, no new page is started (SUMMARY.status: LIMIT_REACHED, SUMMARY.notProcessed).
  • Every row has charged: true or false; free rows say why. If Apify restarts the run, finished inputs are not charged again.

How to use it

  1. Amazon URLs or ASINs: product pages, ASINs, search pages, best-seller style lists, one per line (any of the 20 supported Amazon sites). A pasted list also works: entries separated by tabs or semicolons, or ASINs and links separated by commas or spaces; quotes and brackets around them are removed. B079M8FPTW, b079m8fptw and amazon.com/Name/dp/B079M8FPTW/ref=... are one product, read once.
  2. Optional: Search terms and the Marketplace for them (and for bare ASINs). The same search in other letter case or spacing runs once.
  3. Optional: Product details to open every search result or list position (charged as products). Include sponsored search results off skips ads without using up the rows per search.
  4. Optional: Track price, stock and rank changes with a Monitor name, and Output only changes; schedule the task (Apify Console → Schedules).

Input example

{
"urls": [
"https://www.amazon.com/dp/B0DCH8VDXF",
"B079M8FPTW",
"https://www.amazon.com/gp/bestsellers/kitchen",
"https://www.amazon.co.uk/gp/new-releases/kitchen"
],
"searchTerms": ["wireless earbuds"],
"marketplace": "com",
"maxResultsPerInput": 50,
"trackChanges": true,
"monitorName": "kitchen-watch",
"onlyChanges": false
}

Output example

A product (real result, 3 October 2026; images, variations and the details table shortened):

{
"type": "product",
"marketplace": "com",
"asin": "B0DCH8VDXF",
"parentAsin": "B0FFMX7Y3Q",
"url": "https://www.amazon.com/dp/B0DCH8VDXF",
"sourcePage": "desktop",
"title": "Apple EarPods Headphones with USB-C Plug, Wired Ear Buds with Built-in Remote to Control Music, Phone Calls, and Volume",
"brand": "Apple",
"price": 19,
"currency": "USD",
"availability": "In Stock",
"inStock": true,
"rating": 4.5,
"reviewCount": 18580,
"boughtPastMonth": 10000,
"boughtPastMonthText": "10K+ bought in past month",
"seller": "Amazon.com",
"shipsFrom": "Amazon.com",
"features": ["SUPERIOR COMFORT — Unlike traditional circular ear buds, the design of EarPods is defined by the geometry of the ear. ..."],
"mainImage": "https://m.media-amazon.com/images/I/513OSdW4elL._AC_SL1500_.jpg",
"variationCount": 3,
"variations": [{ "asin": "B0DCH8VDXF", "options": { "Size": "One Size", "Style": "USB-C" } }],
"details": { "Item Weight": "1.12 ounces", "Item model number": "MYQY3AM/A", "Date First Available": "August 7, 2024" },
"via": "direct",
"charged": true
}

A best-seller row (real result):

{
"type": "list-item",
"listType": "bestsellers",
"listName": "Best Sellers",
"listUrl": "https://www.amazon.com/gp/bestsellers/electronics",
"rank": 2,
"asin": "B0DCH8VDXF",
"title": "Apple EarPods Headphones with USB-C Plug, Wired Ear Buds with Built-in Remote to Control Music, Phone Calls, and Volume",
"price": 19,
"currency": "USD",
"rating": 4.5,
"reviewCount": 18580,
"url": "https://www.amazon.com/dp/B0DCH8VDXF",
"charged": true
}

What the fields mean

  • price / listPrice / discountPercent: the buy-box price and the crossed-out list or typical price. currency is the currency the price was shown in (see Limitations).
  • bestSellersRank / bestSellersCategory: the main Best Sellers Rank; bestSellersRanks lists every category rank with its list URL.
  • boughtPastMonth: Amazon's "10K+ bought in past month" as a number (10000).
  • rank (lists) / position (search): the place on the list or results page; sponsored marks ads in search results. Movers & Shakers rows also get rankChangePercent, salesRank and previousSalesRank when Amazon shows them.
  • change / changes (tracking): new, changed, unchanged, dropped_out; changes lists price_drop, price_increase, back_in_stock, out_of_stock, rank_up, rank_down, seller_changed, currency_changed.
  • via: whether Apify's network (direct), our Cloudflare route (backend-cf), or the paid residential proxy route (backend-resi) read the page.
  • sourcePage: desktop or mobile; identifies which Amazon page supplied a product. Search, list and free error rows use desktop.
  • SUMMARY (key-value store): products, recoveredViaMobile, list rows, free rows by errorType, routes used, tried and refused (byVia, routeAttempts, refusedByRoute, refusedBySite), the second try of refused pages (secondRound) and the inputs to run again later (retryLater), residential proxy bytes (resiBytes when used) and sessions (resiSessions: tried, refused by Amazon, pages read on a later session, seconds paused, whether the route was stopped, unavailable when the route was not available on our side, and listPages with the proxy cost of tracked search and list pages next to the tracked rows charged in the run), tracking counts.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/tidytools~amazon-product-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls":["https://www.amazon.com/gp/bestsellers/kitchen"],"maxResultsPerInput":20}'

With AI agents (MCP): connect Apify's MCP server (https://mcp.apify.com?tools=tidytools/amazon-product-scraper) to Claude, Cursor or any MCP client and ask, for example, "What are the 10 best-selling kitchen products on Amazon right now and what do they cost?". Minimal input: {"urls": ["B0DCH8VDXF"]}. Failed items are not charged and carry an errorType.

Limitations

  • Honest access, no robot-check solving: requests use our TidyTools user agent and follow Amazon's robots.txt (product, search and best-seller pages are allowed; offer-listing pages are not and are not read). When Amazon answers with a robot check, the page is tried through our Cloudflare route. Paying customers' real runs can then try a budgeted residential proxy route, with up to three fresh sessions per page, one page at a time; when Amazon refuses several sessions in a row the run pauses (15, 30, then 60 seconds) and after 12 refused sessions in a row it stops using that route for the run. Free plans, sample-input QA and our own runs do not use it. A route that got a robot check rests for 10 minutes. After a free run's first robot check, later pages are read one at a time and requests are spaced out. Amazon's refusals often pass within minutes, so at the end of the run every refused page is tried once more after a 30-second pause, on the routes it has not used first and then on those that refused it; a page read then is charged like any other, and a route refused again rests for the rest of the run, so later pages do not try it. On a paying customer's real run this try can also use one more residential session, only if what is left of that page's byte limit (shared by both tries) is at least what its earlier sessions took; free plans never use it. When no route is left for any refused page the run does not pause: the free blocked rows come at once. In our tests, after several hundred pages within an hour some routes started to get robot checks; plan big catalogs as daily schedules rather than one burst.
  • Location-dependent prices: Amazon shows prices for the visitor's location. Pages are read from Apify's network (mostly US data centers) and, when that gets a robot check, through Cloudflare's network; a page read from outside the marketplace's country may show the price converted into another currency (then currency says so) or no price at all ("cannot be delivered to your location", returned free). For non-US marketplaces, adding an Apify proxy in that country (Proxy configuration) gives local prices.
  • What a page shows: list pages show full cards for 30 positions; the other positions of a page come with ASIN and rank only (free) unless Product details is on. Reviews beyond the few on the product page need a login and are not read. No seller contact data.
  • Movers & Shakers is empty at the moment: since at least 4 October 2026 Amazon answers every Movers & Shakers page we tried (US, UK and Germany, several categories, also in a normal browser) with "Sorry, there are no movers and shakers available in this category". Such a page returns one free row with errorType: "list_empty" and Amazon's message; when Amazon fills the lists again they are read like the other lists.
  • Search results are the ones Amazon shows to a visitor without an account; sponsored results are marked.

FAQ

Does the Actor collect usage data? The Actor sends one anonymous usage counter per run (input type, item count range, outcome) to improve the tool; no URLs, content or account data.

Which Amazon sites work? 20 Amazon sites, including amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .co.jp and .com.au. Use full URLs, or bare ASINs together with the Marketplace setting.

Why is a price missing or in another currency? Amazon shows prices for the visitor's location. Pages are read from Apify's network first (mostly US data centers). A page read from outside the marketplace's country may show a converted price (then currency says so) or none ("cannot be delivered to your location", returned free). For non-US sites add an Apify proxy in that country under Proxy configuration.

How do I get alerts for price drops or rank changes? Turn on Track price, stock and rank changes, keep the same Monitor name, turn on Output only changes and schedule the Actor (for example daily). Each run returns only what changed; connect it to e-mail, Slack, Zapier, Make or n8n through an Apify integration.

What happens when Amazon shows a robot check? The page (also an empty "HTTP 202" answer or an unrecognised search page) is tried through the available routes. A paying customer's real run can then try the residential proxy route: up to three fresh sessions per page (each a new connection without cookies), all within a strict per-page byte limit, so it can also fail. In tracking mode, unchanged search and list rows are free and how many rows changed is only known once the page is read, so for those pages the limit comes from a small start allowance per run plus the search and list rows this run has already been charged for: once both are used up, a refused tracked page is not tried this way, and its free row says so. When that route is not available on our side at that moment, the row says so ("not an Amazon refusal") and the run does not call it again. Free plans only use the lower-cost routes and may therefore see blocked more often. At the end of the run every refused page gets one more try after a 30-second pause, on the routes it has not used first and then on those that refused it (a search or list continues from the refused page, without repeating or re-charging earlier rows); a page read on that try is charged with the usual event, once. Paying customers' real runs can also use one more residential session on that try, inside the same per-page byte limit; free plans never do. A route refused again on that try rests for the rest of the run, and when no route is left for any refused page the run does not wait: the free blocked rows come right away. If it is still refused, the row has errorType: "blocked", charged: false, and a reason, and SUMMARY.retryLater lists the product, search and list URLs to paste and run again in a few minutes. If a later search or list page is blocked, earlier successful rows remain and one free blocked row identifies the page. We do not solve robot checks. For big catalogs use daily schedules instead of one large burst.

Amazon blocked most of my run. Should I run it again? Not right away. Blocked rows are free and say which routes and sessions were refused. When Amazon refuses residential sessions in a row, the run itself backs off (15, 30, then 60 seconds) and, after 12 refused sessions in a row, stops using that route instead of sending more requests, so the remaining pages come back quickly as free blocked rows. Amazon's refusals usually pass within minutes to an hour: wait at least 10-15 minutes, then run only SUMMARY.retryLater (not the whole list again), with a lower Pages in parallel for large lists. Starting the same run again and again a few minutes apart keeps Amazon refusing it.

What happens with a mistake in the input? A line that is not an Amazon product, search or list URL or an ASIN (including other sites, local addresses such as 127.0.0.1 and short links like amzn.to) gives a free invalid_input row; valid lines in the same run still run. With an unsupported Marketplace, bare ASINs and search terms become free invalid_input rows and full Amazon URLs are still read. Options sent as text through the API ("true", "false", "1,000") are understood; a value that cannot be read uses the default and is listed in SUMMARY.inputNotes. If nothing usable is left, the run ends normally with SUMMARY.status: NO_RESULTS, never as a failed run. A product that does not exist is a free not_found row. A search page with neither results nor Amazon's own "no results" notice (for example a robot-check variant we do not recognise) is a free blocked row, not a fake "no results".

Are the Best Sellers and search rows cheaper than products? Yes: list positions and search results are $0.001 each, product pages $0.003. Turn on Product details only when you need the full product page for every row.