reviewId, keep only verified == true when you care about authenticity, and dedupe before you count anything — or every chart you build will be wrong by 30 to 60 percent.The endpoint everyone looks for is gone
The first thing people do is search for "Amazon reviews API". The honest answer is that one used to exist and now doesn't. The old Product Advertising API returned a tiny iframe with a handful of reviews until roughly 2017, then dropped reviews entirely. Today the PA-API gives you price, title, images and availability — and nothing about what customers wrote.
So every "Amazon reviews API" you find is really a scraper wearing an API coat: it loads the public /product-reviews/<ASIN>/ pages, parses the DOM, rotates through residential proxies so Amazon doesn't serve a CAPTCHA, and hands you JSON. That's a perfectly good approach — it just means you should understand the shape of the data instead of trusting a clean-looking schema.
What a single review actually contains
A review is richer than "five stars, nice product". Here are the fields that carry real signal, and what each one is good for once you stop treating reviews as a star average.
| Field | Example | Why it matters |
|---|---|---|
reviewId | R2X8K1... | The only stable key. Dedupe on this, never on text. |
rating | 4 | 1–5. The headline, but the least interesting number. |
title | "Great until it wasn't" | Compresses the whole review into one sortable line. |
verified | true | "Verified Purchase" badge. Your strongest anti-fake filter. |
variant | "Color: Black, Size: L" | Tells you which SKU broke, not just which product. |
helpfulVotes | 37 | Crowd-weighted importance. Sort by this to find the review buyers actually read. |
date / country | "Reviewed in the US on March 4, 2026" | Lets you trend sentiment and isolate a region or a bad batch. |
The two fields most people skip are variant and helpfulVotes, and they're exactly the two that turn a review dump into a decision. Variant tells you it's the black, large unit failing, not the product. Helpful votes let you ignore the 800 five-word reviews and read the 12 that buyers themselves voted to the top.
Filtering: star buckets and keyword slices
Amazon's own UI lets you filter by star, and a good scraper exposes the same. Two filters do most of the work:
- Star bucket. Pull the 1- and 2-star reviews on a product to mine complaints; pull 5-star to mine the language customers use when they're happy (gold for ad copy).
- Keyword. Restrict to reviews mentioning
battery,leak,sizing— whatever failure mode you're hunting — instead of reading thousands of rows.
A run that grabs only the negative reviews for a competitor's best-seller looks like this. Note that the heavy lifting — pagination, proxy rotation, CAPTCHA — is hidden behind one call:
curl -X POST "https://api.apify.com/v2/acts/renzomacar~amazon-reviews/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"asins": ["B0CXYZ1234"],
"filterByStar": "critical",
"maxReviews": 300,
"country": "US"
}'
The critical star filter is Amazon's own bucket for 1–2 star reviews; positive is the 4–5 mirror. Cap maxReviews deliberately — a popular ASIN can have 80,000 reviews and you almost never need more than the most recent few hundred per star bucket to see the pattern.
reviewId. Teams that skip this routinely overcount review volume by 30–60% and then wonder why their sentiment trend is flat.Worked example: voice-of-customer in three passes
Say you sell a competing kitchen gadget and want to know why the category leader is slipping. Here's a workflow that turns raw reviews into a one-page brief.
Collect, then dedupe
Pull the last 500 verified reviews per star bucket for the top three competing ASINs. Drop everything where verified == false, then dedupe on reviewId. You'll typically lose 20–40% of rows here — that's the trap working as intended.
Bucket by failure mode, not by star
Run the review text through a keyword pass (leak, seal, motor, cheap plastic) and tag each review. Now you can say "23% of 1-star reviews since January mention the seal" — a sentence a product team can act on, unlike "average dropped to 3.9".
Mine the 5-star language for copy
Flip to the positive bucket and pull the exact phrases buyers use when delighted. "Finally one that doesn't" and "worth every penny" are not insights — they're your next ad headlines, written by the customer.
On sentiment scoring
You can feed the deduped text to any sentiment model, but resist reducing it to a single "sentiment: 0.62" number. A 4-star review that says "love it, but the lid cracked in a month" is positive and a product defect report. Tag at the sentence level, keep the variant attached, and you'll catch the cracked lid before it becomes a 2-star avalanche.
Skip the parser, keep the data
Our maintained Amazon Reviews Actor handles pagination, proxy rotation and CAPTCHA, and returns deduped reviews with the verified flag, variant and helpful votes already parsed. Free Apify credits to start.
Run the Amazon Reviews Actor → Or get done-for-you leadsA note on scale and politeness
Reviews are public, but they're not infinite-and-free to pull. Each star bucket is a separate pagination tree, and Amazon throttles aggressively from datacenter IPs. If you're tracking a catalog over time, scrape incrementally — pull only reviews newer than your last date high-water mark — rather than re-downloading 80,000 reviews nightly. It's cheaper, it's faster, and it's a lot less likely to earn you a CAPTCHA wall.
Disclosure: links to Apify on this page are affiliate links, marked rel="sponsored". If you create a paid account through them we may earn a commission at no extra cost to you. We recommend Apify because we build and ship Actors on it ourselves, including the Amazon Reviews Actor linked above.