# Trustpilot Reviews Scraper — Ratings, Text & Dates (`foxlabs/trustpilot-reviews-scraper`) Actor

Scrape Trustpilot reviews by company domain: star rating, review title, full text, author, date, language & business score. Clean JSON, pay per review. For brand monitoring, competitive intelligence & voice-of-customer.

- **URL**: https://apify.com/foxlabs/trustpilot-reviews-scraper.md
- **Developed by:** [Berkan Kaplan](https://apify.com/foxlabs) (community)
- **Categories:** Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

### 🔍 What is Trustpilot Reviews Scraper — and when should you use it?

**Trustpilot Reviews Scraper extracts customer reviews from [Trustpilot](https://www.trustpilot.com) by company** — the star **rating**, review **title**, the **full review text**, the **author**, the **date** and the **language**, plus the company's **aggregate score and total review count**. Give it a company domain (e.g. `www.amazon.com`) and get clean JSON, **paying only per review returned**.

Use it for brand and reputation monitoring, competitive intelligence, voice-of-customer analysis, or to **track new reviews** of your own business over time. Runs on the Apify platform with API access, scheduling, integrations, proxy rotation and monitoring built in.

### 🤖 Use with AI agents

Typed input, structured JSON output — it drops straight into agent and RAG pipelines (MCP, LangChain, direct API). It can also run in **Standby mode** as a real-time HTTP endpoint (`GET /?companyDomains=www.amazon.com&maxReviews=50`) and supports **pay-per-event** billing suitable for x402 agent payments.

### 📋 Overview

Trustpilot is one of the largest consumer review platforms. This scraper reads a company's public reviews, paginates through them newest-first, and returns each review as a row. Trustpilot is anti-bot protected; the scraper handles access for you via an unblocking proxy — no cookies or logins required.

### ✨ Features

- Reviews by **company domain** or Trustpilot URL, several companies per run.
- **Full review text**, title, rating, author, date and language.
- **Business aggregate** rating and total review count.
- **`minDatePublished`** to fetch only newer reviews — ideal for recurring monitoring.
- **Pay per review** — error and summary rows are never charged.

### 🎬 Quick Start

```json
{ "companyDomains": ["www.amazon.com"], "maxReviews": 50 }
```

### 🚀 Getting Started (3 steps)

1. **Add companies** — paste company domains or Trustpilot URLs in `companyDomains`.
2. **Set the cap** — `maxReviews` limits reviews per company (default 100; 0 = all).
3. **Run** — download the dataset as JSON, CSV, Excel or HTML, or call it over the API.

### 📥 Input

| Field | Type | Description |
|---|---|---|
| `companyDomains` | array | Company domains (`www.amazon.com`) or Trustpilot review URLs, one per line. |
| `maxReviews` | integer | Reviews per company (default 100; 0 = all). ~20 per page. |
| `minDatePublished` | string | ISO date (e.g. `2026-01-01`). Reads newest-first and stops at older reviews — monitor only new reviews across runs. |
| `maxConcurrency` | integer | Companies fetched in parallel (default 2). |

### 📤 Output

```json
{
  "company": "Amazon",
  "domain": "www.amazon.com",
  "rating": 5,
  "title": "Fast delivery, great service",
  "body": "Ordered on Monday, arrived Tuesday ...",
  "author": "Mr and Mrs Parry",
  "authorUrl": "https://www.trustpilot.com/users/5ad8da6c4de5666d34facf21/",
  "datePublished": "2026-10-23T15:56:50.000Z",
  "language": "en",
  "businessRating": 4.1,
  "businessReviewCount": 184203,
  "reviewUrl": "https://www.trustpilot.com/review/www.amazon.com"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### 📊 Data table

| Field | Description |
|---|---|
| `company` / `domain` | Business name and its Trustpilot domain. |
| `rating` | This review's star rating (1–5). |
| `title` / `body` | Review headline and full text. |
| `author` / `authorUrl` | Reviewer name and Trustpilot profile. |
| `datePublished` | Review date (ISO). |
| `language` | Review language code. |
| `businessRating` / `businessReviewCount` | Company's aggregate score and total reviews. |

### 💼 Use cases

- **Brand & reputation monitoring** — track your company's new reviews on a schedule.
- **Competitive intelligence** — compare rivals' ratings and sentiment.
- **Voice of customer** — mine thousands of reviews for themes.

### 🔗 Integration

Call it from the Apify API or client SDKs, schedule it, or chain it into other Actors. In Standby mode it answers HTTP `GET` requests with JSON.

### 📊 Pricing

Pay per review returned. A typical company page yields ~20 reviews; error and summary rows are free. How much does it cost to scrape Trustpilot? For 1,000 reviews you pay for 1,000 review events — see the Actor's pricing on its page.

### ❓ FAQ

- **Do I need a Trustpilot login?** No.
- **How many reviews can I get?** Up to a company's full public history; set `maxReviews: 0`.
- **Can I get only new reviews?** Yes — set `minDatePublished`.

### 🐛 Troubleshooting

- **A company returns nothing** — check the domain matches its Trustpilot page (`trustpilot.com/review/<domain>`).
- **Fewer reviews than expected** — raise `maxReviews`, or the company simply has fewer public reviews.

### ⚖️ Is it legal to scrape this data?

The scraper collects **publicly available** review data. You are responsible for using it in line with Trustpilot's Terms and applicable laws (including data-protection rules). It does not access anything behind a login.

### 🤝 Support & contact

Found a bug or need a field added? Open an issue on the Actor's **Issues** tab.

### Changelog

#### 0.1 — 2026-10-23 — first release

- Reviews by company domain/URL: rating, title, full text, author, date, language + business aggregate.
- Newest-first pagination with per-review de-duplication by Trustpilot review id; `maxReviews`, `minDatePublished` monitoring.
- Access via unblocking proxy (no cookies); reviews read from the page's JSON-LD.
- Pay-per-review billing; Standby mode for real-time HTTP use.

# Changelog

This Actor's version history is a separate document: https://apify.com/foxlabs/trustpilot-reviews-scraper/changelog.md

# Actor input Schema

## `companyDomains` (type: `array`):

One per line. A company domain as Trustpilot uses it (e.g. `www.amazon.com`, `booking.com`) or a full Trustpilot review URL (`https://www.trustpilot.com/review/www.amazon.com`).

## `maxReviews` (type: `integer`):

Cap on reviews per company (default 100; 0 = all available). Each page holds ~20 reviews.

## `minDatePublished` (type: `string`):

ISO date (e.g. `2026-01-01`). Reviews are read newest-first; the scraper stops a company once it reaches an older review. Leave empty for all. Use it to monitor only new reviews across runs.

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

How many companies to scrape at once. Kept low by default because each page goes through the unblocking proxy.

## Actor input object example

```json
{
  "companyDomains": [
    "www.amazon.com"
  ],
  "maxReviews": 100,
  "minDatePublished": "",
  "maxConcurrency": 2
}
```

# Actor output Schema

## `dataset` (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 = {
    "companyDomains": [
        "www.amazon.com"
    ],
    "maxReviews": 100,
    "maxConcurrency": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxlabs/trustpilot-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 = {
    "companyDomains": ["www.amazon.com"],
    "maxReviews": 100,
    "maxConcurrency": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("foxlabs/trustpilot-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 '{
  "companyDomains": [
    "www.amazon.com"
  ],
  "maxReviews": 100,
  "maxConcurrency": 2
}' |
apify call foxlabs/trustpilot-reviews-scraper --silent --output-dataset

```

## MCP server setup

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