# Amazon Review Scraper ⭐️ (`mrdoe/amazon-review-scraper`) Actor

Scrape Amazon customer reviews with structured data including ratings, review titles, review text, reviewer information, review dates, verified purchase status, helpful votes, and product details for sentiment analysis, product research, and competitor analysis.

- **URL**: https://apify.com/mrdoe/amazon-review-scraper.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Amazon Review Scraper do?

**Amazon Review Scraper** extracts the customer reviews shown on an [Amazon.com](https://www.amazon.com) product page - rating, title, body, author, date, country, verified-purchase status, helpful-vote count, purchased variant, and any attached photos - **anonymously, no login, no Amazon account, no API key**.

### Why use this Actor?

- **Voice-of-customer research** - pull real review text and ratings for any product you have an ASIN for.
- **Competitor monitoring** - track what customers say about a competing product without ever logging in.
- **Batch, one start fee** - pass a list of ASINs and one run covers all of them.

### How to use it

1. Fill `asin` with a single ASIN or product URL (e.g. `B01GJOMWVA`), or `asins` for a batch.
2. Click **Start**.

`asins` wins over `asin` when filled; duplicates and blanks are dropped automatically.

### Input

| Field                | Type           | Description                                                                                                                      |
| -------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `asin` / `asins`     | string / array | An ASIN (e.g. `B01GJOMWVA`) or a full product URL (e.g. `https://www.amazon.com/dp/B01GJOMWVA`). At least one is required.       |
| `maxItems`           | integer        | Caps total review rows across the whole run (default 100). The first 10 rows in a run are always free - see [Pricing](#pricing). |
| `zipCode`            | string         | Delivery ZIP code the Actor sets automatically before crawling. Defaults to `10001`.                                             |
| `proxyConfiguration` | object         | A residential proxy is strongly recommended for sustained volume - Amazon rate-limits repeated traffic from one IP.              |

### Output

One flat row per review, with the parent product's title and overall rating repeated on every row for convenience. `status` is `success` for a review row, `error` when the ASIN was invalid/removed, or `no_reviews` for a real product page with zero reviews shown.

```json
{
    "asin": "B01GJOMWVA",
    "productTitle": "BLACK+DECKER 12-Cup Drip Coffee Maker with Vortex Brewing",
    "overallRating": 4.4,
    "totalReviewCount": 50181,
    "reviewId": "RDHG39C7LEKTW",
    "reviewRating": 5,
    "reviewTitle": "So far, so great.",
    "reviewBody": "My Mr. Coffee went kaputt a few weeks ago. It just kept powering off...",
    "reviewAuthor": "MissConnieLove",
    "reviewDate": "July 12, 2026",
    "reviewCountry": "the United States",
    "verifiedPurchase": true,
    "helpfulVotes": 23,
    "variant": "Color: BlackStyle: Hot Brew",
    "reviewImages": [],
    "productUrl": "https://www.amazon.com/dp/B01GJOMWVA",
    "status": "success"
}
```

### Pricing

This Actor uses pay-per-event pricing - one small run-start charge, then a per-row charge for each review returned. See the **Pricing** tab for current rates. **The first 10 review rows in a run are always free**, regardless of how many ASINs you pass in; every row after that is charged normally. Invalid-ASIN and no-review rows are never charged. Use `maxItems` to cap total rows on a large batch.

### Limitations - please read before buying

- **This is not the full review list.** Amazon's complete, paginated review archive (`/product-reviews/{asin}`) hard-requires a signed-in Amazon account - live-verified: it redirects to the sign-in page on every request, even with a fully primed anonymous session. What this Actor returns is the same "Top reviews" set an anonymous visitor sees directly on the product page - typically the most helpful reviews plus a handful cross-posted from other Amazon marketplaces (Amazon shows these alongside the local ones). Live-verified count on a real product: 13 reviews.
- If a product page shows fewer (or zero) reviews to an anonymous visitor, that's genuinely all that's available without logging in - it isn't a bug in this Actor.
- Only the numbers/text Amazon shows to an anonymous, logged-out visitor are available.
- US marketplace (`amazon.com`) only in this version.
- Amazon's page markup drifts over time; the extraction code targets stable, semantic `data-hook` attributes but a large redesign may need an update.

### FAQ

**Why isn't this the full review list?** See [Limitations](#limitations---please-read-before-buying) above - the full paginated list is gated behind an Amazon account and this Actor never asks for your credentials.

**Do I need an Amazon account or API key?** No - it runs entirely against Amazon's public, logged-out web pages.

**A run returns a `no_reviews` row - why?** The product genuinely has no reviews visible to an anonymous visitor - check the same product page yourself while logged out to confirm.

### Disclaimer

This Actor is an independent tool, not affiliated with or endorsed by Amazon.com, Inc. It only accesses data Amazon serves publicly to anonymous visitors. Use it in compliance with Amazon's Conditions of Use and applicable law in your jurisdiction. Found a bug or have a feature request? Use the Issues tab on this Actor's page.

# Actor input Schema

## `asin` (type: `string`):

An Amazon ASIN (e.g. "B01GJOMWVA") or a full product URL. Defaults to a demo product if left blank.

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

Many ASINs or product URLs in one run. Wins over "asin" when filled.

## `maxItems` (type: `integer`):

Caps the total number of review rows returned across this whole run (all ASINs combined) - useful to bound spend on a large batch. The first 10 review rows in a run are always free regardless of this setting.

## `zipCode` (type: `string`):

Set automatically before crawling so product pages render normally. Change it if you need a specific US region.

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

A residential proxy is strongly recommended for sustained volume - Amazon rate-limits repeated traffic from one IP.

## Actor input object example

```json
{
  "asin": "B01GJOMWVA",
  "maxItems": 10,
  "zipCode": "10001",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "asin": "B01GJOMWVA",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/amazon-review-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 = {
    "asin": "B01GJOMWVA",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/amazon-review-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 '{
  "asin": "B01GJOMWVA",
  "maxItems": 10
}' |
apify call mrdoe/amazon-review-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/amazon-review-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/2l5AhnEAll6LoO4ZG/builds/FOpNiDHdqJcAGkxgb/openapi.json
