Amazon Review Scraper - Public Reviews & Star Histogram
Pricing
from $6.00 / 1,000 reviews
Amazon Review Scraper - Public Reviews & Star Histogram
Extracts the reviews Amazon shows publicly on a product page - typically 10-15 per ASIN - with rating, full text, verified flag, reviewer, date and helpful votes, plus the star histogram and aggregate rating. No login needed. Bulk review history requires an authenticated session (self-hosted).
Pricing
from $6.00 / 1,000 reviews
Rating
0.0
(0)
Developer
Renzo Madueno
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Amazon Review Scraper — Ratings, Text, Verified, by ASIN
Extract real Amazon customer reviews for any product by ASIN. Returns one row per review with the star rating, title, full review text, verified-purchase flag, reviewer name and profile, date, helpful-vote count, product variant, and country.
Built on the same battle-tested HTTP + proxy + session-rotation stack as the Amazon Product Scraper.
How many reviews you actually get (read this first)
Amazon now requires sign-in for the full review pages. Requesting
https://www.amazon.com/product-reviews/<ASIN> without a session returns a page with
zero reviews and a sign-in redirect, and the old
/hz/reviews-render/ajax/reviews/get/ endpoint needs valid session cookies plus a
page-scoped CSRF token. The only reviews Amazon publishes to logged-out clients are the
~13 embedded on the product page — verified across many ASINs, it is consistently 13.
So, honestly:
| Mode | Reviews per ASIN | What else you get | Requirement |
|---|---|---|---|
fast (default) | ~13 | aggregate rating, total ratings, star histogram, "Customers say" AI summary | none |
deep | up to ~100 per star filter | same | your own Amazon session cookie in amazonCookies |
maxReviewsPerAsin is capped at 100 and defaults to 13 for this reason. Setting it
higher in fast mode will not produce more reviews — no scraper can, the data is not
public — and the run logs an ANON_CEILING warning saying so instead of silently
returning fewer than you asked for.
Billing: this actor is pay-per-event and every result row is charged. If an ASIN is
delisted, blocked or gated so that nothing public can be read, the actor pushes no
item at all for it (logged as NO_BILLABLE_OUTPUT), so you are never charged for an
empty row.
What you get (one item per review)
| Field | Description |
|---|---|
asin | The product ASIN the review belongs to |
reviewId | Amazon's review id (e.g. R2ABC123XYZ) |
title | Review headline |
rating | Star rating as a number (1–5) |
body | Full review text, plain text |
date | ISO 8601 date when parseable |
dateRaw | Original Amazon date string (e.g. Reviewed in the United States on March 5, 2024) |
verifiedPurchase | true if the "Verified Purchase" badge is present |
reviewerName | Display name of the reviewer |
reviewerProfileUrl | Link to the reviewer's profile (when available) |
helpfulVotes | Number of "found this helpful" votes (integer or null) |
foundHelpfulText | Raw helpful-vote text |
variant | Purchased variant, e.g. Color: Black (when shown) |
country | Country the review was written in |
source, marketplace, productUrl, scrapedAt | Provenance metadata |
Plus one ASIN-level summary row per product
In addition to the per-review rows, the actor emits one summary item per ASIN (type: "asin_summary") carrying product-wide signal that Amazon shows anonymously on the product page:
| Field | Description |
|---|---|
type | Always "asin_summary" (review rows have no type field) |
asin | The product ASIN |
aggregateRating | Average star rating across all ratings (e.g. 4.2) |
totalRatings | Total number of ratings on the listing (e.g. 60175) |
ratingHistogram | Star distribution as percentages, e.g. { "fiveStar": 69, "fourStar": 12, "threeStar": 5, "twoStar": 3, "oneStar": 11 } |
customersSay | Amazon's AI review summary + most-mentioned aspects (see below), or null if absent |
reviewsCount | How many individual review rows this run scraped for the ASIN |
customersSay shape:
{"summary": "Customers find the iPhone in excellent condition, working like new... battery life and durability receive mixed reviews...","aspects": [{ "name": "Quality", "sentiment": "positive", "mentions": "1.8K" },{ "name": "Battery life", "sentiment": "mixed", "mentions": "2K" },{ "name": "Durability", "sentiment": "negative", "mentions": "591" }]}
sentiment is one of positive / mixed / negative. If a product has no "Customers say" widget, customersSay is null (never an error).
Input
{"asins": ["B00FLYWNYQ", "https://www.amazon.com/dp/0735211299"],"marketplace": "amazon.com","maxReviewsPerAsin": 13,"sortBy": "recent","filterByStar": "all","reviewDepth": "fast"}
| Field | Type | Default | Notes |
|---|---|---|---|
asins | array of strings | required | ASINs (B00FLYWNYQ) or full product URLs — the ASIN is auto-extracted. |
marketplace | enum | amazon.com | amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.ca, amazon.com.au, amazon.co.jp, amazon.in, amazon.com.mx, amazon.com.br |
maxReviewsPerAsin | integer | 13 | Upper bound per ASIN. Anonymously the real ceiling is ~13 (see How many reviews you actually get below); values above 13 only take effect with reviewDepth: "deep" + your own cookie. Max accepted: 100. |
reviewDepth | enum | fast | fast = anonymous route (~13 reviews/ASIN + aggregate rating + "Customers say"). deep = paginate past that ceiling using your own Amazon cookie. See Review depth below. |
sortBy | enum | recent | recent or helpful. |
filterByStar | enum | all | all, five_star … one_star, positive, critical. |
amazonCookies | string (secret) | empty | Optional. Your own logged-in Amazon Cookie header. Unlocks deep pagination (up to ~100/ASIN per star filter). Empty = free anonymous route (~13/ASIN). See BYO-cookie section below. |
Example output
{"asin": "B00FLYWNYQ","reviewId": "R2ABC123XYZ","title": "Excellent battery life","rating": 5,"body": "Works great, sound is clear and setup was easy. Highly recommend.","date": "2024-03-05T00:00:00.000Z","dateRaw": "Reviewed in the United States on March 5, 2024","verifiedPurchase": true,"reviewerName": "Jane D.","reviewerProfileUrl": "https://www.amazon.com/gp/profile/amzn1.account.ABC","helpfulVotes": 12,"foundHelpfulText": "12 people found this helpful","variant": "Color: Black","country": "United States","source": "product-page","marketplace": "amazon.com","productUrl": "https://www.amazon.com/dp/B00FLYWNYQ","scrapedAt": "2026-06-07T00:00:00.000Z"}
Important: Amazon's anonymous-review ceiling (real limits, 2026)
Amazon limits how many reviews can be read without logging in. As of 2026 the dedicated /product-reviews/ page is a hard sign-in wall for anonymous traffic, so the anonymous (fast) route returns the recent, featured review "medley" embedded on the product page — typically about 10–20 reviews per ASIN, fully populated (rating, title, body, verified, reviewer, date, helpful votes, variant), together with the aggregate rating and Amazon's "Customers say" AI summary.
This is honest and deterministic: the fast route does not return a product's entire review history. It returns the reviews Amazon surfaces publicly without a login. When Amazon gates further pages the actor stops cleanly and records a warning — it never fabricates data and never crashes.
To read more than the public medley, use reviewDepth="deep" with your own Amazon cookie (next section).
Review depth — fast vs deep
fast(default) — anonymous scraper. Returns the ~13 reviews Amazon embeds on the product page plus the aggregate rating and "Customers say" AI summary. No login, no extra setup, fully deterministic.deep— pages past the anonymous ceiling (up to ~100 reviews per ASIN per star filter) by reusing your own logged-in Amazon session cookie. This is self-hosted: there are no paid third-party services involved. You supply your cookie inamazonCookies; the actor reads the page-scoped CSRF token and paginates Amazon's ownmedley-filtered-reviewsendpoint, mapping every review into this actor's exact output schema (source: "product-reviews-ajax").- No cookie +
deep→ the run records aDEEP_NO_COOKIEwarning and falls back to thefastroute for all ASINs. It never crashes.
- No cookie +
Unlock more reviews per ASIN — Bring Your Own Cookie (BYO-cookie)
To page past the public medley you must request as a logged-in Amazon session. Paste your own Amazon session cookies into the optional amazonCookies input (and set reviewDepth="deep"). The actor reads the page-scoped reviewsCsrfToken from /dp/, then pages medley-filtered-reviews/get across every star bucket (5★→1★), deduping by review id, up to maxReviewsPerAsin.
How to get your cookie (3 steps)
- Log in to https://www.amazon.com in Chrome. This is your own session — use a throwaway account, never your primary login.
- Open DevTools (F12) → Application tab → Storage → Cookies → https://www.amazon.com. Copy these cookie name=value pairs and join them with
;into one line:at-main,sess-at-main,session-id,session-id-time,session-token,ubid-main,x-main(optional:lc-main,i18n-prefs)
- Paste the resulting string into the
amazonCookiesfield and setreviewDepthtodeep, e.g.:
You can also paste the entiresession-id=131-1234567-...; ubid-main=133-...; x-main=Atza|...; at-main=Atza|...; sess-at-main="..."; session-token=...; session-id-time=...Cookie:request header straight from DevTools → Network → any amazon.com request → Request Headers → Cookie; the actor parses it as-is.
Behavior & limits
- Valid cookie → paginated AJAX, up to ~100 reviews per ASIN per star filter (bounded by
maxReviewsPerAsin).route: cookie-ajaxin the summary. - Expired/rejected cookie → the run records a
COOKIE_EXPIREDwarning and falls back to the anonymous medley for that ASIN (no crash). Re-export fresh cookies and re-run. - Cookies are session-scoped (they expire — typically days to weeks). The
amazonCookiesfield is stored as a secret input and is your own session, never shared. - IP soft-block vs. dead cookie are handled separately. If Amazon serves a
404/"Page Not Found" to a flagged residential IP (even with a perfectly valid cookie), the actor rotates to a fresh residential IP up to 4× before giving up, then falls back to the anonymous route — it does not mislabel the cookie as expired. A genuine sign-in wall is what triggersCOOKIE_EXPIRED.
Robustness
- No reviews / invalid ASIN → the run succeeds with a
NO_REVIEWSwarning (recorded under theWARNINGSkey in the run's key-value store). No junk rows. - CAPTCHA / soft block → the session is retired and the request is retried on a fresh proxy IP. If every ASIN is blocked, the run fails with an actionable
BLOCKEDerror and aFAILURESrecord. - Partial results → ASINs that succeed still return data even if others are gated or blocked.
- Run summary → a
SUMMARYrecord (per-ASIN extracted count, pages, blocked/gated flags) is written to the key-value store on every run.
Tips
- Start with
sortBy: "recent"to get the freshest signal, orhelpfulfor the most-voted reviews. - Use
filterByStar: "critical"to pull only 1–3★ reviews for complaint mining, orpositivefor testimonials. - Lower
maxConcurrency(1–2) if you see blocks on large batches.