# Trustpilot Reviews Scraper & API: Export All Reviews to CSV (`s_actors/trustpilot-reviews-scraper`) Actor

Trustpilot reviews of any company by link, website or name: rating, title, text, date, language, reviewer and country, verified and invited flags, company reply and reply time. Deep mode goes past the site's 200-review cap. Exact date windows, star and language filters, only new reviews.

- **URL**: https://apify.com/s_actors/trustpilot-reviews-scraper.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** E-commerce, Marketing, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.19 / 1,000 trustpilot reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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 Reviews Scraper & API: Export All Reviews to CSV

Download **Trustpilot reviews** of any company by **Trustpilot link, website or company name**: **stars**, **title and full text**, **date published and date of experience**, **language**, **reviewer name, country and number of reviews**, **verified** and **invited** flags (organic vs. collected by the company), **company reply** with **reply time in hours**, plus the company's **TrustScore**, total reviews, star counts and reply rate.

```json
{ "companies": ["https://www.trustpilot.com/review/www.backmarket.com", "pizzahut.com", "HelloFresh"], "maxReviewsPerCompany": 500 }
```

No Trustpilot account, no API key, no cookies. Use it as a **Trustpilot reviews API**: one call returns clean JSON, CSV or Excel.

#### Past the 200-review cap

Trustpilot shows at most **10 pages (200 reviews) for one set of filters**; page 11 asks you to log in. With **Deep mode** (on by default) the Actor splits the reviews into smaller sets: by stars, then by language, then by Trustpilot topics and search words, each with its own 200 newest. It stops when splitting brings almost nothing new and tells you the coverage in the log and in the company summary.

| Company | Reviews on Trustpilot | Without deep mode | With deep mode |
|---|---|---|---|
| Pizza Hut (US) | 3,594 | 200 | 2,625 (73%) |

#### Filters

| Filter | What it does |
|---|---|
| ⭐ **Stars** | Only 1-star, only 1-2 stars, only 5 stars… |
| 🌐 **Languages** | en, de, fr, es… or all (the Trustpilot page itself shows English only by default; the Actor takes **every language** unless you choose) |
| 📅 **Exact date window** | Reviews from / until a date or "30 days", not only the site's 30 days / 3 / 6 / 12 months |
| ✅ **Verified only**, 💬 **with company reply only** | Same switches as the site |
| 🔍 **Search in reviews** | Only reviews with a word, for example refund or delivery |
| 🆕 **Only new reviews** | Scheduled runs return only reviews published since the last run |

#### What you get

One row per review. Real example, 12 October 2026:

| companyName | rating | title | publishedAt | reviewerCountry | isInvited | replyHours |
|---|---|---|---|---|---|---|
| HelloFresh Deutschland | 5 | Gute und frische Produkte! | 2026-10-12 | DE | true | 1.3 |
| Amazon | 1 | A faulty product and an utterly unacceptable returns process | 2026-10-12 | GB | false | |
| Back Market - United States | 1 | Absolutely terrible experience | 2026-09-25 | US | false | 77.5 |

| Field | Description |
|---|---|
| `rating`, `title`, `text`, `language` | Stars (1-5), the review and its language code |
| `publishedAt`, `experiencedAt`, `updatedAt` | Published (UTC), date of the experience, last edit |
| `likes`, `reviewUrl` | "Useful" votes and a link to the review |
| `isVerified`, `verificationLevel`, `reviewSource`, `isInvited` | Verified by Trustpilot; how the review came in: `Organic` or invited by the company (`InvitationLinkApi`, `BasicLink`, `AFSv2`…) |
| `reviewerName`, `reviewerCountry`, `reviewerReviewCount`, `reviewerReviewsOfThisCompany`, `reviewerId`, `reviewerProfileUrl`, `reviewerImage` | The reviewer |
| `companyReply`, `companyRepliedAt`, `replyHours` | The company's reply and how many hours after the review it came |
| `location` | Location of multi-location businesses |
| `companyName`, `companyDomain`, `trustScore`, `totalReviews`, `companyCategory`, `companyUrl` | Company columns (switch off with **Company columns in every row**) |

The **Companies summary** (`COMPANIES` in the run's key-value store) has one entry per company: TrustScore, stars, total reviews and reviews in the last 12 months, **star counts**, **reviews per language**, **reply rate to negative reviews** and **average days to reply**, last reply, AI replies, claimed and since when, paid features, verified payment method, consumer alert, phone, email and address when public, categories, Trustpilot's AI summary, and how many reviews match your filters and were scraped.

#### How it works

1. Add **companies**: Trustpilot links (any country site), websites or domains, or names. Any number
2. Choose **Max reviews per company** (0 = all) and optionally **stars**, **languages**, a **date window**, **verified** / **replies** only, a **search word**
3. Run, then download the reviews as CSV, Excel, JSON or HTML

#### Monitor new Trustpilot reviews

Turn on **Only new reviews**, save the input as a task and schedule it (every hour, every day). Each run returns only reviews published since the previous run: send **new 1-star reviews** of your brand, or every new review of your competitors, to Slack, Discord, email or a Google Sheet with an Apify integration. Runs without new reviews cost only the run start.

#### Why this Actor

| | |
|---|---|
| 🔓 **More than 200 reviews** | Deep mode splits by stars, languages, topics and words, and reports coverage |
| 🌐 **Every language by default** | The site shows English only unless you switch |
| 📅 **Exact date windows** | "2026-07-01 to 2026-09-30" returns exactly that quarter |
| 🤝 **Invited vs. organic** and **reply time** | See which reviews the company collected and how fast it answers |
| 🔔 **Only new reviews** | Review monitoring for brands, agencies and competitor research |
| ⚡ **Fast** | Plain HTTP after one short browser check every few minutes, not a browser per page |
| 💵 **$0.24 per 1,000 reviews** | No subscription |

#### Pricing

Pay per review in the results, no subscription needed. Apify Scale and Business plans pay less:

| Event | Free and Starter plans | Scale plan | Business plan |
|---|---|---|---|
| Run start | $0.003 | $0.003 | $0.003 |
| Trustpilot review in the results | $0.00024 | $0.000216 | $0.000192 |

| Task | Cost |
|---|---|
| 1,000 reviews of one company | ~$0.24 |
| 100 latest reviews of 20 competitors | ~$0.48 |
| New reviews of your brand every hour for a month (~30 new a day) | ~$2.38 per month |

Companies that are not found are not charged.

#### Ready-made tasks

Open it, change the companies, and run:

| Task | What you get |
|---|---|
| [Export Trustpilot Reviews to CSV or Excel](https://apify.com/s_actors/trustpilot-reviews-scraper/examples/trustpilot-reviews-export) | The latest 500 reviews of a company, ready to download |

#### FAQ

**Do I need the Trustpilot API?** No. Trustpilot's official API is for businesses on paid plans and returns their own reviews. This Actor reads the public review pages any visitor sees, for any company, and gives you the same data as an API call.

**How many reviews can I get?** Up to 200 per filter set is what Trustpilot shows anyone. Deep mode collects more by combining filter sets (see the table above); for companies with tens of thousands of reviews it covers the recent years well and older years partly. The log and the `COMPANIES` summary say how many matched and how many were collected.

**Why does the total differ from the company page?** `totalReviews` is Trustpilot's own count. Your filters (languages, stars, dates) change `reviewsMatchingFilters`, and Trustpilot hides some reviews (removed, under moderation) from every visitor.

**Which country site?** All of them: reviews are the same on trustpilot.com, .co.uk, .de, .dk… Links to any of them work. For company names, set **Country for company names** (US by default) so the local company comes first.

**How fast is it?** About 20 reviews per request, several requests at once: 1,000 reviews take well under a minute after the start.

#### Use with the API and AI agents

Run it via the [Apify API](https://docs.apify.com/api/v2) from Python, Node.js or any HTTP client, or connect it to Claude, ChatGPT and other AI agents through the [Apify MCP server](https://mcp.apify.com): "What do customers complain about in Back Market's 1-star reviews from the last 30 days, and how fast does the company reply?"

#### Other tools

| Tool | What it does |
|---|---|
| [Google Sheets Import & Export](https://apify.com/s_actors/google-sheets-import-export) | Send the reviews to a Google Sheet |
| [Google Maps Scraper](https://apify.com/s_actors/google-maps-scraper) | Places with Google ratings and review counts |
| [Steam Reviews Scraper](https://apify.com/s_actors/steam-reviews-scraper) | Reviews of Steam games |

#### Is it legal?

The Actor collects only public reviews that Trustpilot shows to any visitor without logging in. Reviewers appear with the display name and country they chose to show publicly.

# Actor input Schema

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

One per line: Trustpilot review links (trustpilot.com/review/www.amazon.com, any country site), websites or domains (amazon.com) or company names (the best Trustpilot search match is taken). Any number of companies.

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

Limit for each company. 0 = every review that matches the filters (big companies have tens of thousands; see Deep mode).

## `deepScrape` (type: `boolean`):

Trustpilot shows at most 200 reviews (10 pages) for one set of filters. When more match, the scraper splits them by stars, then languages, then topics and search words, each with its own 200, and stops when splitting brings almost nothing new. Off = at most 200 per company (per star / language you choose).

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

Only reviews with these ratings. Empty = all.

## `languages` (type: `array`):

Two-letter language codes (en, de, fr, es, it, nl, da, sv, pl, pt…). Empty = every language (the Trustpilot page itself shows English only by default).

## `dateFrom` (type: `string`):

Only reviews published on or after this date: 2026-01-01, or relative: 30 days, 2 weeks, 6 months, 1 year. Exact, not just the site's "last 30 days / 3 / 6 / 12 months".

## `dateTo` (type: `string`):

Only reviews published on or before this date (the whole day counts): 2026-06-30, or relative: 30 days (ago).

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

Order of the reviews. Newest first is needed for date windows and only new reviews.

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

Only reviews Trustpilot marks as verified.

## `withRepliesOnly` (type: `boolean`):

Only reviews the company answered.

## `searchText` (type: `string`):

Only reviews containing this word or phrase (Trustpilot's own search box), for example refund or delivery.

## `onlyNewReviews` (type: `boolean`):

Return only reviews published after the newest one of the previous run with the same monitor name. The first run returns the usual result and remembers where it stopped. Uses newest-first order.

## `monitorName` (type: `string`):

Keeps separate "only new" memories for different lists of companies, for example competitors or our-brands. Empty = default.

## `includeCompanyInfo` (type: `boolean`):

Adds TrustScore, total reviews, category and the company link to each review row. The full company profile (star counts, reply rate, claimed, AI summary, languages) is always in the COMPANIES record.

## `searchCountry` (type: `string`):

Two-letter country code used when a company is given by name (Trustpilot search ranks local companies first): US, GB, DE, FR, DK… Not used for links and domains.

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

How many Trustpilot pages are loaded at once.

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

Apify datacenter proxy (default) works: every request gets a new IP. Trustpilot answers only browsers, so the run starts a browser for a few seconds every few minutes to pass the check.

## `debugLog` (type: `boolean`):

Log every retry and access token.

## Actor input object example

```json
{
  "companies": [
    "https://www.trustpilot.com/review/www.backmarket.com",
    "pizzahut.com"
  ],
  "maxReviewsPerCompany": 100,
  "deepScrape": true,
  "sort": "recency",
  "verifiedOnly": false,
  "withRepliesOnly": false,
  "onlyNewReviews": false,
  "includeCompanyInfo": true,
  "searchCountry": "US",
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "debugLog": false
}
```

# Actor output Schema

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

Stars, title, text, date, reviewer and country, language, verified and invited flags, company reply and reply time.

## `companies` (type: `string`):

One entry per company: TrustScore, total reviews and star counts, reviews per language, reply rate and days to reply, claimed, category, AI summary, reviews matching your filters and reviews scraped.

## `all` (type: `string`):

Every field of every review with the company columns.

# 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": [
        "https://www.trustpilot.com/review/www.backmarket.com",
        "pizzahut.com"
    ],
    "maxReviewsPerCompany": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/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 = {
    "companies": [
        "https://www.trustpilot.com/review/www.backmarket.com",
        "pizzahut.com",
    ],
    "maxReviewsPerCompany": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("s_actors/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 '{
  "companies": [
    "https://www.trustpilot.com/review/www.backmarket.com",
    "pizzahut.com"
  ],
  "maxReviewsPerCompany": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call s_actors/trustpilot-reviews-scraper --silent --output-dataset

```

## MCP server setup

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