# Amazon Reviews Scraper (Reviews, Ratings & Photos) (`scrapepilot/amazon-reviews-scraper-reviews-ratings-photos`) Actor

Extract genuine real-time Amazon product reviews, star ratings, reviewer profiles, customer photos & sentiment across 15+ marketplaces (US, UK, DE). Features bulk ASIN scraping, verified badges, direct review links, and export to Excel, CSV & JSON without requiring logins or cookies.

- **URL**: https://apify.com/scrapepilot/amazon-reviews-scraper-reviews-ratings-photos.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.95 / 1,000 reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Review Scraper (Product Reviews & Ratings Extractor) ⭐📦💬

Extract detailed, real-time **Amazon customer reviews, star ratings, reviewer profiles, verified purchase statuses, customer photos, and product sentiment** directly from Amazon product pages across 15+ international marketplaces.

Designed for high performance, accuracy, and ease of use: simply enter product ASINs or product URLs to extract comprehensive review data without requiring accounts, logins, session cookies, or API keys.

***

### 🌟 Key Features

- **⚡ 100% Genuine, Real-Time Amazon Reviews**: Extracts fresh customer reviews directly from live Amazon product pages — no stale, pre-cached, or synthetic data.
- **🔗 Direct Review & Product Links**: Every extracted item includes direct canonical permalinks to the individual customer review (`reviewUrl`) and product page (`productUrl`).
- **📸 High-Resolution Photos & Customer Media**: Captures full-size product photos (`productImageUrl`), reviewer profile avatars (`reviewerAvatar`), and customer-uploaded review image galleries (`customerPhotos` & `imageUrlList`).
- **👤 Comprehensive Reviewer Profiles**: Scrapes reviewer display names, verified purchase badges, Amazon Vine Voice status, reviewer public profile URLs (`reviewerUrl`), and helpful vote counts.
- **📊 Product-Level Ratings & Sentiment Histograms**: Extracts overall product rating score (`productRatingScore`), total customer ratings count, and complete 5-star to 1-star percentage breakdown histograms.
- **💰 Real-Time Pricing & Currency**: Extracts current active product price and currency symbol across global marketplaces.
- **🌐 15+ Global Amazon Marketplaces**: Full localized scraping across Amazon US (`.com`), UK (`.co.uk`), Germany (`.de`), France (`.fr`), Italy (`.it`), Spain (`.es`), Canada (`.ca`), India (`.in`), Japan (`.co.jp`), Australia (`.com.au`), Brazil (`.com.br`), Netherlands (`.nl`), Sweden (`.se`), Mexico (`.com.mx`), and UAE (`.ae`).
- **🎯 Precision Filtering & Sorting Options**: Filter reviews by specific star ratings (5-star, 4-star, 3-star, 2-star, 1-star), target keywords, verified purchase status, or media-only reviews, and sort by most recent or most helpful.
- **📁 Multi-Format Export**: Download extracted records directly in **JSON**, **CSV**, **Excel (XLSX)**, or **XML**, or integrate via API and Webhooks.

***

### 💼 High-Value Use Cases

- **📈 E-Commerce Competitor Intelligence**: Monitor competitor review velocity, analyze buyer pain points, and uncover feature requests to outrank competing Amazon listings.
- **⭐ Customer Sentiment & VOC (Voice of Customer)**: Track customer satisfaction trends over time, detect defective batches early, and optimize after-sales support.
- **🏷️ Product Listing & Copywriting Optimization**: Discover the exact keywords, slang, and phrasing real buyers use when praising or critiquing products to boost PPC ad conversions and SEO copy.
- **🔍 Market Gap & Product Development Analysis**: Identify recurring feature complaints across entire categories to design and launch superior private-label products.
- **💵 Pricing vs. Rating Correlation**: Analyze how price fluctuations impact customer expectations, review ratings, and overall buyer satisfaction.

***

### 💰 Pay-Per-Event (PPE) Pricing Model

This scraper operates on the cost-effective and transparent **Pay-Per-Event (PPE)** pricing model. You only pay for each customer review successfully extracted.

| Event Name | Display Title | Event Type | Description |
|:---|:---|:---:|:---|
| `scrape-result` | **Review** | **Primary** | Charged for each successfully extracted Amazon customer review. |

> **User Limits**:
>
> - **Free Tier**: Accounts can extract up to **50 reviews** per run.
> - **Paid Subscribers**: Enjoy **unlimited bulk extraction** without item caps.

***

### 📥 Input Parameters

The Actor offers two flexible input methods: simple line-by-line ASIN input (recommended for ease of use) and advanced JSON batch configurations.

| Parameter | Type | Required | Default | Description |
|:---|:---|:---:|:---:|:---|
| `asins` | Array of Strings | No | `["B086K4ZMT3"]` | List of Amazon product ASINs (one per line). |
| `domainCode` | String | No | `"com"` | Amazon country domain (`com`, `co.uk`, `de`, `fr`, `it`, `es`, `ca`, `in`, `co.jp`, etc.). |
| `sortBy` | String | No | `"recent"` | Sorting strategy: `"recent"` (newest reviews) or `"helpful"` (top helpful). |
| `filterByStar` | String | No | `"all_stars"` | Star rating filter: `"all_stars"`, `"five_star"`, `"four_star"`, `"three_star"`, `"two_star"`, `"one_star"`. |
| `filterByKeyword` | String | No | `""` | Extract only reviews containing specific keywords (e.g. `"quality"`, `"battery"`). |
| `reviewerType` | String | No | `"all_reviews"` | `"all_reviews"` or `"verified_reviews"` (Verified Purchase only). |
| `mediaType` | String | No | `"all_contents"` | `"all_contents"` (all reviews) or `"media_reviews_only"` (reviews with photos/videos). |
| `maxPages` | Integer | No | `1` | Number of review pages to scrape per product (1 to 10). |
| `input` | Array of Objects | No | `[]` | Advanced JSON batch input matching the `axesso` schema for per-product settings. |
| `maxItems` | Integer | No | `50` | Maximum total reviews to extract across all ASINs (Free tier capped at 50). |
| `proxy` | Object | No | *Automatic* | Proxy configuration for reliable worldwide routing. |

***

#### Sample Inputs

##### Simple Input (Recommended)

```json
{
  "asins": [
    "B086K4ZMT3",
    "B08C1W5N87"
  ],
  "domainCode": "co.uk",
  "sortBy": "recent",
  "maxPages": 1,
  "maxItems": 50
}
```

##### Advanced Batch JSON Input (axesso Format)

```json
{
  "input": [
    {
      "asin": "B086K4ZMT3",
      "domainCode": "co.uk",
      "sortBy": "recent",
      "maxPages": 1
    },
    {
      "asin": "B08C1W5N87",
      "domainCode": "com",
      "sortBy": "helpful",
      "filterByStar": "five_star",
      "maxPages": 2
    }
  ],
  "maxItems": 100
}
```

***

### 📤 Sample Output Data

Each record in the dataset contains clean, normalized, and comprehensive attributes:

```json
{
  "statusCode": 200,
  "statusMessage": "FOUND",
  "asin": "B086K4ZMT3",
  "productTitle": "KNIPEX Cobra XS (100 mm) 87 00 100 BK (Product on self-Service Card/in a Blister)",
  "productUrl": "https://www.amazon.co.uk/dp/B086K4ZMT3",
  "productImageUrl": "https://m.media-amazon.com/images/I/61rcyHu9EEL._AC_SX679_.jpg",
  "price": "£27.50",
  "currency": "£",
  "currentPage": 1,
  "sortStrategy": "recent",
  "countReviews": 13,
  "domainCode": "co.uk",
  "countRatings": 1753,
  "productRating": "4.8 out of 5",
  "productRatingScore": 4.8,
  "reviewSummary": {
    "fiveStar": { "percentage": 87 },
    "fourStar": { "percentage": 10 },
    "threeStar": { "percentage": 2 },
    "twoStar": { "percentage": 0 },
    "oneStar": { "percentage": 1 }
  },
  "customerPhotos": [
    "https://m.media-amazon.com/images/I/71Fpqtjv2HL.jpg",
    "https://m.media-amazon.com/images/I/A1r0hZ2K2NL.jpg",
    "https://m.media-amazon.com/images/I/71cz52CFe0L.jpg",
    "https://m.media-amazon.com/images/I/61Evzr7JXmL.jpg"
  ],
  "reviewId": "R295DGZEDL4OBF",
  "reviewUrl": "https://www.amazon.co.uk/customer-reviews/R295DGZEDL4OBF",
  "reviewPermalink": "https://www.amazon.co.uk/gp/customer-reviews/R295DGZEDL4OBF",
  "title": "Another great tiny tool!",
  "text": "This is another one of those things I'd seen reviewed on a Youtube channel and having recently needed a small pair of pliers to tighten something and struggled with my large ones, I thought this looked like it would do the job. It's a brilliant little tool and feels incredibly solid given its miniature scale. It's hard to believe it will adjust quite so much given its size and you can get a really strong grip. A top tool to add to the kit and takes up very little space.",
  "rating": "5 out of 5 stars",
  "ratingScore": 5.0,
  "reviewScore": 5,
  "date": "Reviewed in the United Kingdom on 4 December 2023",
  "reviewDate": "4 December 2023",
  "reviewDateIso": "2023-12-04",
  "reviewCountry": "United Kingdom",
  "locale": "United Kingdom",
  "userName": "Mr. Adrian Williamson",
  "reviewerAvatar": "https://m.media-amazon.com/images/S/amazon-avatars-global/default._SX48_.png",
  "profilePath": "/gp/profile/amzn1.account.AG3SDTTAY3KD275IOHCJQEOU7M2A?ref=cm_cr_dp_d_bdcrb_top",
  "reviewerUrl": "https://www.amazon.co.uk/gp/profile/amzn1.account.AG3SDTTAY3KD275IOHCJQEOU7M2A",
  "verified": true,
  "isVerified": true,
  "vine": false,
  "numberOfHelpful": 3,
  "hasImages": false,
  "imageUrlList": null,
  "images": [],
  "hasVideo": false,
  "videoUrlList": [],
  "variationId": "B086K4ZMT3",
  "variationList": [
    "Style Name: Single"
  ],
  "scrapedAt": "2026-11-06T15:43:01.848565+00:00"
}
```

***

### 🌍 Supported Marketplace Domain Codes

| Domain Code | Marketplace Country | Amazon Portal |
|:---:|:---|:---|
| `com` | United States (USA) | `amazon.com` |
| `co.uk` | United Kingdom (UK) | `amazon.co.uk` |
| `de` | Germany | `amazon.de` |
| `fr` | France | `amazon.fr` |
| `it` | Italy | `amazon.it` |
| `es` | Spain | `amazon.es` |
| `ca` | Canada | `amazon.ca` |
| `in` | India | `amazon.in` |
| `co.jp` | Japan | `amazon.co.jp` |
| `com.au` | Australia | `amazon.com.au` |
| `com.br` | Brazil | `amazon.com.br` |
| `nl` | Netherlands | `amazon.nl` |
| `se` | Sweden | `amazon.se` |
| `com.mx` | Mexico | `amazon.com.mx` |
| `ae` | United Arab Emirates | `amazon.ae` |

***

### ⚠️ Notes & Best Practices

- **ASIN Discovery**: You can extract ASINs directly from product URLs (e.g. from `https://www.amazon.com/dp/B086K4ZMT3`, the ASIN is `B086K4ZMT3`).
- **Pagination**: Setting `maxPages` to `1` extracts the top ~10-15 customer reviews. Increase `maxPages` to gather historical reviews across earlier pages.
- **Penalty Entries**: If an invalid or nonexistent ASIN is queried, exactly three standard penalty entries are emitted to clearly communicate the not-found status while keeping automated webhook pipelines healthy.
- **Export Formats**: Use Apify's API or UI buttons to instantly export extracted review data into Excel, CSV, or JSON for immediate analysis in Python (pandas), Google Sheets, or Power BI.

# Actor input Schema

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

List of Amazon product ASINs (e.g. B086K4ZMT3, B08C1W5N87). Enter one ASIN per line.

## `domainCode` (type: `string`):

Amazon marketplace country domain code (default: com).

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

Sorting order for reviews: 'recent' for newest reviews, or 'helpful' for top customer reviews.

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

Filter reviews by specific star rating: all stars, 5 stars, 4 stars, etc.

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

Extract reviews containing a specific word or phrase (e.g. 'quality', 'battery', 'comfortable').

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

Filter by reviewer verification status: 'all_reviews' or 'verified_reviews'.

## `mediaType` (type: `string`):

Filter by content type: 'all_contents' (text and media) or 'media_reviews_only'.

## `maxPages` (type: `integer`):

Maximum number of review pages to scrape per ASIN (default: 1, max: 10).

## `input` (type: `array`):

Optional batch input JSON array of products with custom settings per ASIN (axesso format).

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

Maximum number of total reviews to extract across all ASINs. (Free tier users capped at 50 results; paid subscribers enjoy unlimited bulk extraction).

## `proxy` (type: `object`):

Apify Proxy configuration. By default uses residential or datacenter proxies for maximum reliability.

## Actor input object example

```json
{
  "asins": [
    "B086K4ZMT3",
    "B08C1W5N87"
  ],
  "domainCode": "com",
  "sortBy": "recent",
  "filterByStar": "all_stars",
  "reviewerType": "all_reviews",
  "mediaType": "all_contents",
  "maxPages": 1,
  "input": [
    {
      "asin": "B086K4ZMT3",
      "domainCode": "co.uk",
      "sortBy": "recent",
      "maxPages": 1
    },
    {
      "asin": "B08C1W5N87",
      "domainCode": "com",
      "sortBy": "recent",
      "maxPages": 1
    }
  ],
  "maxItems": 50,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Collection of extracted Amazon product reviews stored in the default dataset.

# 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": [
        "B086K4ZMT3",
        "B08C1W5N87"
    ],
    "input": [
        {
            "asin": "B086K4ZMT3",
            "domainCode": "co.uk",
            "sortBy": "recent",
            "maxPages": 1
        },
        {
            "asin": "B08C1W5N87",
            "domainCode": "com",
            "sortBy": "recent",
            "maxPages": 1
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/amazon-reviews-scraper-reviews-ratings-photos").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": [
        "B086K4ZMT3",
        "B08C1W5N87",
    ],
    "input": [
        {
            "asin": "B086K4ZMT3",
            "domainCode": "co.uk",
            "sortBy": "recent",
            "maxPages": 1,
        },
        {
            "asin": "B08C1W5N87",
            "domainCode": "com",
            "sortBy": "recent",
            "maxPages": 1,
        },
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/amazon-reviews-scraper-reviews-ratings-photos").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": [
    "B086K4ZMT3",
    "B08C1W5N87"
  ],
  "input": [
    {
      "asin": "B086K4ZMT3",
      "domainCode": "co.uk",
      "sortBy": "recent",
      "maxPages": 1
    },
    {
      "asin": "B08C1W5N87",
      "domainCode": "com",
      "sortBy": "recent",
      "maxPages": 1
    }
  ]
}' |
apify call scrapepilot/amazon-reviews-scraper-reviews-ratings-photos --silent --output-dataset

```

## MCP server setup

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

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/Z7cXQkBDjP5tijT45/builds/8w5cXquVnmSSaopiR/openapi.json
