# Amazon Reviews Scraper (`scrapers_lat/amazon-reviews-scraper`) Actor

Scrape Amazon product reviews at scale. For any ASIN or product URL get review title, star rating, text, reviewer name, date, verified-purchase flag, helpful votes and variant, plus the product's aggregate rating and full 5-star breakdown. Works across Amazon US, UK, DE, ES, MX and more.

- **URL**: https://apify.com/scrapers_lat/amazon-reviews-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** E-commerce, Social media
- **Features:** Limited permissions
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 4.00 out of 5 stars

## Pricing

from $6.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![Amazon Reviews Scraper](https://scrapers.lat/banners/amazon-reviews-scraper.png)](https://console.apify.com/actors/rjZUBwnsUkayyd4nU/input)

## Amazon Reviews Scraper

Here is one real result, with every field the actor returns:

```json
{
  "imageUrl": "https://m.media-amazon.com/images/I/71MqXyvAk3L.jpg",
  "reviewTitle": "How easy and convenient Alexa is to use every day.",
  "rating": 5,
  "reviewBody": "I'm really happy with my Alexa! It's easy to set up and very convenient to use. I love being able to play music, set reminders, ask questions, check the weather, and control different things with just my voice. The sound quality is great for its size, and it has become a very useful part of my daily routine. Definitely recommend it!",
  "reviewerName": "Ivania Velásquez",
  "reviewerProfileUrl": "https://www.amazon.com/gp/profile/amzn1.account.AEVVLCPSODHQRA24SB4RKA5EI4VQ",
  "reviewDate": "2026-08-12",
  "reviewDateText": "August 12, 2026",
  "reviewCountry": "United States",
  "verifiedPurchase": true,
  "helpfulVotes": 1,
  "variant": "Color: Charcoal Configuration: Device only",
  "reviewId": "RRGQYGAR98JDC",
  "reviewUrl": "https://www.amazon.com/gp/customer-reviews/RRGQYGAR98JDC",
  "reviewImagesCount": 2,
  "asin": "B09B8V1LZ3",
  "productTitle": "Amazon Echo Dot (newest model) - Vibrant sounding speaker, Designed for Alexa+, Great for bedrooms, dining rooms and offices, Charcoal",
  "productUrl": "https://www.amazon.com/dp/B09B8V1LZ3",
  "productRating": 4.7,
  "productRatingsTotal": 197806,
  "ratingStars5Pct": 82,
  "ratingStars4Pct": 11,
  "ratingStars3Pct": 3,
  "ratingStars2Pct": 1,
  "ratingStars1Pct": 3,
  "domain": "com",
  "reviewImages": [
    "https://m.media-amazon.com/images/I/71MqXyvAk3L.jpg",
    "https://m.media-amazon.com/images/I/71UqjofPByL.jpg"
  ],
  "aiSentiment": "positive",
  "aiSentimentScore": 0.9,
  "aiSummary": "The reviewer is very satisfied with Alexa, highlighting its ease of setup, convenience, great sound quality, and usefulness in daily tasks like playing music and setting reminders.",
  "aiTopics": ["easy to set up", "convenient to use", "play music", "set reminders", "ask questions", "check the weather", "voice control", "sound quality", "daily routine"],
  "aiCategory": "Smart Home Devices",
  "observedAt": "2026-08-14T05:35:44.256Z",
  "error": null
}
```

The most complete Amazon reviews scraper available. It returns every field a review exposes plus product context and the full star-rating breakdown, works across 15 Amazon marketplaces, and gives you six filters plus three optional AI add-ons to target and enrich exactly the reviews you need.

**📥 [Input](https://apify.com/scrapers_lat/amazon-reviews-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/amazon-reviews-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/amazon-reviews-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/amazon-reviews-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-15%20marketplaces-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

> **Status (November 2026):** Amazon has started showing customer review text only to signed-in shoppers. This actor does not log in, so for products where Amazon hides the reviews the run returns one free row per product with the rating and the 5-to-1 star breakdown, and a clear message instead of reviews. Nothing is charged for those rows. Review rows are charged only when review text is actually returned.

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

The actor takes one or more Amazon ASINs or product URLs, reads the product's public reviews, applies the filters you pass, and writes one normalized record per review to the run's dataset. Each record carries the review title, body, star rating, reviewer name and profile, date, country, verified-purchase flag, helpful votes, variant, and any review images, alongside product context (title, URL, overall rating, total ratings, and the 1 to 5 star percentage breakdown).

Reviews can be pulled from 15 Amazon marketplaces via the `domain` selector, or per-URL for mixed marketplaces. Three optional paid AI add-ons enrich each review with a sentiment label and score, a short summary, and product-aspect topics with a broad category.

### Quickstart

Open the actor, paste this into the input, and press Run. It returns the 10 top reviews for one product on Amazon US.

```json
{
  "asins": ["B09B8V1LZ3"],
  "domain": "com",
  "maxReviews": 10,
  "sortBy": "top"
}
```

Provide `asins` (with a `domain`) or full `productUrls`, or both. Every input is optional; with an empty input the actor collects the default product's top reviews.

### Input reference

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `asins` | string\[] | no | `["B09B8V1LZ3"]` | One or more Amazon ASINs (the 10-character product IDs). Combined with the `domain` marketplace. |
| `productUrls` | string\[] | no | `[]` | Full Amazon product page URLs (any marketplace). Each URL keeps its own domain. |
| `domain` | enum | no | `com` | Marketplace for the ASINs. One of `com`, `co.uk`, `de`, `es`, `fr`, `it`, `ca`, `com.mx`, `com.br`, `com.au`, `co.jp`, `in`, `nl`, `se`, `pl`. |
| `maxReviews` | integer | no | `10` | Maximum reviews to collect across the whole run. |
| `sortBy` | enum | no | `top` | `top` keeps Amazon's most-helpful order; `recent` sorts by review date. |
| `starFilter` | enum | no | `all` | Keep only reviews with this star rating (`5`, `4`, `3`, `2`, `1`), or `all`. |
| `verifiedOnly` | boolean | no | `false` | Keep only reviews marked Verified Purchase. |
| `minHelpfulVotes` | integer | no | (none) | Keep only reviews with at least this many helpful votes. |
| `reviewsAfter` | string | no | (empty) | Keep only reviews written on or after this date, for example `2024-01-01`. |
| `reviewsBefore` | string | no | (empty) | Keep only reviews written on or before this date, for example `2025-12-31`. |
| `withSentiment` | boolean | no | `false` | Paid AI add-on. Classifies each review's sentiment with a confidence score. Billed only on usable AI output. |
| `withSummary` | boolean | no | `false` | Paid AI add-on. Generates a 1 to 2 sentence summary of each review. Billed only on usable AI output. |
| `withTopics` | boolean | no | `false` | Paid AI add-on. Extracts product aspects/keywords and a broad category per review. Billed only on usable AI output. |

Filters combine with logical AND.

### Output reference

One dataset item per review. Types: `string`, `number`, `integer`, `boolean`, `string[]`, or `null` when the source value is absent.

| Field | Type | Description |
|---|---|---|
| `reviewId` | string | Amazon review id (unique per review). |
| `reviewTitle` | string | Review headline. |
| `rating` | integer | Star rating this review gave, 1 to 5. |
| `reviewBody` | string | Full review text. |
| `reviewerName` | string | Display name of the reviewer. |
| `reviewerProfileUrl` | string | Public Amazon profile URL of the reviewer. |
| `reviewDate` | string | Review date normalized to `YYYY-MM-DD`. |
| `reviewDateText` | string | Review date as displayed on Amazon. |
| `reviewCountry` | string | Country the review was written in. |
| `verifiedPurchase` | boolean | Whether the review is a Verified Purchase. |
| `helpfulVotes` | integer | Number of helpful votes on the review. |
| `variant` | string | Product variant the reviewer bought (color, configuration). |
| `reviewUrl` | string | Direct URL to the review. |
| `imageUrl` | string | First review image URL, or `null`. |
| `reviewImages` | string\[] | All review image URLs, or `null`. |
| `reviewImagesCount` | integer | Number of images attached to the review. |
| `asin` | string | Product ASIN. |
| `productTitle` | string | Product title. |
| `productUrl` | string | Product page URL. |
| `productRating` | number | Overall product star rating. |
| `productRatingsTotal` | integer | Total number of ratings on the product. |
| `ratingStars5Pct` | integer | Percent of ratings that are 5 stars. |
| `ratingStars4Pct` | integer | Percent of ratings that are 4 stars. |
| `ratingStars3Pct` | integer | Percent of ratings that are 3 stars. |
| `ratingStars2Pct` | integer | Percent of ratings that are 2 stars. |
| `ratingStars1Pct` | integer | Percent of ratings that are 1 star. |
| `domain` | string | Amazon marketplace the review came from. |
| `aiSentiment` | string | AI sentiment (`positive`/`negative`/`neutral`), only with `withSentiment`. |
| `aiSentimentScore` | number | AI sentiment confidence score, only with `withSentiment`. |
| `aiSummary` | string | AI 1 to 2 sentence summary, only with `withSummary`. |
| `aiTopics` | string\[] | AI product aspects/keywords, only with `withTopics`. |
| `aiCategory` | string | AI broad product category, only with `withTopics`. |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |
| `error` | string | `null` on success. On a failed run, a single item with a populated `error` field is written instead. |

### Example output record

Real record from a live run (input `{"asins":["B09B8V1LZ3"],"domain":"com","withSentiment":true,"withSummary":true,"withTopics":true}`):

```json
{
  "imageUrl": null,
  "reviewTitle": "Very Helpful and Convenient",
  "rating": 5,
  "reviewBody": "I'm very happy with this Alexa. It was easy to set up, responds quickly to voice commands, and the sound quality is great. It has made my daily routine much more convenient, from playing music to setting reminders and controlling smart devices. It arrived on time and in perfect condition. I would definitely recommend it to anyone looking for a smart speaker",
  "reviewerName": "Darian Arley",
  "reviewDate": "2026-08-07",
  "reviewDateText": "August 7, 2026",
  "reviewCountry": "United States",
  "verifiedPurchase": true,
  "helpfulVotes": 1,
  "variant": "Color: Charcoal Configuration: Device only",
  "reviewId": "R1LJ30S75KQ2R6",
  "reviewUrl": "https://www.amazon.com/gp/customer-reviews/R1LJ30S75KQ2R6",
  "asin": "B09B8V1LZ3",
  "productTitle": "Amazon Echo Dot (newest model) - Vibrant sounding speaker, Designed for Alexa+, Great for bedrooms, dining rooms and offices, Charcoal",
  "productRating": 4.7,
  "productRatingsTotal": 197806,
  "domain": "com",
  "aiSentiment": "positive",
  "aiSentimentScore": 0.9,
  "aiSummary": "The reviewer is very satisfied with the Alexa, praising its easy setup, quick response to voice commands, and great sound quality, which has made their daily routine more convenient.",
  "aiTopics": ["Alexa", "easy to set up", "voice commands", "sound quality", "convenience", "playing music", "setting reminders", "controlling smart devices", "delivery", "recommendation"],
  "aiCategory": "Smart Speakers",
  "observedAt": "2026-08-14T05:35:47.198Z",
  "error": null
}
```

### Run via API and CLI

Start a run and read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~amazon-reviews-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"asins":["B09B8V1LZ3"],"domain":"com","maxReviews":50,"starFilter":"1","verifiedOnly":true}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~amazon-reviews-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"productUrls":["https://www.amazon.co.uk/dp/B09B8V1LZ3"],"sortBy":"recent","maxReviews":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/amazon-reviews-scraper \
  --input '{"asins":["B09B8V1LZ3"],"domain":"com"}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. `clean=true` drops empty and internal fields.

### Billing and limits

- **Pay per result.** Each review record bills on the `result` event. See the [pricing tab](https://apify.com/scrapers_lat/amazon-reviews-scraper/pricing) for the current per-result price.
- **AI add-ons billed separately.** `withSentiment`, `withSummary`, and `withTopics` bill the `ai_sentiment`, `ai_summary`, and `ai_topics` events, and only when the AI returns usable output. They are off by default and require a paid Apify plan.
- **No charge on failure.** If a run errors, the actor writes a single item with a populated `error` field and does not charge for it. Empty runs cost nothing.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results.
- **Free Apify plans** are capped at 10 records per run. Upgrade for higher `maxReviews`.
- **Source limit.** Amazon exposes a finite number of review pages per product. Very large `maxReviews` values are bounded by how many reviews Amazon actually publishes for that product.

### FAQ and troubleshooting

**Which marketplaces are supported?**
Fifteen: `com`, `co.uk`, `de`, `es`, `fr`, `it`, `ca`, `com.mx`, `com.br`, `com.au`, `co.jp`, `in`, `nl`, `se`, and `pl`. Set `domain` for ASINs, or pass full `productUrls` for mixed marketplaces.

**How do I get only negative reviews?**
Set `starFilter` to `1` (or `2`). Combine with `verifiedOnly` and `minHelpfulVotes` to focus on substantive complaints.

**Can I pull the newest reviews only?**
Set `sortBy` to `recent`, and optionally `reviewsAfter` to a start date.

**Do the AI fields cost extra?**
Yes. `aiSentiment`, `aiSummary`, and `aiTopics` are optional paid add-ons, billed only when the AI returns usable output. Leave `withSentiment`, `withSummary`, and `withTopics` off to skip them.

**A run returned 0 records. Why?**
The ASIN or URL was invalid, the product has no reviews, or the filters excluded everything. Verify the product and loosen filters. Zero-result runs are not charged.

**Is this an official Amazon tool?**
No. This actor is independent and is not affiliated with Amazon. It reads only publicly visible review data. Use it in accordance with Amazon's terms and applicable law.

### Related scrapers

- [Amazon Product Scraper](https://apify.com/scrapers_lat/amazon-product-scraper): Amazon product listings, prices, and details by search or ASIN.
- [eBay Product Listings & Price Scraper](https://apify.com/scrapers_lat/ebay-scraper): eBay listings, prices, sellers, and sold comps.
- [App Store Reviews Scraper](https://apify.com/scrapers_lat/app-store-reviews-scraper): Apple App Store reviews and ratings for any app.
- [Google Play App Details Scraper](https://apify.com/scrapers_lat/google-play-apps-scraper): App listings and details from the Google Play Store.
- [AliExpress Scraper](https://apify.com/scrapers_lat/aliexpress-scraper): AliExpress product listings, prices, and specs.
- [Instagram Profile & Posts Scraper](https://apify.com/scrapers_lat/instagram-scraper): Public Instagram profiles and posts with engagement.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

***

> Independent tool, not affiliated with Amazon. Accesses only publicly visible Amazon review data. Use in accordance with Amazon's terms of service.

# Actor input Schema

## `maxReviews` (type: `integer`):

Maximum number of reviews to collect across the whole run. Optional.

## `asins` (type: `array`):

One or more Amazon ASINs (the 10 character product IDs, e.g. B09B8V1LZ3). Combined with the marketplace selected below.

## `productUrls` (type: `array`):

Full Amazon product page URLs (any marketplace, e.g. https://www.amazon.com/dp/B09B8V1LZ3 or https://www.amazon.co.uk/dp/...).

## `domain` (type: `string`):

The Amazon marketplace to use for the ASINs above. Product URLs keep their own domain.

## `sortBy` (type: `string`):

Order the collected reviews. 'Top reviews' keeps Amazon's most helpful order; 'Most recent' sorts by review date, newest first.

## `starFilter` (type: `string`):

Keep only reviews with the selected star rating, or all of them.

## `verifiedOnly` (type: `boolean`):

When enabled, keep only reviews marked 'Verified Purchase'. Optional.

## `minHelpfulVotes` (type: `integer`):

Keep only reviews with at least this many 'helpful' votes. Optional.

## `reviewsAfter` (type: `string`):

Keep only reviews written on or after this date, e.g. 2024-01-01. Optional.

## `reviewsBefore` (type: `string`):

Keep only reviews written on or before this date, e.g. 2025-12-31. Optional.

## `withSentiment` (type: `boolean`):

Opt-in paid add-on. Classify each review's sentiment (positive/negative/neutral) with a confidence score using AI. Requires a paid Apify plan.

## `withSummary` (type: `boolean`):

Opt-in paid add-on. Generate a 1-2 sentence AI summary of each review. Requires a paid Apify plan.

## `withTopics` (type: `boolean`):

Opt-in paid add-on. Extract the product aspects/keywords discussed and a broad category for each review using AI. Requires a paid Apify plan.

## Actor input object example

```json
{
  "maxReviews": 10,
  "asins": [
    "B09B8V1LZ3"
  ],
  "domain": "com",
  "sortBy": "top",
  "starFilter": "all",
  "verifiedOnly": false,
  "withSentiment": false,
  "withSummary": false,
  "withTopics": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxReviews": 10,
    "asins": [
        "B09B8V1LZ3"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/amazon-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxReviews": 10,
    "asins": ["B09B8V1LZ3"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/amazon-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxReviews": 10,
  "asins": [
    "B09B8V1LZ3"
  ]
}' |
apify call scrapers_lat/amazon-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/amazon-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rjZUBwnsUkayyd4nU/builds/Lmi201OPbQ0eu49vl/openapi.json
