# Trustpilot Reviews Scraper (`clearrun/trustpilot-reviews`) Actor

Public Trustpilot reviews for any company by domain or review URL: rating, title, text, dates, verified flag, likes, reviewer display name and country, company reply, plus TrustScore, star rating, review count and categories on every record. Filter by stars and language; sort by recency.

- **URL**: https://apify.com/clearrun/trustpilot-reviews.md
- **Developed by:** [Clearrun Data](https://apify.com/clearrun) (community)
- **Categories:** Business, Agents, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.30 / 1,000 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

## Trustpilot Reviews Scraper

Get a company's public Trustpilot reviews as structured JSON. Give it a domain (`apify.com`) or a Trustpilot review
page URL and you get every review with its star rating, title, text, publication date, date of experience, language,
verified flag, likes, the reviewer's public display name and country, and the company's reply if there is one. Every
record also carries the company summary: name, TrustScore, star rating, total review count and categories. Filter by
star rating and language, sort by newest or by Trustpilot's relevance, and cap the number of reviews per company.

Built for reputation monitoring, competitor research, customer-feedback analysis and feeding review data to AI agents.
Only public review pages are read; the only reviewer data collected is the display name and country shown on the review.

### What you get

```json
{
  "companyDomain": "apify.com",
  "reviewId": "66b0c1e2f3a4b5c6d7e8f901",
  "title": "Reliable platform for web automation",
  "text": "We moved our scrapers to Apify last year. The scheduling and proxy handling saved us weeks of work.",
  "rating": 5,
  "date": "2026-08-14T09:21:33.000Z",
  "dateOfExperience": "2026-08-10T00:00:00.000Z",
  "language": "en",
  "verified": true,
  "likes": 2,
  "reviewerName": "Martin",
  "reviewerCountry": "GB",
  "companyReply": {
    "text": "Thank you, Martin. Happy to hear the scheduler is working well for you.",
    "date": "2026-08-15T07:02:10.000Z"
  },
  "url": "https://www.trustpilot.com/reviews/66b0c1e2f3a4b5c6d7e8f901",
  "companyName": "Apify",
  "companyTrustScore": 4.6,
  "companyRating": 4.5,
  "companyReviewCount": 212,
  "companyCategories": ["Software Company", "Data Management Software"],
  "page": 1,
  "scrapedAt": "2026-09-09T10:15:00.000Z"
}
```

| Field | Notes |
|---|---|
| `reviewId`, `url` | Trustpilot's review ID and its public URL |
| `rating` | 1–5 (number) |
| `date`, `dateOfExperience` | ISO 8601 |
| `language` | Two-letter code of the review text |
| `verified` | `true` when Trustpilot marks the review as verified |
| `likes` | "Useful" votes on the review |
| `reviewerName`, `reviewerCountry` | Public display name and country code as shown on the review; nothing else about the reviewer is collected |
| `companyReply` | `{ text, date }` or `null` |
| `companyName`, `companyTrustScore`, `companyRating`, `companyReviewCount`, `companyCategories` | Company summary, repeated on every record |

A `STATS` record in the run's key-value store holds one summary per company: name, TrustScore, rating, review count,
categories, reviews delivered, pages fetched, rating distribution and average rating of the delivered reviews. A company
that cannot be found or loaded produces one record with an `error` field, which is not charged.

### Input

| Field | Default | Notes |
|---|---|---|
| `companies` | — | Domains or Trustpilot review URLs, one per line |
| `maxReviewsPerCompany` | `100` | Trustpilot shows 20 reviews per page |
| `stars` | all | Any of `1`–`5`, e.g. `["1", "2"]` for negative reviews only |
| `languages` | `all` | `all` or one code such as `en`, `de`, `fr` |
| `sort` | `recency` | `recency` (newest first) or `relevance` |
| `proxyConfiguration` | Apify residential | Trustpilot blocks data-centre IPs; keep residential on |

```json
{ "companies": ["apify.com", "https://www.trustpilot.com/review/zapier.com"], "maxReviewsPerCompany": 200, "stars": ["1", "2"], "languages": "en" }
```

### Pricing

Pay per review delivered. The company summary on each record and in `STATS` is free, duplicates within a run are never
charged, and a company with no matching reviews costs nothing.

#### Speed & cost

100 reviews cost about $0.03. This actor runs a real browser (Playwright) to get past Trustpilot's WAF challenge, so
platform usage per browser page load is in the $0.05–0.20 range typical for browser-based actors — but each page
carries about 20 reviews, so the practical platform cost per 100 reviews (roughly 5 page loads) is much lower than
that per-page figure. `maxReviewsPerCompany` allows up to 50,000 per company (above the usual 5,000 cap) so a large
company's full review history can be pulled in one run.

### Typical uses

- Monitoring your own or a competitor's reputation and response rate
- Mining negative reviews for product and support issues
- Sentiment and topic analysis across companies in a category
- Giving an AI agent live customer feedback about a vendor

### Use from an AI agent

Available through the Apify MCP server: "Get the 50 most recent 1- and 2-star Trustpilot reviews of apify.com and
summarise the complaints."

API call:

```bash
curl -X POST "https://api.apify.com/v2/acts/clearrun~trustpilot-reviews/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies": ["apify.com"], "maxReviewsPerCompany": 50, "stars": ["1", "2"]}'
```

### Support

Open an issue on the Issues tab with the company, the input you used and the run ID. Issues are answered within one working day.

# Actor input Schema

## `companies` (type: `array`):

One company per line: a domain (apify.com) or a Trustpilot review page URL (https://www.trustpilot.com/review/apify.com).

## `maxReviewsPerCompany` (type: `integer`):

Stop after this many reviews for each company. Trustpilot shows 20 reviews per page.

## `stars` (type: `array`):

Only reviews with these star ratings. Leave empty for all.

## `languages` (type: `string`):

"all" for reviews in every language, or one language code such as "en", "de", "fr".

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

Newest first, or Trustpilot's relevance order.

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

Trustpilot blocks data-centre traffic, so residential proxies are used by default.

## Actor input object example

```json
{
  "companies": [
    "apify.com"
  ],
  "maxReviewsPerCompany": 100,
  "stars": [],
  "languages": "all",
  "sort": "recency",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

One record per Trustpilot review with the company summary on every record

## `stats` (type: `string`):

Per company: name, TrustScore, rating, review count, categories, delivered count and rating distribution

# 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 = {
    "companies": [
        "apify.com"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearrun/trustpilot-reviews").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 = {
    "companies": ["apify.com"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

```

## MCP server setup

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

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/Vd9tcAw6VkzLVxRxz/builds/hjt6Fc9Z590xd7Axp/openapi.json
