# Trustpilot Reviews Scraper - Ratings & Feedback (`flash_scraper/trustpilot-reviews-scraper`) Actor

Scrape Trustpilot reviews for any company — star rating, review text, date, reviewer & company reply — as clean flat rows with ISO dates, a verified flag, a has-reply flag and a 0-100 review score. Filter by rating/reply, dedup, monitor reputation. Export

- **URL**: https://apify.com/flash\_scraper/trustpilot-reviews-scraper.md
- **Developed by:** [Flash Scrape](https://apify.com/flash_scraper) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.001 / review result

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/platform/actors/running/actors-in-store#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 - Ratings & Feedback

**This Trustpilot reviews scraper turns any company's Trustpilot page into a clean, analysis-ready feed** — one flat row per review with the star rating, headline, full text, reviewer name and country, the review date (ISO + plain date), a verified flag, the company's reply, and a 0–100 review score for fast triage. Give it a company domain, filter to what you care about, and export to CSV, JSON, or Excel.

Built for **reputation and CX teams, market researchers, founders, and analysts** who want a spreadsheet of reviews — not a nested scrape. It reads only **public** review data: no login, no cookies.

***

### How to scrape Trustpilot reviews

1. Enter a **company domain** — e.g. `pipedrive.com` (or paste a full Trustpilot review URL).
2. Choose how many reviews, the sort order, and any filters (star ratings, date window, language, verified-only).
3. The scraper pulls the reviews via the proven [`automation-lab/trustpilot`](https://apify.com/automation-lab/trustpilot) engine.
4. Each review is normalized: snake\_case fields, ISO 8601 dates plus a split `published_date`, a boolean `verified` flag, and a `has_reply` flag.
5. Duplicates are removed, your filters applied, and every review gets a **0–100 review\_score** (rating + recency + verified + engagement + completeness).
6. You get a clean table to download as CSV, JSON, or Excel — or pull via API.

No coding, no Trustpilot account, no API key.

***

### What data you get

Every row is one review:

- **Rating, title, and full text** — the core review content.
- **Reviewer name, country, and history** — `reviewer_total_reviews` shows how prolific the reviewer is.
- **Verified flag + raw verification level** — know which reviews are verified at a glance.
- **Dates** — `published_at` (ISO 8601 UTC), `published_date` (YYYY-MM-DD), and `experience_date`.
- **Company reply** — `has_reply`, `reply_text`, `reply_published_at`, `reply_updated_at`.
- **Likes** — how many people found the review useful.
- **A 0–100 review\_score** — blends rating, recency, verified status, engagement, and text completeness.

***

### Filters & options

- **Star ratings** — fetch only 1★, 5★, etc.
- **Date window** — last 30 days / 3 / 6 / 12 months.
- **Languages** — keep only chosen languages.
- **Verified only** — fetch only verified reviews.
- **Search within reviews** — only reviews containing a phrase.
- **Minimum rating** — drop reviews below N stars (applied after scraping).
- **Only with a company reply** — keep reviews the company answered.

#### Input

| Field | Type | Description |
|---|---|---|
| `companyDomain` | string | Company to scrape, e.g. `pipedrive.com`. **Required.** |
| `maxReviews` | integer | Max reviews to fetch. Default `100`. |
| `sort` | string | `recency` (newest) or `relevancy`. |
| `stars` | array | Only these star ratings (`["1","5"]`). |
| `dateWindow` | string | `last30days` / `last3months` / `last6months` / `last12months`. |
| `languages` | array | Language codes to keep. |
| `onlyVerified` | boolean | Fetch verified reviews only. |
| `minRating` | integer | Drop reviews below N stars (`0` = no filter). |
| `onlyWithReply` | boolean | Keep only replied-to reviews. |

Company replies are **always** included when present (`has_reply`, `reply_text`, `reply_published_at`, `reply_updated_at`) — there is no switch to turn them off, and no keyword/text filter on review bodies.

**Example input:**

```json
{
  "companyDomain": "pipedrive.com",
  "maxReviews": 200,
  "sort": "recency",
  "stars": ["1", "2"],
  "dateWindow": "last3months",
  "onlyWithReply": true
}
```

#### JSON output sample

```json
{
  "review_score": 88,
  "review_id": "6627f1a0e4b0abc123",
  "reviewer_name": "Jane D.",
  "rating": 5,
  "title": "Best CRM we've used",
  "text": "Setup took ten minutes and support replied within the hour…",
  "language": "en",
  "published_at": "2026-05-14T21:34:45+00:00",
  "published_date": "2026-05-14",
  "experience_date": "2026-05-12",
  "verified": true,
  "verification_level": "verified",
  "reviewer_country": "US",
  "reviewer_total_reviews": 3,
  "likes": 2,
  "has_reply": true,
  "reply_text": "Thanks so much for the kind words, Jane!",
  "reply_published_at": "2026-05-15T09:02:11+00:00",
  "reply_updated_at": null
}
```

Results render as a clean, sortable table on the Output tab and export to CSV, JSON, or Excel.

***

### Use cases

- **Reputation monitoring** — track new 1★ reviews for your brand or a competitor.
- **CX analysis** — pull thousands of reviews to find recurring complaints and themes.
- **Competitive research** — compare review sentiment and reply rates across companies.
- **Review response audits** — `has_reply` shows how responsive a company is.

***

### Use with AI agents & automation

Plug this into your stack: run it from the Apify **MCP** server so AI agents (Claude, ChatGPT, Cursor) can pull reviews as a tool call, schedule runs through **Make**, **n8n**, or **Zapier** to alert on new negative reviews, or sync the dataset to **Google Sheets** for a live reputation dashboard. Clean flat JSON drops into sentiment pipelines with no glue code.

***

### Pricing

**Pay-per-result — you're charged only for the reviews delivered after your filters.** Use `maxReviews` and the filters to keep cost predictable. See the Apify Store page for the current per-result price.

***

### FAQ

**Do I need a Trustpilot account or API key?** No. It reads public reviews with no login and no key.

**How is `verified` determined?** From Trustpilot's verification level — verified/invited reviews are flagged `true`, and the raw level is kept in `verification_level`.

**Can I scrape a competitor's reviews?** Yes — any company with a public Trustpilot page. Just use their domain.

**Is scraping Trustpilot legal?** This collects **public** reviews only. Trustpilot's terms restrict automated access and reviews contain personal data (names, countries), so handle the data lawfully (GDPR) and follow Trustpilot's terms. For research/monitoring use.

**Can I export to CSV or Google Sheets?** Yes — CSV, JSON, or Excel from the Output tab, or sync to Google Sheets via Make, n8n, or Zapier.

***

### Other Flash Scrape scrapers

- [Indeed Jobs Scraper](https://apify.com/flash_scraper/indeed-jobs-scraper) — Indeed job listings
- [Google Maps Leads Scraper](https://apify.com/flash_scraper/google-maps-leads-opener) — Google Maps business leads
- [Yelp Leads Scraper](https://apify.com/flash_scraper/yelp-leads-scraper) — Yelp business leads
- [Instagram Leads Scraper](https://apify.com/flash_scraper/instagram-leads-scraper) — Instagram profile leads
- [TikTok Leads Scraper](https://apify.com/flash_scraper/tiktok-leads-scraper) — TikTok creator leads
- [YouTube Leads Scraper](https://apify.com/flash_scraper/youtube-leads-scraper) — YouTube creator leads

# Actor input Schema

## `companyDomain` (type: `string`):

The company to scrape, as its domain — e.g. 'pipedrive.com'. You can also paste a full Trustpilot review URL.

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

Maximum number of reviews to fetch.

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

Newest first (recency) or Trustpilot's relevancy order.

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

Only fetch reviews with these star ratings (leave empty for all).

## `dateWindow` (type: `string`):

Only reviews from this recent window (leave 'Any time' for all).

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

Filter reviews by language code (e.g. 'en', 'fr'). Leave empty for all.

## `onlyVerified` (type: `boolean`):

Keep only reviews marked 'Verified' by Trustpilot (invitation-based, from a proven purchase).

## `minRating` (type: `integer`):

Keep only reviews at or above this star rating, 1-5 (0 = no filter). Applied after scraping.

## `onlyWithReply` (type: `boolean`):

Keep only reviews the company has replied to.

## Actor input object example

```json
{
  "companyDomain": "pipedrive.com",
  "maxReviews": 100,
  "sort": "recency",
  "stars": [],
  "dateWindow": "",
  "languages": [],
  "onlyVerified": false,
  "minRating": 0,
  "onlyWithReply": false
}
```

# Actor output Schema

## `results` (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 = {
    "companyDomain": "pipedrive.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("flash_scraper/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 = { "companyDomain": "pipedrive.com" }

# Run the Actor and wait for it to finish
run = client.actor("flash_scraper/trustpilot-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companyDomain": "pipedrive.com"
}' |
apify call flash_scraper/trustpilot-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=flash_scraper/trustpilot-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/z4i73pWTk4DQ7c0oJ/builds/8pfGOZKMOpNMKY6fp/openapi.json
