# Amazon Reviews Scraper — No Login, Histogram + AI Summary (`memo23/amazon-reviews-scraper`) Actor

Extract Amazon product reviews with no login or cookie: rating, text, date, verified badge, helpful votes and images, from 18 marketplaces. Each product also gets the 5-1 star histogram and Amazon's 'Customers say' AI summary with aspect sentiment. Pay per review. JSON/CSV

- **URL**: https://apify.com/memo23/amazon-reviews-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce, AI, Agents
- **Features:** Limited permissions
- **Stats:** 99 total users, 32 monthly users, 99.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 review scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 — No-Login Reviews, Histogram & AI Summary 🛒⭐

Extract Amazon customer reviews for any product **without a login or cookie**, plus the full ratings histogram and Amazon's own AI-generated **"Customers say"** summary with per-aspect sentiment. Paste ASINs or product URLs, pick your marketplaces, export JSON/CSV/Excel.

![How it works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-amazon-reviews.png)

### Why use this Amazon Reviews Scraper? 💡

**What to expect, honestly.** Amazon shows the full review list only to signed-in shoppers, and since October 2026 amazon.com shows no reviews at all to visitors who are not signed in. Other marketplaces (UK, Canada, Germany, France and more) still show **about 5–9 featured reviews** on each product page. This actor reads those, and it never asks you for an Amazon login or cookie.

- 🌍 **Reviews even for US products** — when amazon.com hides the reviews, the actor reads the same ASIN on amazon.co.uk and amazon.ca (then .de and .fr) and returns those. Each row's `marketplace` field says where it came from.
- 🧠 **"Customers say" AI summary + aspect sentiment** — Amazon's own digest of *all* reviews ("Battery life: mixed, 5.4K mentions") as structured fields, including on amazon.com. It sums up every review written for the product, not only the ones on the page.
- 📊 **Ratings histogram + totals** — the 5→1 star percentage distribution, average rating and total ratings count per product.
- ⭐ **Filters that actually work** — star rating, Verified Purchase, keyword and date range. Rows that don't match are never returned and **never billed**.
- 💸 **Pay only for rows you get** — a product that shows no reviews costs nothing beyond the start fee and its summary row.
- ⚡ **Fast** — a typical product takes a few seconds, and a run of 5 products finishes in about 10 s.

### What does Amazon Reviews Scraper do? 🔍

For every ASIN or product URL you provide, the actor:

1. Opens the product page on each selected marketplace.
2. Extracts every review shown there: rating, title, full text, ISO date + review country, author + profile link, Verified Purchase badge, helpful votes, variant attributes, full-resolution image URLs and the review link.
3. If none of your marketplaces show reviews for the product (amazon.com), reads it on co.uk and ca, then de and fr (turn off with `fallbackMarketplaces: false`).
4. Removes duplicates across marketplaces, applies your filters, sorts (most recent / most helpful), and pushes **one row per unique review** plus an optional **product-summary row** per product.

### Supported input 📥

| Input | Example |
|---|---|
| Bare ASIN | `B07PXGQC1Q` |
| Product URL | `https://www.amazon.com/dp/B07PXGQC1Q` |
| `/gp/product/` URL | `https://www.amazon.de/gp/product/B0D1XD1ZV3` |
| Reviews URL (read as the product) | `https://www.amazon.com/product-reviews/B07PXGQC1Q` |

Mixed freely, any of the 18 supported marketplaces: US, UK, Germany, France, Italy, Spain, Canada, Australia, Japan, India, Netherlands, Sweden, Poland, Belgium, UAE, Mexico, Turkey, Singapore.

### Use cases 🎯

- **Product & market research** — what buyers love and hate before you source or build a competing product.
- **Review sentiment analysis / LLM pipelines** — clean structured text + Amazon's own AI aspect summary as ground truth.
- **Brand & reputation monitoring** — track critical (1–2★) reviews on your own or competitor listings, filtered by date.
- **E-commerce copywriting** — mine review language for listing copy and ads.
- **Dropshipping / FBA product vetting** — histogram + "Customers say" per candidate ASIN in one run.

### Input configuration ⚙️

```json
{
    "products": ["B07PXGQC1Q", "https://www.amazon.de/dp/B0D1XD1ZV3"],
    "marketplaces": ["com", "co.uk", "ca", "de"],
    "aggregateMarketplaces": true,
    "maxReviewsPerProduct": 50,
    "filterByStars": [1, 2],
    "verifiedOnly": true,
    "sort": "recent",
    "includeProductSummary": true
}
```

Key options:

| Field | What it does |
|---|---|
| `marketplaces` + `aggregateMarketplaces` | Read each product on several marketplaces and merge the reviews. EU sites often repeat the same reviews, so expect a few extra per marketplace, not a multiple. |
| `fallbackMarketplaces` | On (default): when your marketplaces show no reviews (amazon.com), read the product on co.uk and ca, then de and fr. |
| `filterByStars` | e.g. `[1,2]` for critical only. |
| `dateFrom` / `dateTo` | ISO dates; applied to the parsed review date. |
| `includeVariantReviews` | `false` drops reviews attributed to a different variant ASIN (each row carries `reviewedAsin` + `variantAttributes` either way). |

### Output overview 📤

Two row types (`type` field):

- **`review`** — one per unique review.
- **`product-summary`** — one per product (disable with `includeProductSummary: false`).

### Output sample — review row

```json
{
    "type": "review",
    "reviewId": "R12KKP9H1D3C3I",
    "asin": "B07PXGQC1Q",
    "reviewedAsin": null,
    "marketplace": "co.uk",
    "rating": 5,
    "title": "Great wireless earpods",
    "text": "Been using these for a while now, still my go-to for everyday listening. Pairing with my iPhone…",
    "date": "2026-07-02",
    "dateRaw": "Reviewed in the United States on July 2, 2026",
    "reviewCountry": "United States",
    "author": "Henry W",
    "authorProfileUrl": "https://www.amazon.com/gp/profile/amzn1.account.AHLEYE45VGG…",
    "verifiedPurchase": true,
    "helpfulVotes": 111,
    "variantAttributes": "Set: Without AppleCare+",
    "images": ["https://m.media-amazon.com/images/I/61UzPGU7rxL.jpg"],
    "reviewUrl": "https://www.amazon.co.uk/gp/customer-reviews/R12KKP9H1D3C3I",
    "source": "product-page"
}
```

### Output sample — product-summary row

```json
{
    "type": "product-summary",
    "asin": "B07PXGQC1Q",
    "marketplace": "com",
    "productTitle": "Apple AirPods Wireless Ear Buds, Bluetooth Headphones…",
    "averageRating": 4.7,
    "totalRatings": 635952,
    "ratingsHistogram": { "5": 87, "4": 8, "3": 3, "2": 0, "1": 2 },
    "customersSay": "Customers find these wireless earbuds to be of good quality, with clear sound and great functionality. …",
    "aspects": [
        { "aspect": "Quality", "sentiment": "positive", "mentions": 9500 },
        { "aspect": "Battery life", "sentiment": "mixed", "mentions": 5400 }
    ],
    "url": "https://www.amazon.com/dp/B07PXGQC1Q"
}
```

### Key output fields 🗝️

| Field | Notes |
|---|---|
| `date` / `dateRaw` / `reviewCountry` | Localized date lines are parsed to ISO dates across EN/DE/FR/ES/IT/NL/JA; when parsing fails the raw string is always preserved and the row is kept. |
| `images` | Full-resolution URLs (Amazon's thumbnail size suffix stripped). |
| `helpfulVotes` | Integer, parsed from "One person/111 people found this helpful" incl. localized forms. |
| `reviewedAsin` + `variantAttributes` | Variant attribution, best-effort — Amazon mixes reviews across a product family. |
| `aspects[].sentiment` | `positive` / `mixed` / `negative` — same signal Amazon shows as green/orange chips. |

### FAQ ❓

**How many reviews will I get per product?**
About **5–9 per product** from each marketplace that still shows reviews to visitors (measured October 2026: UK 5, Canada 5, France 5, Germany 9 on the same product). Marketplaces often repeat the same reviews, so a popular product usually ends up with 5–15 unique reviews, plus the histogram and AI summary. Tools that promise hundreds of reviews per product without your login are using signed-in accounts behind the scenes.

**Why do I get no reviews from amazon.com?**
amazon.com now shows "Sign in to see customer reviews" in place of reviews to every visitor who is not signed in. This actor never signs in, so on .com you get the product summary row (rating, histogram, "Customers say") and the reviews come from the other marketplaces where the product is sold.

**Do I need an Amazon account or cookie?**
No. The actor reads public product pages only and has no login or cookie input.

**Do the filters cost me anything?**
No. Filters run before billing — you're only charged for review rows actually pushed to the dataset. Empty runs charge nothing beyond the actor-start event.

**What about reviews in other languages?**
Reviews come back in each marketplace's language (that's the point of aggregation — they're *different* reviews). Dates are parsed to ISO across major locales; the raw localized strings are always preserved.

**A product returned no reviews at all — why?**
Usually the product is sold only on amazon.com, which shows reviews only to signed-in shoppers; the run's status message says so and nothing is charged for reviews. Otherwise the ASIN isn't listed on the marketplaces tried, or Amazon kept serving a page without reviews. If a specific ASIN keeps failing on a marketplace that shows reviews in your browser, open an issue with the ASIN and marketplace.

### Support 🤝

Found a bug or missing a feature? Open an issue on the [actor's Issues tab](https://apify.com/memo23/amazon-reviews-scraper/issues) — issues are answered, and the actor is actively maintained (that's the whole pitch).

### Additional services 🚀

Need review data at custom scale, a different output shape, webhook delivery, or a private variant of this actor? Reach out via the Issues tab or my Apify profile.

### Explore more scrapers 🕸️

More e-commerce and review scrapers on [my Apify profile](https://apify.com/memo23): Trustpilot, Capterra, Google Maps Reviews, Amazon Sellers, Etsy, eBay, and 250+ others.

Reviews on another retailer? The [Best Buy Scraper](https://apify.com/memo23/bestbuy-scraper) returns Best Buy customer reviews — rating, full text, verified-purchase badge, pros and cons — alongside prices and per-ZIP stock.

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/amazon-reviews-scraper`).

**Purpose:** Extracts the Amazon product reviews shown to visitors who are not signed in (about 5–9 per product per marketplace; none on amazon.com) by ASIN or product URL across up to 18 marketplaces, plus, per product, the ratings histogram and Amazon's "Customers say" AI summary with per-aspect sentiment.

**Minimal input:**

```json
{
  "products": ["B07PXGQC1Q"],
  "marketplaces": ["com"],
  "maxItems": 50
}
```

`products` (bare ASINs or `/dp/…`, `/gp/product/…` URLs) is required. Other inputs: `aggregateMarketplaces`, `maxReviewsPerProduct`, `filterByStars`, `verifiedOnly`, `filterByKeyword`, `dateFrom`, `dateTo`, `sort` (`recent` / `helpful`), `includeVariantReviews`, `includeProductSummary`, `fallbackMarketplaces`, `concurrency`.

**Output:** two row types keyed by `type`. `review` rows — `reviewId`, `asin`, `reviewedAsin`, `marketplace`, `rating`, `title`, `text`, `date`, `dateRaw`, `reviewCountry`, `author`, `authorProfileUrl`, `verifiedPurchase`, `helpfulVotes`, `variantAttributes`, `images[]`, `reviewUrl`, `source`. `product-summary` rows — `productTitle`, `averageRating`, `totalRatings`, `ratingsHistogram {5..1}`, `customersSay`, `aspects[] {aspect, sentiment, mentions}`, `url`.

**Behaviors an agent should know:**

- Always set `maxItems` (whole run) and `maxReviewsPerProduct`. Expect about 5–9 reviews per product per marketplace that shows them; amazon.com shows none to visitors, and with `fallbackMarketplaces` (default true) the actor then reads co.uk and ca, then de and fr. `aggregateMarketplaces` (default true) merges reviews across all selected `marketplaces` without duplicates.
- Filters (`filterByStars`, `verifiedOnly`, `filterByKeyword`, `dateFrom`/`dateTo`, `includeVariantReviews`) run before billing — non-matching rows are never returned or charged.
- `includeProductSummary` (default true) emits one summary row per product as its own cheap event.
- Billed per review row pushed plus a cheap product-summary event; filtered/skipped rows and empty runs charge nothing beyond the actor-start event.

### ⚠️ Disclaimer

This actor collects **publicly visible data only**: it never signs in and never asks for an Amazon account or cookie. Respect Amazon's Terms of Service and applicable laws (GDPR/CCPA) when storing reviewer names and profile links. This actor is not affiliated with, endorsed by, or sponsored by Amazon.com, Inc. "Amazon" is a trademark of Amazon.com, Inc.

### SEO Keywords

amazon reviews scraper, scrape amazon reviews, amazon review extractor, amazon product reviews api, amazon reviews dataset, extract amazon reviews to csv, amazon review sentiment analysis, amazon customers say scraper, amazon ratings histogram, amazon reviews without login, amazon review scraper 2026, bulk amazon reviews export, amazon asin reviews, amazon critical reviews scraper, amazon verified purchase reviews

# Actor input Schema

## `products` (type: `array`):

Amazon ASINs (e.g. "B07PXGQC1Q") or full product URLs (/dp/…, /gp/product/…), mixed freely. A URL pins its marketplace; bare ASINs use the Marketplaces field below.

## `marketplaces` (type: `array`):

Marketplaces to read. Bare ASINs are fetched on each one; a product URL is always read on its own marketplace first. amazon.com now shows reviews only to signed-in visitors, so on .com you get the product summary (rating, star histogram, 'Customers say') and the reviews come from the other marketplaces. co.uk, ca, de and fr show about 5-9 reviews per product, and EU sites often repeat the same reviews.

## `aggregateMarketplaces` (type: `boolean`):

Read every product on ALL selected marketplaces and merge the reviews, without duplicates. Turn off to read each product on one marketplace only.

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

Ceiling of review rows per product (after duplicates and filters are removed). Amazon shows about 5-9 reviews per product on each marketplace that still shows them to visitors, so most products return fewer than 20.

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

Hard ceiling of review rows across the whole run. Also capped by your plan and charge limit.

## `filterByStars` (type: `array`):

Keep only reviews with the selected star ratings — pick 1★ + 2★ for critical, 5★ for glowing. Leave empty for all ratings. Applied honestly: rows that don't match are never returned or charged.

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

Keep only reviews with the Verified Purchase badge.

## `filterByKeyword` (type: `string`):

Keep only reviews whose title or text contains this text (case-insensitive).

## `dateFrom` (type: `string`):

Keep only reviews dated on/after this date. Reviews whose localized date can't be parsed are kept and carry the raw date string.

## `dateTo` (type: `string`):

Keep only reviews dated on/before this date.

## `sort` (type: `string`):

Order of the review rows: most recent first, or most helpful votes first.

## `includeVariantReviews` (type: `boolean`):

Amazon mixes reviews from all variants (colors, sizes) of a product family. Keep on for maximum depth; turn OFF to drop reviews attributed to a different variant ASIN than the one you asked for (each row carries `reviewedAsin` and `variantAttributes` either way).

## `includeProductSummary` (type: `boolean`):

Emit one extra row per product with the average rating, total ratings count, 5→1 star histogram percentages, and Amazon's AI-generated 'Customers say' summary with per-aspect sentiment (data no other scraper structures). Charged as its own cheap event.

## `fallbackMarketplaces` (type: `boolean`):

amazon.com shows reviews only to signed-in visitors. When none of your marketplaces show reviews for a product, read the same ASIN on co.uk and ca, then de and fr. Each review row says which marketplace it came from. Turn off to stay on your marketplaces only.

## `concurrency` (type: `integer`):

How many pages to fetch in parallel. Automatically clamped to what the run's memory can safely hold (Amazon product pages are large, ~1.5–3MB each) — raise the run's memory to go faster. Default 20 (about 22 fit in a 1 GB run).

## Actor input object example

```json
{
  "products": [
    "B07PXGQC1Q"
  ],
  "marketplaces": [
    "com",
    "co.uk",
    "ca"
  ],
  "aggregateMarketplaces": true,
  "maxReviewsPerProduct": 50,
  "maxItems": 200,
  "filterByStars": [],
  "verifiedOnly": false,
  "filterByKeyword": "",
  "sort": "recent",
  "includeVariantReviews": true,
  "includeProductSummary": true,
  "fallbackMarketplaces": true,
  "concurrency": 20
}
```

# 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 = {
    "products": [
        "B07PXGQC1Q"
    ],
    "marketplaces": [
        "com",
        "co.uk",
        "ca"
    ],
    "maxReviewsPerProduct": 50,
    "maxItems": 200,
    "filterByKeyword": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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 = {
    "products": ["B07PXGQC1Q"],
    "marketplaces": [
        "com",
        "co.uk",
        "ca",
    ],
    "maxReviewsPerProduct": 50,
    "maxItems": 200,
    "filterByKeyword": "",
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/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 '{
  "products": [
    "B07PXGQC1Q"
  ],
  "marketplaces": [
    "com",
    "co.uk",
    "ca"
  ],
  "maxReviewsPerProduct": 50,
  "maxItems": 200,
  "filterByKeyword": ""
}' |
apify call memo23/amazon-reviews-scraper --silent --output-dataset

```

## MCP server setup

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