Amazon Reviews Scraper API
Pricing
from $10.00 / 1,000 products
Amazon Reviews Scraper API
Scrape Amazon product reviews with correct ratings, publish dates and verified-purchase status, plus Amazon's own aspect sentiment. Priced per product, not per review.
Pricing
from $10.00 / 1,000 products
Rating
0.0
(0)
Developer
Shakamize
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Extracts Amazon customer reviews with the fields other scrapers get wrong: the rating the reviewer actually gave, the day the review was published, whether it was a verified purchase, which product variant it was written against, and how many people found it helpful.
Alongside the reviews it returns Amazon's own analysis of all of a product's reviews, which no other Amazon reviews scraper returns: the star histogram, the "Customers say" summary, and a per-aspect sentiment breakdown with mention counts, a positive and negative split, and quoted evidence.
Priced per product, not per review, so a run's cost is arithmetic you can do before you start it.
How many Amazon reviews you can actually scrape, and why it is not 500
Read this before you compare us to anything else on the store.
Since late 2025, Amazon has required a signed-in account to see a product's full review list. Every route that used to serve filtered, sorted or paginated reviews now answers a signed-out client with a sign-in page:
| Route | What a signed-out client gets |
|---|---|
/product-reviews/<ASIN> | sign-in page |
/portal/customer-reviews/<ASIN> | sign-in page |
/gp/aw/cr/<ASIN> | sign-in page |
/hz/reviews-render/ajax/reviews/get/ | HTTP 403 |
?filterByStar=, ?sortBy=, ?pageNumber= on a product page | ignored |
Measured on 2026-08-28 from a plain browser and through residential proxies in several countries, including amazon.co.jp.
What is left is the review block on the product page itself. Measured across products in unrelated categories, that block is 8 to 20 full reviews for a product with meaningful review volume, and fewer for a product with only a handful of ratings. It is deterministic - the same reviews on every request - and shared across a product's variants, so fetching a variant does not add any. There is no page two.
So: no scraper without an Amazon login can return 500 reviews for a product, and one that promises to cannot deliver it. The incumbents' own issue trackers record when this landed on them, in their users' words:
- 2025-11-20: "now it can only crawl 8 reviews for any product"
- 2026-03-03: "Amazon reviews scraper is now only returning 8 reviews, previously it returned 100"
- 2026-03-07: "Actor returns only 8 reviews despite maxReviews=500"
We chose to say this on the listing rather than let you discover it after paying, and to make the most of what is reachable instead.
Scraping more Amazon reviews than the product page shows
Amazon's review-insights widget quotes reviews as evidence for each aspect, and links each quote to its review. Those reviews are mostly not in the rendered block, so the excerpts are the only text from them a signed-out client can reach. Measured over six products in unrelated categories:
| Per product | Reviews reached |
|---|---|
| Full reviews on the page | 13 |
| Aspect-linked excerpts beyond it | ~31 |
| Distinct reviews reached | ~44 |
Excerpts are returned as excerpts, on the aspect they belong to, never mixed in with full reviews.
Amazon review data you get back: ratings, dates and verified purchase
Two kinds of record.
One record per Amazon review
{"reviewId": "R1RLJMX8S5STRH","url": "https://www.amazon.com/portal/customer-reviews/srp/-/R1RLJMX8S5STRH","asin": "B088NMR44C","productAsin": "B088NRLMPV","productTitle": "Anker USB C to USB C Cable, 60W Fast Charging Cable (2-Pack, 6 ft, Black)","ratingScore": 5,"title": "Reliable cable with fast charging and excellent durability","text": "I've bought several Anker cables over the years, and this one lives up to the brand's reputation...","date": "2026-07-29","dateText": "Reviewed in the United States on July 29, 2026","country": "US","isVerifiedPurchase": true,"isVineVoice": false,"helpfulVotes": 6,"variantAttributes": [{ "key": "Size", "value": "3.3FT*2" },{ "key": "Color", "value": "Black" },{ "key": "Number of Items", "value": "2" }],"imageUrls": [],"reviewer": null,"language": "en-US","countryCode": "US"}
Star histogram, "Customers say" and Amazon aspect sentiment
One summary record per product, carrying what Amazon computed over every review the product has:
{"type": "productSummary","asin": "B088NRLMPV","productTitle": "Anker USB C to USB C Cable, 60W Fast Charging Cable (2-Pack, 6 ft, Black)","brand": "Anker","ratingScore": 4.7,"ratingsCount": 87397,"reviewsReturned": 13,"starsBreakdown": { "5star": 0.87, "4star": 0.08, "3star": 0.02, "2star": 0.01, "1star": 0.02 },"customersSay": "Customers find the USB C cable to be well-made and functional, with good length and flexibility...","aspects": [{"aspect": "Quality","sentiment": "positive","mentions": 5692,"positive": 5126,"negative": 566,"summary": "Customers find the cable to be of good quality and well-made.","quotes": [{"reviewId": "R193O3CSMLKQLB","text": "Good quality. I use these for charging my phone at home, off a computer, in the car."}]}]}
Tell them apart by the type field: review records do not have one.
Correctness: review ratings, publish dates and variant attribution
Each of these is a defect reported against an actor currently on the store.
ratingScore is the rating the reviewer gave. It is read from the rating's
own text, not from the CSS class, which is rounded to whole stars.
Every review is dated. date is an ISO day and dateText keeps Amazon's own
wording beside it. Dates are parsed from the marketplace language, so
Bewertet in Deutschland am 24. Juni 2026 becomes 2026-06-24. Amazon publishes
day resolution and never a time, so neither do we.
A review is attributed to the variant it was written for. On a parent
listing, two thirds of reviews are written against a specific variant, and asin
says which while productAsin says which page it came from. Reporting the page's
ASIN for all of them is how the same review ends up filed under several products.
Reviews from other Amazon storefronts are labelled. Amazon mixes them into
the same list without a heading; on amazon.com about a third of the block is from
elsewhere. country says where each one was written.
Helpful votes are never silently lost. Amazon writes the singular without a digit, "One person found this helpful", which a number parser reads as nothing. That is one vote, not no evidence.
The review body is the review. Amazon wraps it in screen-reader text ("Brief content visible, double tap to read full content") that a naive read glues onto every review.
The star histogram is null rather than five zeros when Amazon has too few ratings to break one down, because five zeros claims a measurement nobody made.
How to filter Amazon reviews by star rating, date and verified purchase
| Input | What it does |
|---|---|
productUrls | Product URLs or bare ASINs. Several per run, and every one is scraped. |
maxReviewsPerProduct | Cap reviews kept per product. Empty means everything Amazon publishes. |
filterByRatings | Keep only these star ratings. |
verifiedPurchaseOnly | Keep only badged verified purchases. |
reviewsCutoffDate | 2026-01-15, or 30 days / 6 months / 1 year. |
sort | Amazon's own top-reviews order, most recent, or by rating. |
includeAspectSentiment | Amazon's aspect breakdown. On by default. |
includeReviewerProfile | Reviewer name and profile id. Off by default; see Legal. |
countryCode | Which of 23 Amazon storefronts to read. |
language | Ask Amazon for the page in a given language. |
proxyConfiguration | Residential is effectively required. |
Filtering and sorting run over the reviews Amazon publishes. They do not fetch more, because there is no more to fetch. A star filter here narrows a block of about a dozen; it does not reach Amazon's own one-star page, which is behind the sign-in described above. Actors that imply otherwise carry issues titled "Filter by stars doesnt work" and "Start date and end date not working".
A review whose date could not be parsed is kept by a date filter rather than dropped, so a parsing failure never quietly narrows your results.
Pricing: pay per product, not per Amazon review
One event: $0.012 per product. Everything that product yields is included - its reviews, the rating breakdown, the aspect sentiment and the quoted evidence.
A run costs products x $0.012, and you can work that out before starting it.
Charging per review, as the rest of this niche does, quotes a price against a
count nobody can predict; at $3.00 per 1,000 reviews and roughly a dozen reviews
per product, the same product costs about $0.03 elsewhere, plus a minimum
permitted charge of $0.50 per run.
A product with no reviews still costs $0.012, because the page was still
fetched, and you get an honest no_reviews_found record rather than silence.
A product Amazon serves without its review block is different, and is not charged. A listing reporting thousands of ratings always renders reviews, so a page that arrives with none is an incomplete page rather than an answer: it is retried on fresh sessions, and if it keeps coming back that way you get an error record saying so and pay nothing for it.
Supported Amazon marketplaces, 23 storefronts
amazon.com, .ca, .com.mx, .com.br, .co.uk, .ie, .de, .fr, .it,
.es, .nl, .com.be, .se, .pl, .com.tr, .ae, .sa, .eg, .in,
.co.jp, .sg, .com.au, .co.za.
Review dates, helpful-vote counts and aspect mention counts are parsed in the
marketplace's own language and number format, so a German run reads
1.234 Personen as 1,234 rather than as 1.234.
Proxies for scraping Amazon reviews without being blocked
Amazon serves an anti-bot interstitial to unproxied clients, so Apify Proxy with
the RESIDENTIAL group is the default and is effectively required. The exit
country defaults to the marketplace's own country.
Errors: products with no reviews, 404s and blocked pages
Failures are pushed to the dataset rather than swallowed, so a partial run can be
reconciled against what you asked for. Error records carry an error field;
normal records never do.
{"error": "no_reviews_found","errorDescription": "Amazon renders no reviews on this product page.","input": "https://www.amazon.com/dp/B0XXXXXXXX","url": "https://www.amazon.com/dp/B0XXXXXXXX"}
error | Meaning |
|---|---|
product_not_found | The product URL returns a 404 page. |
no_reviews_found | The product exists and Amazon publishes no reviews for it, or none matched your filters. Also used when Amazon served the page without its review block despite the product having ratings, in which case the run is not charged for it. |
request_failed | The page could not be fetched after retries. |
blocked | Amazon served an anti-bot page. |
invalid_url | A start URL was not an Amazon URL or ASIN. |
Legal and GDPR: reviewer names are personal data
Product ratings, review text and helpful-vote counts are publicly available data.
A reviewer's name and profile id are personal data, protected by GDPR in the
EU and by comparable rules elsewhere. They are off by default; enable
includeReviewerProfile only if you have a legitimate reason to hold them.
Amazon's terms prohibit automated access. Use this where you are entitled to.
Telemetry
The actor reports run health to its maintainer: error codes, the build number, the marketplace domain, and per-field counts of how often a value was found.
When requests fail, it also sends a small, capped sample of the failures themselves, so that a broken run can be diagnosed and fixed: the Amazon URL that was requested, the HTTP status code that came back, and the error with its stack trace. That URL is the page you asked for, query string included. It is not personal data, but it is your input, and this section says so rather than leave you to find out.
Your other input settings, your proxy configuration, and the scraped content itself are never sent. Nothing at all is sent when a run is healthy.