Amazon Review Scraper - Public Reviews & Star Histogram avatar

Amazon Review Scraper - Public Reviews & Star Histogram

Pricing

from $6.00 / 1,000 reviews

Go to Apify Store
Amazon Review Scraper - Public Reviews & Star Histogram

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

Renzo Madueno

Maintained by Community

Actor 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:

ModeReviews per ASINWhat else you getRequirement
fast (default)~13aggregate rating, total ratings, star histogram, "Customers say" AI summarynone
deepup to ~100 per star filtersameyour 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)

FieldDescription
asinThe product ASIN the review belongs to
reviewIdAmazon's review id (e.g. R2ABC123XYZ)
titleReview headline
ratingStar rating as a number (1–5)
bodyFull review text, plain text
dateISO 8601 date when parseable
dateRawOriginal Amazon date string (e.g. Reviewed in the United States on March 5, 2024)
verifiedPurchasetrue if the "Verified Purchase" badge is present
reviewerNameDisplay name of the reviewer
reviewerProfileUrlLink to the reviewer's profile (when available)
helpfulVotesNumber of "found this helpful" votes (integer or null)
foundHelpfulTextRaw helpful-vote text
variantPurchased variant, e.g. Color: Black (when shown)
countryCountry the review was written in
source, marketplace, productUrl, scrapedAtProvenance 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:

FieldDescription
typeAlways "asin_summary" (review rows have no type field)
asinThe product ASIN
aggregateRatingAverage star rating across all ratings (e.g. 4.2)
totalRatingsTotal number of ratings on the listing (e.g. 60175)
ratingHistogramStar distribution as percentages, e.g. { "fiveStar": 69, "fourStar": 12, "threeStar": 5, "twoStar": 3, "oneStar": 11 }
customersSayAmazon's AI review summary + most-mentioned aspects (see below), or null if absent
reviewsCountHow 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"
}
FieldTypeDefaultNotes
asinsarray of stringsrequiredASINs (B00FLYWNYQ) or full product URLs — the ASIN is auto-extracted.
marketplaceenumamazon.comamazon.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
maxReviewsPerAsininteger13Upper 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.
reviewDepthenumfastfast = anonymous route (~13 reviews/ASIN + aggregate rating + "Customers say"). deep = paginate past that ceiling using your own Amazon cookie. See Review depth below.
sortByenumrecentrecent or helpful.
filterByStarenumallall, five_starone_star, positive, critical.
amazonCookiesstring (secret)emptyOptional. 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 in amazonCookies; the actor reads the page-scoped CSRF token and paginates Amazon's own medley-filtered-reviews endpoint, mapping every review into this actor's exact output schema (source: "product-reviews-ajax").
    • No cookie + deep → the run records a DEEP_NO_COOKIE warning and falls back to the fast route for all ASINs. It never crashes.

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.

  1. Log in to https://www.amazon.com in Chrome. This is your own session — use a throwaway account, never your primary login.
  2. 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)
  3. Paste the resulting string into the amazonCookies field and set reviewDepth to deep, e.g.:
    session-id=131-1234567-...; ubid-main=133-...; x-main=Atza|...; at-main=Atza|...; sess-at-main="..."; session-token=...; session-id-time=...
    You can also paste the entire 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-ajax in the summary.
  • Expired/rejected cookie → the run records a COOKIE_EXPIRED warning 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 amazonCookies field 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 triggers COOKIE_EXPIRED.

Robustness

  • No reviews / invalid ASIN → the run succeeds with a NO_REVIEWS warning (recorded under the WARNINGS key 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 BLOCKED error and a FAILURES record.
  • Partial results → ASINs that succeed still return data even if others are gated or blocked.
  • Run summary → a SUMMARY record (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, or helpful for the most-voted reviews.
  • Use filterByStar: "critical" to pull only 1–3★ reviews for complaint mining, or positive for testimonials.
  • Lower maxConcurrency (1–2) if you see blocks on large batches.