Amazon Product Scraper: Prices, Stock, BSR & 64 Fields
Pricing
from $8.00 / 1,000 product with prices
Amazon Product Scraper: Prices, Stock, BSR & 64 Fields
Scrape Amazon product data by ASIN, URL, search term or category. 64 fields per product: price, list price, discount, stock, bestseller rank, ratings, images, specifications, variants, delivery and sales estimates. 19 marketplaces. You only pay for rows that arrive with a price.
Pricing
from $8.00 / 1,000 product with prices
Rating
0.0
(0)
Developer
Amazon Scrapers
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Amazon product scraper: prices, ASIN, BSR and 64 data fields
Give it ASINs, product URLs, a search term or a category link. Get back one clean row per product with 64 fields: the price and what it used to cost, how many people bought it last month and what that is worth, bestseller rank, stock, ratings, every image, the full specification table, variants, return policy, delivery date and more.
It reads 19 Amazon marketplaces, from amazon.com to amazon.co.jp, and it reads them in their own language. A German product's rating says "4,5 von 5 Sternen" and a Japanese one puts the number last. Both come back as 4.5.
Fields are empty only when Amazon does not show them on that page. They are never empty because something went wrong. There is a difference, and this Actor is built around it.
What to know before you start
All 64 fields work on every marketplace. Prices are the one field Amazon does not always serve, and how often depends on the marketplace. Eight of them measured on the same day, same settings:
| Marketplace | Products priced |
|---|---|
| amazon.com | 57 of 60 |
| amazon.co.uk | 5 of 6 |
| amazon.ca | 5 of 5 |
| amazon.fr | 4 of 5 |
| amazon.it | 1 of 5 |
| amazon.es | 1 of 5 |
| amazon.de | 0 of 8 |
| amazon.com.au | 0 of 5 |
The unpriced rows are not failures to read. On those pages Amazon sends everything, twenty specifications, the rating, the brand, every image, and leaves the buy box out, mostly for products it will not ship to the country your request appears to come from. Which products price and which do not is set by Amazon per product, not by this Actor. Five approaches were tried before writing this paragraph, including the shop's own language, matching country addresses, locale cookies and the mobile page.
Two things follow. Rows without a price are delivered in full and are never charged for, so a marketplace that will not give you prices costs you nothing to find out. And the currency field reports what Amazon actually quoted: amazon.ca, for example, quotes US dollars to a visitor it places in the United States.
Run a small job on your marketplace first and see what you get.
It will not guess a price
Amazon puts up to nine price-shaped numbers on a product page: the subscribe-and-save option, a used offer, a struck-through list price, a per-unit price, a bundle. Reading markup and picking one gets it wrong more often than it gets it right.
This Actor takes the price from the buy box data Amazon itself uses to render the page. Nowhere else. Nine out of nine correct in the test set against zero out of six for markup reading.
When that data is not on the page, you get no price rather than a wrong one, and the row arrives with everything else filled in. The priceSource field tells you where every price came from.
What you get per product
Sixty-four fields. The market leader offers 56.
Price and offer
| Field | What it holds |
|---|---|
price | Current price from Amazon's own buy box data |
listPrice | The struck-through price, when Amazon shows one |
savingsAmount | How much is off in money |
discountPercent | How much is off as a percentage |
currency | Three-letter code, from the page itself |
pricePerUnit | Price per count, ounce, litre, whatever Amazon uses |
priceSource | Where the price came from, so you can audit it |
isDiscounted | Whether it is currently below list price |
coupon | The clip-coupon text, when there is one |
dealBadge | Lightning deal, limited time deal, and similar |
hasSubscribeAndSave | Whether a subscription price exists |
hasUsedOffer | Whether a used copy is offered |
isRefurbished | Renewed and refurbished listings |
otherSellersCount | How many other sellers offer it |
Demand and rank
| Field | What it holds |
|---|---|
boughtInPastMonth | Units bought last month as a number |
boughtInPastMonthText | Amazon's own wording, such as 10K+ bought in past month |
estimatedMonthlySales | Units, derived from the line above |
estimatedMonthlyRevenue | Units times price |
bestsellerRanks | Every rank with its category, not just the first |
isBestSeller | The orange best seller badge |
isAmazonChoice | The Amazon's Choice badge |
rating | Average stars, read in every shop language |
reviewCount | How many ratings, as a number |
Stock and delivery
| Field | What it holds |
|---|---|
inStock | True, false, or null when Amazon does not say |
availability | Amazon's own availability sentence |
stockLeft | Only three left in stock, when shown |
deliveryInfo | The delivery date Amazon promises |
returnPolicy | The return terms in full |
isPrime | Prime delivery on this offer |
Identity and catalogue
| Field | What it holds |
|---|---|
asin | The product id |
parentAsin | The parent listing, for variant families |
title | Full product title, shortened only past 1000 characters |
brand | Brand name |
manufacturer | Manufacturer, when different from brand |
modelNumber | Model number |
partNumber | Manufacturer part number |
gtin | GTIN, EAN or UPC |
marketplace | Which shop this row came from |
url | The page this was read from |
scrapedAt | Timestamp of the read |
Description, media and variants
| Field | What it holds |
|---|---|
description | The product description under the fold, as plain text |
features | The bullet points at the top |
image | Main image at the largest size Amazon offers |
images | Every gallery image, largest version first |
imageCount | How many images there are |
videoCount | How many videos are on the page |
hasAPlusContent | Whether the brand added enhanced content |
variantAsins | Sibling products in the variant family |
variantCount | How many variants there are |
variantAttributes | What varies, such as size and colour |
category | The most specific category |
categories | The full breadcrumb path |
Specifications, pulled apart
Amazon names the same fact half a dozen ways depending on the page. Item Weight, Product Weight, Gewicht, Poids. You get one name for it.
| Field | What it holds |
|---|---|
specifications | Every row of every detail table, merged |
productFacts | Amazon's newer facts panel |
weight | Weight with its unit |
dimensions | Package or product dimensions |
colour | Colour |
material | Material |
unitCount | How many units in the pack |
firstAvailable | Date first available on Amazon |
countryOfOrigin | Country of origin |
warranty | Warranty description |
importantInformation | Safety and legal text, when present |
isClimatePledgeFriendly | The Climate Pledge Friendly badge |
A real row
One product from a real run, trimmed to the interesting parts:
asin B0DXXYS4BJtitle Roku Streaming Stick HD with Voice Remoteprice 29.99currency USDpriceSource buybox-datainStock truebrand Rokucategory Streaming Media Playersrating 4.6reviewCount 23344boughtInPastMonth 10000estimatedMonthlyRevenue 290000bestsellerRanks #6 in Electronics, and one moreimageCount 12variantCount 3deliveryInfo Saturday, August 29returnPolicy FREE Returns, return this item for free
Thirty-nine fields carried content on that product. Six of the sixty-four were empty because that page does not have a coupon, a deal badge, a used offer or a video.
You do not need the ASINs
Four ways in, and you can mix them in one run.
Product URLs or ASINs. Paste them in any shape: a bare ASIN, a full product URL with tracking parameters, a shortened link, even a spreadsheet cell that still says ASIN: B08N5WRWNW. Duplicates are removed, so you never pay twice for the same product.
Search terms. Type wireless keyboard and it walks the search results for you.
Category and bestseller links. Paste https://www.amazon.com/gp/bestsellers/electronics and it takes the products off the list.
Search result URLs. Paste a filtered search you built in your own browser and it continues from there.
Marketplaces
com co.uk de fr esit nl se pl com.trae sa in sg co.jpcom.au ca com.mx com.br
Set marketplace and the Actor follows it: the right domain, the right language headers, the right currency preference, and a proxy in the matching country when your plan has addresses there.
Input
| Field | What it does |
|---|---|
productUrls | ASINs or Amazon product URLs. Duplicates removed. |
search | Search terms, search URLs, category links, bestseller pages. |
marketplace | One of 19, from com to co.jp. |
proxyCountry | Leave empty and it follows the marketplace. |
maxItems | Hard ceiling on delivered products. Zero means no ceiling. |
maxItemsPerList | Products to take from each search or category link, up to 10000. |
maxListPages | Result pages to walk per list, up to 100. |
lanes | Products read at once, each on its own exit address. Eight by default, up to 24. Eight is the most accurate. Sixteen halves the run time and costs a few prices, because Amazon strips the buy box sooner when you push. |
maxAttempts | Attempts per product, each from a different address. Twelve by default. |
economical | Stops reading a page once the last field it needs has arrived. |
residentialFallback | Off by default. Retries through residential addresses after half the attempts have failed. |
minDelayMs, maxDelayMs | Pause between products, per lane. |
proxyConfiguration | Apify Proxy is on by default. Running without one gets you blocked after roughly 85 to 120 products. |
How it works, in plain terms
Every product is one page fetch. The Actor asks Amazon for the page, reads it, and writes one row.
Amazon refuses a large share of those requests, so each product gets up to twelve tries, every one of them from a different exit address. A refusal costs about four kilobytes, which makes retrying far cheaper than losing the product.
Addresses that get through are remembered for the rest of the run. The Actor keeps a small squad of proven ones, never uses the same address twice in a row, and drops an address after two refusals. That is the difference between a run that starts well and slowly dies, and a run that gets better as it goes.
Between requests it waits, and the wait grows when Amazon starts saying no more often. Politeness here is about pace per address, not about total speed, which is why running eight products at once through eight different addresses is gentler than one product at a time through one.
Anything still refused at the end goes into a second pass, at half speed, using the squad of proven addresses built up during the first pass. In five runs of sixty products, that second pass was needed once and rescued the product.
What you can build with it
Price monitoring. Run it on a schedule against a list of ASINs and write the rows to a sheet or a database. price, listPrice, savingsAmount and deliveryInfo are the fields that move.
Competitor tracking. Point it at a category or a search and watch which products enter and leave the top ranks, using bestsellerRanks and boughtInPastMonth.
Product research for private label. estimatedMonthlyRevenue, reviewCount, rating and otherSellersCount together tell you whether a niche is worth entering.
Catalogue building. gtin, modelNumber, weight, dimensions and specifications are what you need to list the same product somewhere else.
Repricing. price, otherSellersCount and isPrime are the inputs a repricer needs.
Feeding a language model. One row per product, consistent field names, no HTML, no marketing fluff.
Dropshipping and arbitrage. price, pricePerUnit, otherSellersCount, weight and dimensions are what you need to work out whether a product is worth sourcing and shipping.
Brand protection. Watch who else is selling your ASINs with otherSellersCount, and whether your listing still holds its bestsellerRanks.
Market sizing. Point it at a whole category, take estimatedMonthlyRevenue across every product, and you have a defensible number for how big that niche is.
Working it into your stack
Every run writes to an Apify dataset. From there you can:
Download it as CSV, JSON, Excel or XML from the run page, with one click.
Pull it through the Apify API, in any language, with the run id or the dataset id.
Send it onward automatically with Apify integrations: Google Sheets, Airtable, Slack, Zapier, Make, or a webhook to your own endpoint.
Schedule it. The Schedules tab runs this on a cron of your choosing, which is how most price monitoring is set up: once a day, one list of ASINs, one growing table of prices over time.
Call it from another Actor. This one is a normal Actor, so it can be a step inside a bigger pipeline you build.
Reading the run log
The log tells you what happened per product, in plain English:
6 product(s) on https://www.amazon.com (0 given, 6 found from lists)4/6 B0DGHMNQ5Z Apple AirPods 4 Wireless Earbuds 99 USD1/6 B08JHCVHTY delivered without a price after 12 attempts; not charged.Done: 5 charged (+1 delivered without a price, free), 0 refused by Amazon, 0 other.Exit addresses: 23 used, 3 proven good, 2 burned.Attempts by outcome: {"refused by Amazon":16,"page carried no buy box":7,"ok":5}
The last line is worth understanding. Refused by Amazon means an exit address was turned away and the product was tried again elsewhere. Page carried no buy box means the page arrived complete but without a price. Neither of those is charged for.
How it compares
| This Actor | The market leader | |
|---|---|---|
| Fields offered | 64 | 56 |
| Fields with content, measured on real runs | 58 | 41 |
| Price, currency, stock | every product | every product |
| Brand, category, rating, reviews | every product | every product |
| Bestseller rank, images, features | every product | every product |
| Units bought last month | every product | every product |
| Specifications | every product | 2 of 5 |
| Monthly sales and revenue estimate | yes | no |
| Discount percent and amount saved | yes | no |
| Price per unit, return policy, delivery | yes | partly |
| Weight, dimensions, model, GTIN, warranty | yes | no |
| Climate Pledge, A plus content, video count | yes | partly |
| Ratings and stock outside English | every marketplace | English wording only |
| Where the price came from | yes | no |
| Seller names, review text | never, by design | returned |
Those two top rows are not taken from anyone's description. They come from running both Actors and counting which fields actually arrived. The market leader offers 56 and left 15 of them empty on every product, including the return policy, the shipping price, the condition and the Amazon's Choice badge.
Its run failure rate over the last 30 days, from Apify's own numbers, is 12.2 percent.
Measured on sixty products it had never seen
Sixty products taken straight off three Amazon bestseller lists, none of them used while building this. Five runs across a working day:
60 asked for 60 delivered 0 blocked 57 priced60 asked for 60 delivered 0 blocked 57 priced60 asked for 60 delivered 0 blocked 56 priced60 asked for 60 delivered 0 blocked 57 priced60 asked for 59 delivered 0 blocked 49 priced
Delivery holds at 60 out of 60. Nothing was lost to a block in any of these runs. The one run that fell short was pushed to sixteen lanes on purpose, to find out what speed costs.
One thing changed since those runs and it belongs here rather than in a footnote. They were measured with the residential fallback on, and that setting now defaults to off, because it turned out to be roughly ninety percent of the bill for two extra products in sixty. Re-measured on 26 August 2026 with the current default: sixty products asked for, sixty delivered, fifty-three priced. Delivery held; the priced share is the thing that moves, and rows without a price are free.
On the last full run, 58 of the 64 fields carried content on at least one product, no price fell outside a possible range, no rating landed outside nought to five, and no product arrived without a title.
Run the same products twice and nothing moves except the things that really move: price, delivery date and bestseller rank. Title, brand, category, rating, review count, image, variants, list price and the badges were identical across runs, every time.
Blocking, and what actually helps
Amazon refuses roughly six in ten requests to a fresh datacenter address. That is normal and it is not a defect. What matters is what happens next.
Every product gets up to twelve attempts, each from a different exit address. A refused attempt costs about 4 kilobytes, so retrying is cheap insurance.
Addresses that work are remembered. The Actor keeps a small squad of proven addresses, never uses the same one twice in a row, and retires an address after two refusals.
Products that survive all that go into a second pass at the end of the run, at half the lane count, using the squad that has been built up in the meantime.
Pace adapts. When Amazon starts refusing more, the Actor slows down on its own.
Pricing
Eight dollars per 1000 products with a price, plus three cents to start a run.
You are not charged for a product that arrives without a price, and you are not charged for a product that never arrives. Platform usage is included, so there is nothing on top.
You can cap the spend of any single run. When the cap is reached the Actor stops cleanly instead of running up costs with nothing to show.
What it does not collect
No review text. No reviewer names. No customer questions and answers. No seller names that could belong to a person.
That is a design decision, not an oversight. Scraping personal data out of a public website is almost always a GDPR problem in Europe, and a purely commercial interest does not count as a legitimate one. An average score and a review count are product facts, not personal data, so you get those.
If you need review text, this is not the Actor for you, and you should think carefully about whether you need it.
Questions people ask
Does it work without an ASIN. Yes. Give it a search term, a category link or a bestseller page and it finds the products itself.
Can I export to CSV or Excel. Yes. Apify writes every run to a dataset you can download as CSV, JSON, Excel or XML, or pull through the API.
Can I run it on a schedule. Yes, from the Schedules tab in Apify. Price monitoring is the most common reason people do.
How many products can it handle in one run. There is no built-in ceiling. Set maxItems to zero, point it at a category, and it keeps going. Sixty products take about nine minutes at the default settings.
Why is a field empty. Because Amazon does not show it on that page. Coupons, deal badges, videos and used offers are on some product pages and not others. Every field that can be read is read.
Why does a product have no price. Either Amazon sent the page without a buy box, which happens often outside amazon.com, or the product genuinely has no price right now, such as a subscription plan or an app. Either way the row is delivered free.
Is my run charged if nothing is found. Only the three cent start fee. A search that returns nothing finishes as a successful, empty run.
Settings worth knowing about
Lanes. Eight products at once is the tested default and the most accurate. Sixteen finishes the same sixty products in about half the time and returns a few more products without a price, because Amazon strips the buy box sooner when you push. Twenty-four is the ceiling. If you raise lanes for a large job, raise the run memory with it.
Attempts. Twelve per product by default. Lowering it makes runs cheaper and loses products; raising it rarely helps, because a product that fails twelve different addresses is usually a page Amazon will not serve today.
Residential fallback. Off by default. After half the attempts on a product have failed, it retries through residential addresses instead of datacenter ones. Measured 2026-08-26 on two sixty-product runs of the same list: with it on, 53 products came back priced for $0.1192 of platform usage; with it off, 51 came back priced for $0.0205. Residential transfer was ninety percent of the bill and bought two products. Turn it on when a marketplace is refusing everything, and leave it off the rest of the time.
Economical mode. Off by default. When on, the Actor stops downloading a page as soon as the last field it needs has arrived, and loses the fields that sit late in the page, mostly ratings and review counts. Measured 2026-08-26 across three pairs of runs, the bandwidth it saves ranged from 18 percent to minus 6 percent, so treat it as a way to drop late fields rather than as a saving. Hanging up mid-page produces aborted connections that come back as retries, and a retry downloads the whole page again.
Proxy country. Leave it empty and it follows the marketplace. Setting it by hand is only useful when you want prices as they appear to a shopper in a specific country.
Maximum cost per run. Set by you, honoured by the Actor. When the cap is reached it stops cleanly, mid-run, rather than continuing to spend.
Legal note
This Actor reads pages that are public and takes only product facts. Product data, prices, availability and aggregate ratings are business information about an item, not information about a person.
You are responsible for what you do with the output. Check Amazon's terms for your own use case, and if you are in Europe, keep in mind that combining public data into a profile of a person is a different activity from tracking the price of a lamp.