# Amazon Reviews Scraper – Ratings, Text & Verified Buyers (`maged120/amazon-reviews-scraper`) Actor

Export top written reviews from Amazon storefronts worldwide. Enter Amazon product links or ASINs and filter by stars or verified purchase. The Actor checks multiple storefronts for the same product. Availability varies by product and storefront.

- **URL**: https://apify.com/maged120/amazon-reviews-scraper.md
- **Developed by:** [Maged](https://apify.com/maged120) (community)
- **Categories:** E-commerce, Other, Automation
- **Features:** Limited permissions
- **Stats:** 162 total users, 24 monthly users, 58.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.90 / 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

### What does Amazon Reviews Scraper do?

**Amazon Reviews Scraper** exports top written reviews for products sold on Amazon Australia, Japan, Singapore, Canada, the UAE, Italy, Mexico, or South Africa. Results include the review text, star rating, verified purchase status, helpful votes, and attached images where available. Coverage varies by ASIN.

Give it a list of ASINs or Amazon product URLs and get a structured dataset you can download as JSON, CSV, or Excel in seconds. Runs on the Apify platform with scheduling, API access, webhook integrations, and monitoring built in.

> **Why only the top reviews?** Amazon product pages show a limited selection of written reviews. With the default connection settings, the Actor also checks Canada, the UAE, Italy, Mexico, and South Africa if the initial lookup yields no matching reviews. If you submit an Amazon product link, the Actor can also check the storefront in that link. Each review keeps its `country` when available. If no reviews match, the Actor returns one billable error row for that ASIN. Star filters can return few or no matches.

> **Note:** Amazon's rating count (e.g. "80 ratings") includes star-only feedback with no written text. This scraper retrieves **written reviews** — customers who left a text review alongside their rating. The number of written reviews is typically lower than the total rating count shown on Amazon.

### Why use Amazon Reviews Scraper?

- **Product research** — understand real buyer sentiment before launching or improving a product
- **Competitive intelligence** — see exactly what customers love and hate about competitor products
- **Brand monitoring** — get alerted when new negative reviews appear for your products
- **AI & NLP pipelines** — power sentiment classifiers, fine-tune LLMs, or train recommendation engines with authentic review data
- **Market research** — spot category trends across many products at once
- **Review management** — export reviews to spreadsheets, CRMs, or analytics dashboards with one click

### How to use Amazon Reviews Scraper

1. Open the **Input** tab in Apify Console
2. Paste one or more ASINs (e.g. `B07XJ8C8F5`) or full Amazon product URLs — one per line
3. Choose your **Sort order** and **Star filter** (optional)
4. Set **Max reviews per product** (default 100, 0 = all the product page shows)
5. Click **Start** — reviews stream into the **Output** tab in real time
6. Download the dataset as JSON, CSV, or Excel from the **Storage** tab

> **Tip:** Paste a full URL like `https://www.amazon.com/dp/B07XJ8C8F5` and the ASIN is extracted automatically.

### Input

Configure the scraper from the **Input** tab or via the Apify API:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `asins` | string\[] | — | ASINs or Amazon product URLs to scrape (required) |
| `maxReviewsPerProduct` | integer | `100` | Max written reviews to retrieve per ASIN (0 = all the product page shows, usually 5–13) |
| `sortBy` | string | `recent` | `recent` — newest first · `helpful` — most helpful first |
| `filterByStar` | string | `all_stars` | Filter by rating: `all_stars`, `five_star` … `one_star`, `positive` (4–5★), `critical` (1–3★) |
| `reviewerType` | string | `all_reviews` | `all_reviews` or `avp_only_reviews` (verified purchases only) |
| `proxyConfiguration` | object | — | Optional. Add Residential Proxy for additional coverage on high-volume products |

**Example input:**

```json
{
  "asins": ["B07XJ8C8F5", "B08D6NCQ1Z"],
  "maxReviewsPerProduct": 200,
  "sortBy": "recent",
  "filterByStar": "all_stars",
  "reviewerType": "all_reviews"
}
```

### Output

Each written review is one row in the dataset. Download in JSON, CSV, HTML, or Excel from the Storage tab.

**Example output item:**

```json
{
  "reviewId": "R2STPNLB5EQXXX",
  "asin": "B07XJ8C8F5",
  "productTitle": "Echo Dot (4th Gen)",
  "stars": 5,
  "reviewTitle": "Great little speaker for the price",
  "reviewText": "Sound quality is much better than expected for the size. Setup was easy and Alexa responds quickly.",
  "date": "April 3, 2024",
  "country": "the United States",
  "verifiedPurchase": true,
  "helpfulVotes": 12,
  "author": "John D.",
  "authorUrl": null,
  "variant": null,
  "images": null,
  "scrapedAt": "2024-05-15T10:23:45.000Z",
  "quota": "Unlimited."
}
```

### Data fields

| Field | Type | Description |
|-------|------|-------------|
| `reviewId` | string | Unique Amazon review ID |
| `asin` | string | Product ASIN |
| `productTitle` | string | Product name (when available) |
| `stars` | number | Star rating (1–5) |
| `reviewTitle` | string | Review headline |
| `reviewText` | string | Full review body |
| `date` | string | Review date as shown on Amazon |
| `country` | string | Country where the review was written |
| `verifiedPurchase` | boolean | Whether the reviewer purchased the product |
| `helpfulVotes` | number | Number of "helpful" votes |
| `author` | string | Reviewer display name |
| `authorUrl` | string | Link to reviewer's Amazon profile |
| `variant` | string | Product variant purchased (size, color, etc.) |
| `images` | string\[] | URLs of images attached to the review |
| `scrapedAt` | string | ISO timestamp of when the data was scraped |
| `quota` | string | Always "Unlimited." — this Actor has no usage cap |

### Usage limits

There is **no usage limit** on this Actor — every account, free or paid, can run it without a monthly cap or result limit. The `quota` field on each result simply reads `Unlimited.`. You only pay for what you run (see pricing below).

### How many results will I get?

You're charged per result, so the cost follows the number of rows below. Your plan's rates are on the **Pricing** tab.

| Input | Results |
|---|---|
| 1 ASIN | Usually 5–13 rows |
| 10 ASINs | Usually 80–130 rows |
| Products with no matching reviews | One billable error row per ASIN |

Each review is one row. Star and verified filters, and the sort order, are applied to the reviews the product page shows.

- **Combine with other Actors:** use the [Amazon Product Scraper](https://apify.com/maged120/amazon-scraper) to collect product metadata, then run this Actor to pull their top reviews in one workflow.

### Tips

- **Return all matching reviews on the product page:** set `maxReviewsPerProduct` to `0`
- **Negative reviews only:** set `filterByStar` to `critical` to focus on 1–3 star reviews
- **Higher-quality sentiment data:** set `reviewerType` to `avp_only_reviews` to restrict to verified purchases
- **Bulk runs:** paste as many ASINs or product URLs as needed — they are all processed in a single run
- **Include additional storefronts in the coverage check:** leave the proxy URL and country fields at their defaults
- **Automate monitoring:** use Apify Schedules to run on a daily or weekly cadence and track new reviews over time

### Review sentiment (optional)

Turn on **Add sentiment** and every review gets `sentiment` (`positive`, `neutral` or `negative`) and `sentimentScore` (from -1 to 1), scored from its title and text with VADER, a lexicon model built for short reviews. Use it to sort complaints from praise without exporting to another tool. It's off by default, so normal runs return the same fields as before.

### FAQ, Disclaimers & Support

**Is scraping Amazon reviews legal?**
Scraping publicly visible data is generally accepted for personal, academic, and business research use. Review Amazon's Terms of Service before using the data commercially. This scraper only collects publicly visible review data.

**Why does the review count differ from what Amazon shows?**
Amazon's rating count includes star-only ratings that have no written text. This scraper retrieves written reviews — customers who left a text review. The number of written reviews is always lower than the total rating count. Setting `maxReviewsPerProduct` to `0` collects all available written reviews for an ASIN.

**Can I scrape reviews from Amazon.co.uk, Amazon.de, or other marketplaces?**
You can enter any Amazon product URL or ASIN. The Actor checks whether it can retrieve matching written reviews from Australia, Japan, Singapore, Canada, the UAE, Italy, Mexico, or South Africa. Additional storefronts are checked with the default connection settings.

**Can I schedule this to run automatically?**
Yes — use Apify Schedules to monitor review changes on a daily or weekly basis without any manual effort.

**Need help or a custom solution?**
Open an issue in the Issues tab or reach out on Discord: **maged03211**

***

⭐ **Found this Actor useful?** A quick review on the Store helps other users find it and keeps it maintained.

# Actor input Schema

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

Amazon ASINs or full product URLs to scrape reviews for. One per line. The ASIN is extracted automatically from URLs.

## `maxReviewsPerProduct` (type: `integer`):

Maximum number of reviews to extract per ASIN (0 = all the product page shows, usually 5–13).

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

Order of the returned reviews (applied to the reviews the product page shows).

## `filterByStar` (type: `string`):

Only return reviews with these star ratings (applied to the product page's top reviews, which lean positive).

## `reviewerType` (type: `string`):

Filter by reviewer type.

## `addSentiment` (type: `boolean`):

Add "sentiment" (positive / neutral / negative) and "sentimentScore" (-1 to 1) to every review, scored from its title and text.

## `proxyConfiguration` (type: `object`):

Optional. Leave empty: each Amazon store (AU, JP, SG) is then reached through a residential IP in its own country. Your own proxy URLs or a chosen proxy country are used as given.

## Actor input object example

```json
{
  "asins": [
    "B07XJ8C8F5",
    "B08D6NCQ1Z"
  ],
  "maxReviewsPerProduct": 10,
  "sortBy": "recent",
  "filterByStar": "all_stars",
  "reviewerType": "all_reviews",
  "addSentiment": false
}
```

# 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 = {
    "asins": [
        "B07XJ8C8F5",
        "B08D6NCQ1Z"
    ],
    "maxReviewsPerProduct": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maged120/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 = {
    "asins": [
        "B07XJ8C8F5",
        "B08D6NCQ1Z",
    ],
    "maxReviewsPerProduct": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("maged120/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 '{
  "asins": [
    "B07XJ8C8F5",
    "B08D6NCQ1Z"
  ],
  "maxReviewsPerProduct": 10
}' |
apify call maged120/amazon-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maged120/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/KjhuLUOVGnpNmTkyh/builds/fvxVtnYJ7bfBIrzLw/openapi.json
