# Trustpilot Reviews Scraper: reviews, companies & search (`pikoulas/trustpilot`) Actor

Get Trustpilot reviews of any company by domain or URL, past the 200 a visitor sees, with rating, title, text, date, language, reviewer and the company's reply. Filter by stars, language, date, verified or replied. Also find companies by search or category, with TrustScore and contacts.

- **URL**: https://apify.com/pikoulas/trustpilot.md
- **Developed by:** [Spyridon Pikoulas](https://apify.com/pikoulas) (community)
- **Categories:** E-commerce, Lead generation, AI
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 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.
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

**Retired on 2026-11-06.** Trustpilot's terms ban web scraping ([link](https://legal.trustpilot.com/for-reviewers/end-user-terms-and-conditions)), so this Actor no longer reads the site. A run reads nothing, charges nothing and ends with this notice.

Get Trustpilot reviews of any company, and find companies by search or category, without an
account:

- **Reviews:** a company's reviews, newest first, by its domain or Trustpilot URL. Trustpilot
  shows a visitor 200 reviews per filter; past that, the reviews are read again star by star and
  language by language, so a company gives far more than 200.
- **Filters:** stars, language, published in the last 30 days to 12 months, verified only, or
  replied to only.
- **Companies:** the companies a Trustpilot search or category lists, with TrustScore, review
  count, categories, website, email, phone and address, and optionally their reviews.

Every review comes with its rating, title, text, language, publish and experience dates, likes,
verification, the reviewer's name, country and review count, the company's reply and its date,
and the company's name, domain and TrustScore.

It costs **$0.50 per 1,000 reviews** on Apify's paid plans ($1 on the free plan), and $1 per
1,000 companies ($2 on the free plan).

### What people use it for

- **Customer feedback analysis:** what customers praise and complain about, as text for an LLM,
  sentiment analysis or a dashboard.
- **Competitor research:** a rival's 1-star reviews, how fast it replies, how its score moves.
- **Reputation monitoring:** a scheduled run with Published set to the last 30 days.
- **Lead generation:** companies in a category, with their contacts and how customers rate them.

### How to scrape Trustpilot reviews

1. Click **Try for free**; Apify's free plan covers a first run.
2. Fill in **Companies** with domains or Trustpilot URLs, and how many reviews you want from
   each, or **Search terms** for companies.
3. Click **Start**, then download the results as JSON, CSV, Excel or HTML, or read them through
   the API.

```json
{
  "companies": ["www.amazon.com", "https://www.trustpilot.com/review/www.bol.com"],
  "maxReviewsPerCompany": 1000,
  "stars": ["1", "2"],
  "language": "en",
  "dateRange": "last12months",
  "searchTerms": ["vpn"],
  "maxCompaniesPerSearch": 20
}
```

Trustpilot search and category URLs, such as `https://www.trustpilot.com/categories/bank?country=GB`,
go under Companies too. Turn on **Reviews of the companies found** to get each found company's
reviews as well.

### Output

A review:

```json
{
  "id": "6ae70ffa5fabbe227052273c",
  "url": "https://www.trustpilot.com/reviews/6ae70ffa5fabbe227052273c",
  "rating": 1,
  "title": "BEWARE AMAZON FALLING APART",
  "text": "THEY ARE BLOCKING PEOPLE FROM USING CUSTOMER CARE !!! …",
  "language": "en",
  "publishedAt": "2026-11-01T12:10:02Z",
  "experiencedAt": "2026-11-01",
  "updatedAt": null,
  "likes": 0,
  "isVerified": false,
  "source": "Organic",
  "reviewerName": "Ms Maria Jervis",
  "reviewerId": "5f898581cacd0a001a0701b8",
  "reviewerCountry": "MT",
  "reviewerReviewCount": 179,
  "replyText": null,
  "repliedAt": null,
  "companyName": "Amazon",
  "companyDomain": "www.amazon.com",
  "companyTrustScore": 1.5,
  "companyReviewCount": 50035,
  "input": "www.amazon.com"
}
```

A company:

```json
{
  "id": "5791ee7a0000ff0005929cc1",
  "name": "Atom bank",
  "domain": "atombank.co.uk",
  "url": "https://www.trustpilot.com/review/atombank.co.uk",
  "trustScore": 4.8,
  "stars": 5,
  "reviewCount": 22242,
  "categories": ["Bank", "Private Sector Bank", "Mortgage Lender", "Savings Bank", "Financial Institution"],
  "website": "https://www.atombank.co.uk",
  "email": "customer.operations@atombank.co.uk",
  "phone": "0333 399 0050",
  "address": "The Pattern Shop",
  "city": "Newcastle upon Tyne",
  "zipCode": "NE1 3PD",
  "country": "United Kingdom",
  "logoUrl": "https://s3-eu-west-1.amazonaws.com/tpd/screenshotlogo-domain/5791ee7a0000ff0005929cc1/198x149.png",
  "input": "https://www.trustpilot.com/categories/bank?country=GB"
}
```

### Use it as an API

One call runs it and returns the results as JSON (for runs under 5 minutes; longer ones start a
run and read its dataset). Apify's Python and JavaScript clients, and its Make, Zapier and n8n
integrations, work the same way.

```bash
curl -X POST "https://api.apify.com/v2/acts/pikoulas~trustpilot/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies": ["www.amazon.com"], "maxReviewsPerCompany": 50}'
```

AI agents can call it as a tool through Apify's MCP server: `https://mcp.apify.com?tools=pikoulas/trustpilot`.

### How much does it cost to scrape Trustpilot?

You pay **$0.0005 per review** on Apify's paid plans, which is $0.50 per 1,000, and $0.001 on the
free plan; a company from a search or category is $0.001 ($0.002 on the free plan). There is no
fee per run and no monthly fee. Runs that go through Apify's residential proxy pay its traffic
too, at $0.0012 per 100 KB, about $0.0001 a review; they only do when you set it, or when
Trustpilot refuses Apify's own IPs.

### Good to know

- A review without a title of its own has its first words as the title, ending with "…", as
  Trustpilot shows it.
- Past the 200 reviews of a filter, they come star by star and language by language, newest first
  within each; a company with more than 200 reviews of the same stars and language gives the
  newest 200 of those.
- A review or company found twice in a run is given once.
- Search finds companies in every country; a category lists those of the country in its URL
  (`?country=GB`), the US's without one.

### FAQ

#### Is it legal to scrape Trustpilot?

It collects only what Trustpilot shows publicly, without logging in. Personal data is protected by laws such as the GDPR and the CCPA. If you're unsure, ask a lawyer;
Apify's [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/) is a good start.

#### Something missing or not working?

Open an issue on the **Issues** tab with the input you used, or ask there for a field you need.

# Actor input Schema

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

Domains (amazon.com) or Trustpilot company URLs (trustpilot.com/review/www.amazon.com), for their reviews. Trustpilot search and category URLs work here too, for their companies.

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

Newest first. Trustpilot shows a visitor 200 per filter; past that, the reviews are read again star by star and language by language, for far more than 200.

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

Only reviews with these ratings. Empty: all.

## `language` (type: `string`):

Only reviews in this language, by its code: en, de, fr... all: every language.

## `dateRange` (type: `string`):

Only reviews published in this period.

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

Only reviews Trustpilot marks as verified.

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

Only reviews the company has replied to.

## `searchTerms` (type: `array`):

Companies found by Trustpilot's search, with TrustScore, review count, categories and contacts.

## `maxCompaniesPerSearch` (type: `integer`):

Companies from each search term, search URL or category URL.

## `reviewsOfFoundCompanies` (type: `boolean`):

Also gets the reviews of each company a search or category finds, up to Max reviews per company.

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

Not needed for most runs. When Trustpilot refuses the run's IP on Apify, the run switches to Apify's residential proxy by itself.

## Actor input object example

```json
{
  "companies": [
    "www.amazon.com"
  ],
  "maxReviewsPerCompany": 100,
  "stars": [],
  "language": "all",
  "dateRange": "",
  "verifiedOnly": false,
  "withRepliesOnly": false,
  "maxCompaniesPerSearch": 20,
  "reviewsOfFoundCompanies": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "companies": [
        "www.amazon.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pikoulas/trustpilot").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": ["www.amazon.com"] }

# Run the Actor and wait for it to finish
run = client.actor("pikoulas/trustpilot").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": [
    "www.amazon.com"
  ]
}' |
apify call pikoulas/trustpilot --silent --output-dataset

```

## MCP server setup

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

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/Kp9qCKsCOBxqwGPwh/builds/D3GPQy07tYcOqR3MV/openapi.json
