# Amazon Reviews Scraper — New Review Monitor (`unanimous_venus/amazon-reviews-monitor`) Actor

Returns only new Amazon reviews since last run. Cookieless competitor monitor for amazon.com (~8–13 featured reviews; CA/BR fallback if US is walled). ASINs in, JSON out for Clay / n8n / 1-star VOC. Not Helium 10. Fails loud on CAPTCHA. Optional cookies for pagination.

- **URL**: https://apify.com/unanimous\_venus/amazon-reviews-monitor.md
- **Developed by:** [John Alex](https://apify.com/unanimous_venus) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 88.2% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 new reviews

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?

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

## Amazon Reviews Scraper — New Review Monitor

Returns **only new Amazon reviews since last run**. Input ASINs + marketplace.

This is an amazon review scraper built for **competitor monitoring**, **1-star VOC / Facebook ad copy**, and **n8n / Clay** schedules. It is not Helium 10. It is not Seller Central. If the ASINs are yours, use those tools. If the ASINs are a competitor’s, this Actor is the job.

### What Amazon actually gives you in 2026

`/product-reviews/{ASIN}` redirects anonymous traffic to **Amazon Sign-In**. That is not a selector bug. Stealth Playwright does not unlock it.

Cookieless, this Actor reads the **inline reviews on the product page** (`/dp/{ASIN}`): typically **8–13 featured reviews**, no pagination.

In July 2026 amazon.com started emptying that inline block too (“Customer reviews require account verification”). **amazon.ca and amazon.com.br still render it.** Default `countryFallback` retries US → CA → BR. Rows keep `sourceMarketplace` so you know which host was parsed.

Optional `amazonCookies` (throwaway account, Cookie request header) unlocks paginated `/product-reviews/` — about **100 reviews per star filter**. Expired cookies **fail the run**.

### Why this is not another dump scraper

Junglee, Axesso, and a thousand clones return the same rows every Monday and bill you for the 80 you already have.

| | Dump scrapers | This Actor |
|---|---|---|
| State | You pass a cutoff date every run | Named KV store of seen review IDs per ASIN + marketplace |
| Charge | Per review returned | PPE: ASIN check + **new** reviews (dump/backfill still available) |
| Sort | Helpful / mixed | Always **recent** when paginating; product-page pack is Amazon’s featured mix |
| 1-star VOC | Buried filter | `oneStarPack` mode: 1–2 star, last 30 days, images on |
| Blocks | Empty 200s | CAPTCHA / unreadable pages **fail the run** |
| US wall | Pretend 100 reviews | Fallback CA/BR, honest `sourceMarketplace` |

### Modes

- **monitor** — Weekly competitor job. Bill `new-review` after the first run.
- **dump** — Research / first-run backfill. Bill every row as `dump-review`. Still records IDs so you can switch to monitor later.
- **oneStarPack** — 1-star + 2-star, last 30 days (unless you set `daysBack`), images on. Cookieless this filters the 8–13 featured reviews (expect few 1-stars). Cookie mode hits Amazon’s star filter.

First time an ASIN is seen in monitor/oneStarPack:

- `firstRunMode=backfill` (default) — you get the reviews and pay dump price once.
- `firstRunMode=seed` — we only remember IDs. Next schedule is a true delta.

### Input

| Field | Default | Notes |
|---|---|---|
| `asins` | required | ASIN or `/dp/` / `/product-reviews/` URL |
| `marketplace` | US | US, IN, DE, UK, CA, BR |
| `mode` | dump | dump is QA-safe and matches Store “scraper” traffic |
| `countryFallback` | true | US → CA → BR when the inline block is empty |
| `amazonCookies` | empty | Optional. Paginated reviews. Throwaway account only. |
| `maxReviewsPerAsin` | 20 | Cookieless: you will not get more than Amazon’s inline pack |
| `maxPages` | 2 | Cookie mode only |
| `daysBack` | 0 | oneStarPack uses 30 if 0 |
| `failOnBlock` | true | Keep on |
| `stateStoreName` | amazon-reviews-monitor-state | Lives in **your** account across schedules |
| `proxyConfiguration` | Apify proxy | Defaults to **residential**, country-matched to the host we hit |

### Output (Junglee-shaped + monitor fields)

`reviewId`, `productAsin` / `asin`, `ratingScore` / `rating`, `reviewTitle` / `title`, `reviewDescription` / `text`, `date`, `verified`, `reviewerName` / `name`, `helpfulCount`, `imageUrls` / `images`, `reviewUrl`, `variant`, `vine`

Monitor extras: `isNew`, `seenAt`, `histogram`, `histogramDelta`, `daysAgo`, `hasImages`, `marketplace`, `sourceMarketplace`, `source` (`product-page` or `reviews-list`), `fallbackUsed`, `mode`

Key-value `SUMMARY`: per-ASIN counts, billed new vs dump, 1–2 star alerts.

Dataset views: All reviews, New only, 1–2 star, With images.

### Pricing

Platform usage (Playwright + residential) is **included** in the event price. You are not billed extra compute on top.

| Event | Price | When |
|---|---|---|
| `asin-checked` | $0.08 | Every ASIN, even if 0 new reviews |
| `new-review` | $0.004 ($4 / 1k) | Monitor delta |
| `dump-review` | $0.005 ($5 / 1k) | Dump + first-run backfill |
| Actor start | $0.00005 | Ignore |

Dump sticker is above Junglee because compute is included. Weekly monitor is still cheap: check fee + new rows only.

Do not put a $0.30 start fee.

### How to schedule

1. Run once in **dump** or monitor **backfill** on 1–5 competitor ASINs.
2. Create an Apify Schedule (weekly Monday is the default job).
3. Same `stateStoreName`. Same account.
4. Optional webhook on successful run → Slack / Make / your app. Filter dataset `isNew === true` and `ratingScore <= 2`.

### n8n / Clay

- n8n: `published-tasks` and `n8n/amazon-reviews-monitor.json` — Apify node, dataset → GPT pain points → Meta ads is the Bright Data-shaped workflow with this scrape node instead.
- Clay: paste ASINs, map `isNew`, `reviewDescription`, `imageUrls`, `ratingScore`.

### Limits (read this)

- Cookieless = product-page inline block, ~8–13 reviews, not 100.
- amazon.com may return zero inline reviews; fallback is CA then BR.
- Cookie mode can hit ~100/star and can get the account restricted. Throwaway only.
- Amazon blocks datacenter IPs. Use residential proxies.
- Review dates are parsed from Amazon’s locale strings; a few formats may have `date=null` (row still kept).
- Star histogram is Amazon’s **percent** bars, not absolute counts. Delta is percentage-point change vs last run.

### Published tasks (duplicate these in Console)

See `published-tasks/`. Name the task the SEO title, not “test run 2”.

### Categories

ECOMMERCE + AUTOMATION. Not MCP\_TOOLS.

# Actor input Schema

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

Amazon ASINs (B0CWXNS552) or full product / review URLs. Competitor ASINs you do not own — this is not a Seller Central replacement.

## `marketplace` (type: `string`):

Amazon storefront you asked for. US cookieless reviews are often walled (July 2026); we then retry amazon.ca then amazon.com.br unless you turn fallback off.

## `mode` (type: `string`):

monitor = newest first, stop when we hit reviews already seen, bill NEW rows only. dump = research backfill, bill every returned review. oneStarPack = 1–2 star, recent window, images on — the ad-copy / VOC job.

## `firstRunMode` (type: `string`):

backfill = first schedule pays dump price and returns reviews (recommended). seed = save IDs only, charge the ASIN check, return no billed reviews until next run.

## `maxReviewsPerAsin` (type: `integer`):

Monitor jobs can use 8–20. Cookieless public data is Amazon's inline product-page block (~8–13 reviews), not 100. Cookie mode can paginate toward 100 per star filter.

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

Used in cookie mode (paginated /product-reviews/). Ignored cookieless — there is no next page on the inline block.

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

Client-side on cookieless (only the 8–13 featured reviews). In cookie mode Amazon filters the list.

## `daysBack` (type: `integer`):

0 = no date cut. oneStarPack defaults to 30 if you leave this at 0. Parsed from Amazon's review date string.

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

Amazon reviewerType=avp\_only\_reviews. Use for VOC quality, not volume.

## `includeImages` (type: `boolean`):

Needed for ad creative. On by default for oneStarPack.

## `failOnBlock` (type: `boolean`):

Keep ON. Silent empty successes are how Amazon scrapers get 3-star ratings. A red run is better than junk.

## `maxConcurrency` (type: `integer`):

How many ASINs to fetch in parallel. Keep low on Amazon.

## `countryFallback` (type: `boolean`):

amazon.com often returns 0 inline reviews without a login (July 2026). Retry the same ASIN on amazon.ca then amazon.com.br. Output still tags sourceMarketplace so you know where the HTML came from.

## `amazonCookies` (type: `string`):

Full Cookie request header from a throwaway logged-in browser. Unlocks paginated /product-reviews/ (~100 per star). Expired cookies fail the run. Leave empty for cookieless product-page mode.

## `stateStoreName` (type: `string`):

Persists across scheduled runs in YOUR Apify account. Change it if you want separate monitor tracks.

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

Residential is required for Amazon. We pin the proxy country to the marketplace being fetched (US, CA, BR, IN, DE).

## Actor input object example

```json
{
  "asins": [
    "B0CWXNS552"
  ],
  "marketplace": "US",
  "mode": "dump",
  "firstRunMode": "backfill",
  "maxReviewsPerAsin": 20,
  "maxPages": 2,
  "starFilter": "all",
  "daysBack": 0,
  "verifiedOnly": false,
  "includeImages": true,
  "failOnBlock": true,
  "maxConcurrency": 1,
  "countryFallback": true,
  "amazonCookies": "",
  "stateStoreName": "amazon-reviews-monitor-state",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

Review rows (new + dump depending on mode).

## `summary` (type: `string`):

ASIN checks, new vs seen counts, histogram deltas, alerts.

# 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": [
        "B0CWXNS552"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("unanimous_venus/amazon-reviews-monitor").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": ["B0CWXNS552"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("unanimous_venus/amazon-reviews-monitor").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": [
    "B0CWXNS552"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call unanimous_venus/amazon-reviews-monitor --silent --output-dataset

```

## MCP server setup

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

```

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/RQfUW7VfGzxErb5uU/builds/acglaSdglJHZihxzA/openapi.json
