Amazon Product Scraper: Prices, Stock, BSR & 64 Fields avatar

Amazon Product Scraper: Prices, Stock, BSR & 64 Fields

Pricing

from $8.00 / 1,000 product with prices

Go to Apify Store
Amazon Product Scraper: Prices, Stock, BSR & 64 Fields

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

Amazon Scrapers

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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:

MarketplaceProducts priced
amazon.com57 of 60
amazon.co.uk5 of 6
amazon.ca5 of 5
amazon.fr4 of 5
amazon.it1 of 5
amazon.es1 of 5
amazon.de0 of 8
amazon.com.au0 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

FieldWhat it holds
priceCurrent price from Amazon's own buy box data
listPriceThe struck-through price, when Amazon shows one
savingsAmountHow much is off in money
discountPercentHow much is off as a percentage
currencyThree-letter code, from the page itself
pricePerUnitPrice per count, ounce, litre, whatever Amazon uses
priceSourceWhere the price came from, so you can audit it
isDiscountedWhether it is currently below list price
couponThe clip-coupon text, when there is one
dealBadgeLightning deal, limited time deal, and similar
hasSubscribeAndSaveWhether a subscription price exists
hasUsedOfferWhether a used copy is offered
isRefurbishedRenewed and refurbished listings
otherSellersCountHow many other sellers offer it

Demand and rank

FieldWhat it holds
boughtInPastMonthUnits bought last month as a number
boughtInPastMonthTextAmazon's own wording, such as 10K+ bought in past month
estimatedMonthlySalesUnits, derived from the line above
estimatedMonthlyRevenueUnits times price
bestsellerRanksEvery rank with its category, not just the first
isBestSellerThe orange best seller badge
isAmazonChoiceThe Amazon's Choice badge
ratingAverage stars, read in every shop language
reviewCountHow many ratings, as a number

Stock and delivery

FieldWhat it holds
inStockTrue, false, or null when Amazon does not say
availabilityAmazon's own availability sentence
stockLeftOnly three left in stock, when shown
deliveryInfoThe delivery date Amazon promises
returnPolicyThe return terms in full
isPrimePrime delivery on this offer

Identity and catalogue

FieldWhat it holds
asinThe product id
parentAsinThe parent listing, for variant families
titleFull product title, shortened only past 1000 characters
brandBrand name
manufacturerManufacturer, when different from brand
modelNumberModel number
partNumberManufacturer part number
gtinGTIN, EAN or UPC
marketplaceWhich shop this row came from
urlThe page this was read from
scrapedAtTimestamp of the read

Description, media and variants

FieldWhat it holds
descriptionThe product description under the fold, as plain text
featuresThe bullet points at the top
imageMain image at the largest size Amazon offers
imagesEvery gallery image, largest version first
imageCountHow many images there are
videoCountHow many videos are on the page
hasAPlusContentWhether the brand added enhanced content
variantAsinsSibling products in the variant family
variantCountHow many variants there are
variantAttributesWhat varies, such as size and colour
categoryThe most specific category
categoriesThe 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.

FieldWhat it holds
specificationsEvery row of every detail table, merged
productFactsAmazon's newer facts panel
weightWeight with its unit
dimensionsPackage or product dimensions
colourColour
materialMaterial
unitCountHow many units in the pack
firstAvailableDate first available on Amazon
countryOfOriginCountry of origin
warrantyWarranty description
importantInformationSafety and legal text, when present
isClimatePledgeFriendlyThe Climate Pledge Friendly badge

A real row

One product from a real run, trimmed to the interesting parts:

asin B0DXXYS4BJ
title Roku Streaming Stick HD with Voice Remote
price 29.99
currency USD
priceSource buybox-data
inStock true
brand Roku
category Streaming Media Players
rating 4.6
reviewCount 23344
boughtInPastMonth 10000
estimatedMonthlyRevenue 290000
bestsellerRanks #6 in Electronics, and one more
imageCount 12
variantCount 3
deliveryInfo Saturday, August 29
returnPolicy 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 es
it nl se pl com.tr
ae sa in sg co.jp
com.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

FieldWhat it does
productUrlsASINs or Amazon product URLs. Duplicates removed.
searchSearch terms, search URLs, category links, bestseller pages.
marketplaceOne of 19, from com to co.jp.
proxyCountryLeave empty and it follows the marketplace.
maxItemsHard ceiling on delivered products. Zero means no ceiling.
maxItemsPerListProducts to take from each search or category link, up to 10000.
maxListPagesResult pages to walk per list, up to 100.
lanesProducts 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.
maxAttemptsAttempts per product, each from a different address. Twelve by default.
economicalStops reading a page once the last field it needs has arrived.
residentialFallbackOff by default. Retries through residential addresses after half the attempts have failed.
minDelayMs, maxDelayMsPause between products, per lane.
proxyConfigurationApify 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 USD
1/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 ActorThe market leader
Fields offered6456
Fields with content, measured on real runs5841
Price, currency, stockevery productevery product
Brand, category, rating, reviewsevery productevery product
Bestseller rank, images, featuresevery productevery product
Units bought last monthevery productevery product
Specificationsevery product2 of 5
Monthly sales and revenue estimateyesno
Discount percent and amount savedyesno
Price per unit, return policy, deliveryyespartly
Weight, dimensions, model, GTIN, warrantyyesno
Climate Pledge, A plus content, video countyespartly
Ratings and stock outside Englishevery marketplaceEnglish wording only
Where the price came fromyesno
Seller names, review textnever, by designreturned

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 priced
60 asked for 60 delivered 0 blocked 57 priced
60 asked for 60 delivered 0 blocked 56 priced
60 asked for 60 delivered 0 blocked 57 priced
60 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.

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.