Get Amazon product reviews
TL;DR
About
Amazon's affiliate API will not give you what reviewers wrote. The Creators API, which is replacing the Product Advertising API, covers titles, images, offers and browse nodes, and no reviews. Give this an ASIN and you get the reviews, about 10 at a time, with the variation each buyer reviewed and a verified or Vine flag. Say you sell insulated bottles and a rival's 32 oz model has slid from 4.5 to 4.1 stars in a month. Run it with filterByStar=critical, filterByKeyword=leak and sortBy=recent, page through, and the complaints pile up on one lid variation: the point your own listing should answer first. The catch is the session. With one you read the full US reviews page, every filter, 10 pages deep. Without one you get only the product page's top reviews, a few from other countries mixed in, no filters, and in tests on 2 October about half of fresh cloud browsers got a sign-in prompt instead.
Input
asin required10-char Amazon ASIN.
cursor optionalnextCursor from a previous call with the same ASIN, sort and filters; returns the next 10 reviews. Omit for the first page. Amazon stops offering a next page after about 10 pages. Paging needs a session: an anonymous run can only read the top reviews on the product page, and a cursor throws there.
sortBy optionalrecent = Most recent; helpful = Top reviews. Honoured only when the run has a session; an anonymous run returns the product page's top reviews in Amazon's own order regardless (check `source` in the result).
Default: "recent"zipCode optionalUS ZIP used to pin the store to the US.
Default: "10001"mediaType optionalmedia_reviews_only restricts to reviews with an image or video. Needs a session, and throws on an anonymous run.
Default: "all_contents"filterByStar optionalStar filter. positive/critical group multiple ratings. Needs a session, and throws on an anonymous run.
Default: "all_stars"reviewerType optionalverified_reviews restricts to verified purchases. Needs a session, and throws on an anonymous run.
Default: "all_reviews"filterByKeyword optionalOnly reviews containing this keyword. This filter returns only ratings that include a written review. Needs a session, and throws on an anonymous run.
Default: ""Output
source requiredWhich Amazon surface produced this result. reviews_page = the full reviews list (needs a session; supports sort, filters and paging; US store only). product_page_medley = the top-reviews block on the product page, all an anonymous browser can read: one page only, no filters, Amazon's own ordering, and it mixes in reviews from other Amazon stores (read `country` per review) where reviews_page returns US only. Sort, filter and cursor arguments throw on this surface rather than being silently dropped. Amazon sometimes serves an anonymous browser the product page without its reviews (rating and star histogram shown, a sign-in prompt in place of the review list); the run then fails with an error saying so instead of returning an empty list, so reviews: [] on this surface means the product really has no written reviews.
product requiredreviews requirednextCursor requiredPass as cursor to get the next 10 reviews. Null when Amazon offers no next page, and always null when source=product_page_medley.
authenticated requiredWhether the run had a usable Amazon session. False means the result came from the anonymous medley and is thinner by design, not by failure: the top reviews only.
Example output
Shape only: placeholder values generated from the output schema, not a real run.
{
"source": "reviews_page",
"product": {
"asin": "…",
"title": "Example",
"reviewCount": 3,
"totalRatings": 3,
"overallRating": 3.5,
"starBreakdown": {
"one_star": 3,
"two_star": 3,
"five_star": 3,
"four_star": 3,
"three_star": 3
}
},
"reviews": [
{
"id": "abc123",
"date": "2026-01-15T09:30:00Z",
"text": "…",
"vine": true,
"title": "Example",
"images": [
"…"
],
"rating": 3.5,
"videos": [
"…"
],
"country": 3,
"dateText": "…",
"reviewer": "…",
"variation": "…",
"helpfulVotes": 3,
"verifiedPurchase": true
}
],
"nextCursor": "…",
"authenticated": true
}