# Trustpilot All Reviews Scraper (`data_minds/trustpilot-all-reviews-scraper`) Actor

Scrape Trustpilot reviews for any company: rating, text, reviewer, dates, company reply and topics. Goes past the 200-review limit. Adds trust score, rating split, trend and competitors. No login. Auto proxy fallback. Export JSON, CSV or Excel.

- **URL**: https://apify.com/data_minds/trustpilot-all-reviews-scraper.md
- **Developed by:** [Data Minds](https://apify.com/data_minds) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### Trustpilot All Reviews Scraper — reviews, ratings, replies, insights

Trustpilot All Reviews Scraper extracts public Trustpilot reviews for any company: star rating, title, full text, language, dates, verification, reviewer details and the company's reply. Every review is structured JSON, ready to pass directly to an LLM, index into a vector store, or feed a customer-feedback analytics pipeline. **No Trustpilot account, cookies or API key needed**. Turn on AI insights and each company also gets a summary with trust score, rating split, topics and competitors, so your next brand-monitoring report starts from clean data.

### Why choose this Trustpilot reviews scraper?

- **Reviews past the 200-review wall.** Without a login Trustpilot shows only 200 reviews per filter combination. The Actor splits a company by stars, language, date window and sort order, then with several filter combinations, so you collect far more reviews than the website lets a guest open.
- **Honest coverage.** The log and the summary table say how many reviews were collected out of how many match your filters.
- **Built-in insights.** Topics, reply speed and reviewer flags per review, plus one company summary: Trustpilot's AI summary, sentiment split, monthly trend, complaint words, contacts and similar companies.
- **Separate tables per section.** Reviews, company summaries, rating split, topics, monthly trend, languages, topic summaries, similar companies, company replies and failed inputs each get their own output table. Reviews and company replies fill live while the run is going; the other tables fill as each company finishes.
- **Automatic proxy fallback.** The Actor starts without a proxy and only switches to a datacenter and then a residential proxy when Trustpilot refuses the request.

### Key features

- Scrape reviews of one or many companies in a single run (bulk input).
- Accepts company domains, Trustpilot review links or brand names.
- Filter by star rating, time window, from/until dates, language, verified reviews and reviews with a company reply.
- Sort by most recent or most relevant.
- Live progress log: the first 25 saved reviews are printed one by one, then a running count.
- Failed inputs are listed in their own table, never silently dropped.

### Input

```json
{
  "urls": ["apple.com", "https://www.trustpilot.com/review/airbnb.com", "Nike"],
  "maxItems": 100,
  "sortBy": "recency",
  "reviewInsights": true,
  "filterStars": ["1", "2"],
  "filterDateRange": "12m",
  "filterLanguages": ["en"],
  "filterVerifiedOnly": false,
  "filterRepliesOnly": false,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

| Field | What it does |
|---|---|
| 🏢 `urls` (required) | One per line: company domain, Trustpilot review link or brand name. Duplicates are removed. |
| 📊 `maxItems` | Reviews per company. `0` means everything reachable without a login. |
| 🔃 `sortBy` | `recency` (newest first) or `relevance`. |
| 🧠 `reviewInsights` | Adds topics, reply speed and reviewer flags to each review, and saves one summary per company. |
| ⭐ `filterStars` | Keep only these star ratings (`"1"` to `"5"`). Empty means all. |
| ⏰ `filterDateRange` | `all`, `30d`, `3m`, `6m` or `12m`, counted back from today. |
| 📅 `startDate` / 📆 `endDate` | Date window as `YYYY-MM-DD`. When set, `filterDateRange` is ignored. |
| 🌍 `filterLanguages` | Language codes such as `en` or `de`. Empty means every language. |
| ✅ `filterVerifiedOnly` | Only verified reviews. |
| 💬 `filterRepliesOnly` | Only reviews the company answered. |
| 🚀 `maxConcurrency` | Pages read at the same time (1 to 10, default 4). |
| 🔁 `maxRequestRetries` | Retries per failed page (0 to 10, default 4). |
| 🌐 `proxyConfiguration` | Optional. No proxy by default; the Actor escalates by itself when blocked. |

The older names `startUrls`, `searchTerms`, `limit`, `stars`, `includeCompanyDetails` and similar are still accepted.

### Output

Every review is one row in the default table (real example, shortened):

```json
{
  "record_type": "review",
  "review_id": "6ae03eb2c94de6194a53b62d",
  "review_url": "https://www.trustpilot.com/reviews/6ae03eb2c94de6194a53b62d",
  "company_name": "Apple",
  "company_domain": "www.apple.com",
  "company_trust_score": 1.6,
  "company_total_reviews": 12890,
  "title": "I’ve been trying to create an Apple…",
  "rating": 1,
  "sentiment": "negative",
  "language": "en",
  "published_date": "2026-10-27T08:03:30.000Z",
  "is_verified": false,
  "reviewer_name": "? Phát",
  "reviewer_country": "VN",
  "reviewer_total_reviews": 2,
  "has_company_reply": false,
  "company_reply": null,
  "word_count": 147,
  "topics": ["customer_service", "wait_time"],
  "days_experience_to_review": 0.34,
  "is_first_time_reviewer": false,
  "scraped_at": "2026-10-27T09:15:00Z"
}
```

The fields `topics`, `days_to_reply`, `days_experience_to_review`, `is_first_time_reviewer` and `is_edited` appear when AI insights are on. Topics are found by keyword rules on English text, not by a language model.

| Output table | Content |
|---|---|
| Reviews (default) | One row per review, with several views (overview, by company, reviewers, company replies, insights). |
| Company summaries | One row per company: trust score, AI summary, sentiment split, reply rate, contacts, coverage. |
| Rating distribution | Star split 1 to 5 per company. |
| Topics | Most mentioned complaint and praise topics. |
| Monthly trend | Reviews and average rating per month. |
| Languages | Review count per language. |
| Topic summaries | Trustpilot's AI summary per topic. |
| Similar companies | Competitors Trustpilot lists. |
| Company replies | Every collected review the company answered, with reply text and days to reply. |
| Failed inputs | Companies or links that could not be read, with the reason. |

Fields Trustpilot does not provide for a company (for example email or phone) stay `null`. Reviews and company replies fill live, the other tables as each company finishes, and you can export each one to JSON, CSV or Excel.

### 🚀 How to use (Apify Console)

1. Log in at https://console.apify.com and open **Actors**.
2. Find **Trustpilot All Reviews Scraper** and open it.
3. Add your companies, set the maximum number of reviews and any filters.
4. Click **Start**.
5. Watch the log: the first reviews are printed as they arrive, then a running count.
6. Open the **Output** tab when the run completes.
7. Export any table to JSON, CSV or Excel.

### 🤖 Use via API / MCP

```bash
curl -X POST "https://api.apify.com/v2/actors/<ACTOR_ID>/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls":["apple.com"],"maxItems":50}'
```

For AI agents, connect the Apify MCP server with `claude mcp add --transport http apify "https://mcp.apify.com"`; the agent finds this Actor through the server's search, details and call tools.

### Best use cases

- Brand monitoring and reputation tracking across Trustpilot.
- Competitor analysis: compare trust score, rating split and topics.
- Customer-support research: find what drives one-star reviews and how fast a company replies.
- Training and evaluating sentiment models on labelled reviews.
- Market research and due diligence before buying from or partnering with a company.

### Frequently asked questions

**Do I need a Trustpilot account?** No. The Actor reads public pages only.

**How many reviews can I get?** Trustpilot limits guests to 200 reviews per filter combination. The Actor splits the company into many combinations and reports how many of the matching reviews it reached.

**What happens if Trustpilot blocks the request?** The Actor retries, then switches from no proxy to a datacenter proxy and then a residential proxy, and keeps the stronger one for the rest of the run. Every switch is logged.

**Can I search by brand name?** Yes. The Actor looks the name up on Trustpilot and uses the closest match; unrelated results are skipped and listed in the failed inputs table.

**Are reviewer profile links or category pages supported?** No. Pass the company the reviews are about.

**What if the page layout changes?** The Actor adapts to layout changes where it can and warns in the log when a filter is not applied as sent.

**Is scraping Trustpilot legal?** The Actor collects publicly visible information. You are responsible for using the data in line with the law (such as GDPR) and Trustpilot's terms.

### Support and feedback

Found a bug or need another field? Open an issue from the Actor page in Apify Console.

# Actor input Schema

## `urls` (type: `array`):

One per line: a company domain (apple.com), a Trustpilot review link (https://www.trustpilot.com/review/apple.com), or a brand name (Apple). Duplicates are removed. Add as many companies as you like.

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

Reviews to collect for each company. Use 0 for everything Trustpilot shows without a login. Free plan: up to 10 reviews per run; paid plans have no run limit.

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

Newest first, or Trustpilot's most relevant first.

## `reviewInsights` (type: `boolean`):

Adds topics, reply speed and reviewer flags to every review, and saves one summary per company: Trustpilot's AI summary, sentiment split, top topics, monthly trend, complaint words, contacts and competitors.

## `filterStars` (type: `array`):

Keep only reviews with these star ratings. Leave empty for all ratings.

## `filterDateRange` (type: `string`):

Only reviews published within this period, counted back from today. Ignored when a from or until date is set.

## `startDate` (type: `string`):

Only reviews published on or after this date (YYYY-MM-DD).

## `endDate` (type: `string`):

Only reviews published on or before this date (YYYY-MM-DD).

## `filterLanguages` (type: `array`):

Pick one or more review languages. Leave empty to get reviews in every language.

## `filterVerifiedOnly` (type: `boolean`):

Keep only reviews Trustpilot marks as verified.

## `filterRepliesOnly` (type: `boolean`):

Keep only reviews that have a reply from the company.

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

How many pages are read at the same time. Lower it if Trustpilot slows you down.

## `maxRequestRetries` (type: `integer`):

How often a failed page is tried again before it is skipped.

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

By default no proxy is used. If Trustpilot refuses the request, the Actor switches to a stronger proxy automatically and keeps using it.

## Actor input object example

```json
{
  "urls": [
    "apple.com"
  ],
  "maxItems": 10,
  "sortBy": "recency",
  "reviewInsights": true,
  "filterStars": [],
  "filterDateRange": "all",
  "filterLanguages": [],
  "filterVerifiedOnly": false,
  "filterRepliesOnly": false,
  "maxConcurrency": 4,
  "maxRequestRetries": 4,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One row per review.

## `companyContext` (type: `string`):

Reviews with the company name, domain and TrustScore.

## `insights` (type: `string`):

Sentiment, topics and timing per review.

## `companySummaries` (type: `string`):

One row per company: trust score, AI summary, sentiment split, reply rate, contacts.

## `ratingDistribution` (type: `string`):

Star split (1-5) per company.

## `topics` (type: `string`):

Most mentioned complaint and praise topics per company.

## `monthlyTrend` (type: `string`):

Reviews and average rating per month.

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

Review count per language.

## `topicSummaries` (type: `string`):

Trustpilot AI summary per topic.

## `similarCompanies` (type: `string`):

Competitors Trustpilot lists for the company.

## `companyReplies` (type: `string`):

Every collected review the company replied to, with reply text and speed.

## `failedInputs` (type: `string`):

Companies, links or names that could not be read.

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

Counts and timing of the run.

# 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 = {
    "urls": [
        "apple.com"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_minds/trustpilot-all-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 = {
    "urls": ["apple.com"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_minds/trustpilot-all-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 '{
  "urls": [
    "apple.com"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_minds/trustpilot-all-reviews-scraper --silent --output-dataset

```

## MCP server setup

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