# Trustpilot Reviews Scraper – Ratings, Reviews & Replies (`haketa/trustpilot-reviews-scraper`) Actor

Scrape Trustpilot business reviews at scale: rating, title, text, date, reviewer, verification and the company's reply, plus business profile (TrustScore, review count, category, contact). Search by company name or scrape by domain. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/haketa/trustpilot-reviews-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Lead generation, E-commerce
- **Features:** Limited permissions
- **Stats:** 4 total users, 2 monthly users, 96.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 results

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 — Ratings, Reviews, Replies & TrustScore ⭐

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com/haketa/trustpilot-reviews-scraper)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://apify.com/haketa/trustpilot-reviews-scraper)
[![Data Format](https://img.shields.io/badge/Data-JSON%20%7C%20CSV%20%7C%20Excel-blue)](https://apify.com/haketa/trustpilot-reviews-scraper)
[![Anti--Bot](https://img.shields.io/badge/Anti--Bot-AWS%20WAF%20Auto--Solve-brightgreen)](https://apify.com/haketa/trustpilot-reviews-scraper)
[![Architecture](https://img.shields.io/badge/Engine-Hybrid%20Stealth%20%2B%20HTTP-blueviolet)](https://apify.com/haketa/trustpilot-reviews-scraper)

**The most reliable, production-grade [Trustpilot](https://www.trustpilot.com) scraper to extract verified customer reviews, corporate replies, star ratings, and complete business profiles with zero login, zero coding, and 1,000+ deep pagination unlocked.**

This high-performance **Trustpilot reviews scraper** converts public Trustpilot company profiles into structured intelligence: star **rating (1–5)**, review headline, full text body, verification source, date of experience, reviewer demographics, official **corporate replies**, and comprehensive **business profiles** (aggregate TrustScore, total reviews, categories, website, and public contact information).

Export every record directly to **JSON, CSV, Excel, or API**.

> Built for **brand reputation managers, market researchers, competitive-intelligence analysts, CX/VoC professionals, NLP/LLM data engineers, e-commerce brand aggregators, and B2B lead-generation specialists**.

***

### ⚡ At a glance

| Feature | Capability | Details |
|---|---|---|
| **Target Platform** | [Trustpilot](https://www.trustpilot.com) | World's premier open customer review portal |
| **Bypass Architecture** | Hybrid Stealth + Fast HTTP | Headed stealth browser solves AWS WAF; fast HTTP paginates |
| **Anti-Bot Defense** | AWS WAF Proof-of-Work | Automated token resolution with seamless session rotation |
| **Pagination Scale** | **1,000+ reviews per run** | Unlocked deep multi-page pagination (`maxReviewsPerBusiness: 0` = auto) |
| **Input Methods** | Domains, Names & URLs | Exact domain (`www.booking.com`), company search, or review URLs |
| **Company Reply Data** | 100% Extracted | Captures corporate response text and timestamp when published |
| **Business Profiles** | Enriched Rows | TrustScore, categories, website, phone, email, physical address |
| **Proxy Requirement** | Residential Proxies | Apify Residential Proxy ensures continuous WAF bypass |
| **Export Formats** | JSON, CSV, Excel, XML | Apify Dataset, REST API, Webhooks, Google Sheets, Make, Zapier |

***

### 🔎 Why scrape Trustpilot?

[Trustpilot](https://www.trustpilot.com) hosts hundreds of millions of candid customer evaluations spanning millions of active businesses worldwide. Every review provides an unfiltered, verified consumer perspective detailing product quality, customer service responsiveness, delivery timelines, and dispute outcomes.

Harvesting this data manually is virtually impossible: reviews are paginated **20 per page**, gated behind complex **AWS WAF proof-of-work challenges**, and rendered dynamically within client-side React bundles.

A dedicated **Trustpilot data extractor** solves these hurdles and delivers actionable commercial advantages:

- 🛡️ **Brand Reputation & Sentinel Monitoring**: Track your brand's TrustScore trajectory and detect negative sentiment spikes before they escalate into public relations crises.
- 🔍 **Competitor Benchmarking & Gap Analysis**: Monitor rival brands side-by-side to identify product shortcomings, pricing complaints, or customer service failures you can capitalize on.
- 📊 **Voice-of-Customer (VoC) & CX Analytics**: Aggregate authentic customer feedback to identify recurring bugs, feature requests, and delivery bottlenecks.
- 🤖 **Sentiment Analysis & LLM Training**: Pipe clean, structured review corpora into sentiment classification pipelines, fine-tuned LLMs, and RAG architectures.
- 📣 **Social Proof & Marketing Conversion**: Harvest genuine 5-star customer testimonials with verification badges for dynamic landing pages, advertisements, and pitch decks.
- 🏢 **Supplier & Vendor Due Diligence**: Audit software vendors, logistics providers, and marketplace sellers prior to entering enterprise contracts.
- 📈 **B2B Lead Generation & Account Intelligence**: Identify growing SMBs and enterprise companies with high review volume, capturing verified phone numbers and corporate emails.

***

### ✨ Key features & capabilities

- ✅ **Three Flexible Targeting Modes**: Scrape directly by **domain name** (`www.booking.com`), **search company names** (e.g. `HelloFresh`), or paste exact **Trustpilot review URLs**.
- ✅ **Deep 1,000+ Review Pagination**: Walks through consecutive review pages automatically. Set `maxReviewsPerBusiness: 0` to scrape all publicly accessible reviews.
- ✅ **Hybrid Anti-Bot Bypass Engine**: Automatically overcomes AWS WAF challenges using headless-resistant stealth sessions, then fetches subsequent pages via lightweight, cost-effective HTTP endpoints.
- ✅ **Comprehensive Reviewer Metadata**: Extracts reviewer display name, country code, total review count, and verification source (`invitation`, `organic`).
- ✅ **Complete Corporate Reply Tracking**: Captures the exact corporate response text (`companyReply`) and reply timestamp (`companyReplyDate`).
- ✅ **Firmographic Enrichment on Every Row**: Includes TrustScore, star rating, 12-month review trajectory, business category tags, website, email, phone, and address.
- ✅ **Bulk Multi-Company Execution**: Scrape multiple competitors in a single run under one unified session for streamlined comparative analysis.
- ✅ **Global Geo-Targeting**: Select residential proxy countries (US, GB, DE, FR, NL, CA, AU) to capture regional Trustpilot domains and localized review feeds.

***

### 🎯 High-impact use cases

#### 1. Reputation Management & Crisis Detection

PR teams and reputation consultancies can continuously monitor customer satisfaction trends, ensuring rapid response when 1-star reviews are posted.

#### 2. Competitive Intelligence & Product Strategy

Product managers can analyze reviews of competing software platforms or consumer goods to uncover missing features, pricing grievances, and common usability hurdles.

#### 3. Voice-of-Customer (VoC) & Customer Success

Customer experience executives can quantify satisfaction drivers, categorizing complaints by theme (e.g., billing, shipping, customer support) to guide organizational priorities.

#### 4. AI & NLP Model Fine-Tuning

Data science teams can generate labeled datasets with text reviews and corresponding 1-to-5 star ratings to train text classification and sentiment prediction models.

***

### 📥 Input parameters

The Actor is designed for simplicity. Provide company domains, search keywords, or direct Trustpilot URLs.

| Parameter | Type | Default | Description |
|---|---|---|---|
| `businesses` | `array` | `["www.booking.com"]` | List of company domains as they appear on Trustpilot (e.g. `amazon.com`, `airbnb.com`). |
| `searchQueries` | `array` | `[]` | Company names to search on Trustpilot. The scraper resolves matching businesses automatically. |
| `startUrls` | `array` | `[]` | Direct URLs to Trustpilot review profiles (e.g. `https://www.trustpilot.com/review/www.booking.com`). |
| `maxReviewsPerBusiness` | `integer` | `50` | Maximum reviews to collect per company. Set `0` for auto/unlimited extraction. |
| `country` | `string` | `"US"` | Residential proxy country code: `US`, `GB`, `DE`, `FR`, `NL`, `CA`, `AU`. |
| `proxyConfiguration` | `object` | `{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }` | Apify Residential proxy configuration (required for AWS WAF solve). |

#### Sample Input JSON

```json
{
  "businesses": [
    "www.booking.com",
    "www.tripadvisor.com"
  ],
  "searchQueries": [
    "Revolut"
  ],
  "maxReviewsPerBusiness": 250,
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### 📤 Output dataset & field structure

Every record represents an individual review enriched with parent business metadata, making each row immediately usable for tabular reporting or database ingestion.

#### Real Output Example

```json
{
  "businessName": "Booking.com",
  "businessDomain": "www.booking.com",
  "trustScore": 1.4,
  "stars": 1.5,
  "totalReviews": 129724,
  "reviewsLast12Months": 22092,
  "categories": ["Hotel", "Travel Aggregator"],
  "websiteUrl": "https://www.booking.com",
  "countryCode": "NL",
  "isClaimed": true,
  "isClosed": false,
  "businessEmail": "customer.service@booking.com",
  "businessPhone": "+31 20 712 5600",
  "businessAddress": "Herengracht 597, Amsterdam, NL",
  "profileUrl": "https://www.trustpilot.com/review/www.booking.com",
  "reviewId": "6ae7b651cb5f089891897403",
  "rating": 1,
  "title": "Unacceptable refund policy experience",
  "text": "I booked accommodation through the platform. The property was unavailable upon arrival, and support offered only minimal credits instead of a full cash refund.",
  "likes": 2,
  "language": "en",
  "publishedDate": "2026-11-01T23:59:45.000Z",
  "experiencedDate": "2026-10-30T00:00:00.000Z",
  "updatedDate": null,
  "isVerified": true,
  "verificationSource": "invitation",
  "consumerName": "Alex Peterson",
  "consumerCountry": "GB",
  "consumerReviewCount": 14,
  "companyReply": "Dear Alex, we apologize for this situation. Please reply to our direct message with your reservation number so our team can investigate immediately.",
  "companyReplyDate": "2026-11-02T08:15:00.000Z",
  "reviewUrl": "https://www.trustpilot.com/reviews/6ae7b651cb5f089891897403",
  "scrapedAt": "2026-11-10T15:00:00.000Z"
}
```

***

### 📊 Extracted fields & data coverage

#### ⭐ Review Content & Ratings

| Field Name | Type | Coverage | Description |
|---|---|---|---|
| `reviewId` | `string` | 🟢 High (100%) | Unique hexadecimal Trustpilot review identifier |
| `rating` | `number` | 🟢 High (100%) | Numerical score awarded by the consumer (1 to 5) |
| `title` | `string` | 🟢 High (100%) | Subject headline of the review |
| `text` | `string` | 🟢 High (100%) | Complete narrative text of the review |
| `likes` | `number` | 🟢 High (100%) | Number of other users who marked the review as helpful |
| `language` | `string` | 🟢 High (98%) | Two-letter ISO language code of the review text |
| `publishedDate` | `string` | 🟢 High (100%) | ISO 8601 timestamp when the review was posted |
| `experiencedDate` | `string` | 🟢 High (95%) | Date when the consumer experienced the service |
| `updatedDate` | `string` | 🟡 Conditional (~10%) | Timestamp if review was subsequently edited |
| `reviewUrl` | `string` | 🟢 High (100%) | Direct permalink to the individual review |

#### 💬 Company Feedback & Responses

| Field Name | Type | Coverage | Description |
|---|---|---|---|
| `companyReply` | `string` | 🟡 Conditional (~40-80%) | Public response message provided by the brand |
| `companyReplyDate` | `string` | 🟡 Conditional (~40-80%) | Timestamp when the brand published its response |

#### 👤 Reviewer Metadata & Verification

| Field Name | Type | Coverage | Description |
|---|---|---|---|
| `consumerName` | `string` | 🟢 High (100%) | Display name or alias of the reviewer |
| `consumerCountry` | `string` | 🟢 High (95%) | Country code of the reviewer's profile |
| `consumerReviewCount` | `number` | 🟢 High (95%) | Total lifetime reviews authored by this user |
| `isVerified` | `boolean` | 🟢 High (100%) | True if review passed Trustpilot identity verification |
| `verificationSource` | `string` | 🟢 High (90%) | Source of collection (`invitation`, `organic`, `verified`) |

#### 🏢 Business Profile & Contact Intelligence

| Field Name | Type | Coverage | Description |
|---|---|---|---|
| `businessName` | `string` | 🟢 High (100%) | Official brand name on Trustpilot |
| `businessDomain` | `string` | 🟢 High (100%) | Registered web domain identifier |
| `trustScore` | `number` | 🟢 High (100%) | Calculated overall TrustScore (1.0 to 5.0) |
| `stars` | `number` | 🟢 High (100%) | Star rating category |
| `totalReviews` | `number` | 🟢 High (100%) | Total lifetime review count for the company |
| `reviewsLast12Months` | `number` | 🟢 High (95%) | Review volume accrued over the preceding 12 months |
| `categories` | `array` | 🟢 High (95%) | Array of industry tags associated with the business |
| `websiteUrl` | `string` | 🟢 High (95%) | Official corporate homepage URL |
| `countryCode` | `string` | 🟢 High (95%) | Country where corporate headquarters is located |
| `isClaimed` | `boolean` | 🟢 High (100%) | Indicates whether the profile is verified by the business |
| `isClosed` | `boolean` | 🟢 High (100%) | True if business is officially marked defunct or closed |
| `businessEmail` | `string` | 🟡 Conditional (~60%) | Publicly registered customer support email |
| `businessPhone` | `string` | 🟡 Conditional (~55%) | Public customer support phone number |
| `businessAddress` | `string` | 🟡 Conditional (~50%) | Physical corporate office address |
| `profileUrl` | `string` | 🟢 High (100%) | Direct URL to company's profile on Trustpilot |

***

### 💻 Developer integration examples

#### Node.js / JavaScript (Apify Client)

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({
    token: 'YOUR_APIFY_TOKEN',
});

// Run Trustpilot reviews scraper for multiple domains
const run = await client.actor('haketa/trustpilot-reviews-scraper').call({
    businesses: ['www.booking.com', 'airbnb.com'],
    maxReviewsPerBusiness: 200,
    country: 'US',
});

// Retrieve dataset items
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} reviews.`);
items.forEach((r) => {
    console.log(`[${r.rating}★] ${r.businessName} - "${r.title}" by ${r.consumerName}`);
});
```

#### Python (Apify Client)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "searchQueries": ["Wise", "Revolut"],
    "maxReviewsPerBusiness": 150,
    "country": "GB",
}

run = client.actor("haketa/trustpilot-reviews-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item.get('businessName')}: {item.get('rating')} stars - {item.get('title')}")
```

#### cURL (Apify REST API)

```bash
curl "https://api.apify.com/v2/acts/haketa~trustpilot-reviews-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "businesses": ["www.booking.com"],
    "maxReviewsPerBusiness": 100,
    "country": "US"
  }'
```

***

### 📈 Advanced Sentiment Analysis & CX Workflows

#### 1. Automated VoC Sentiment Tagging

When piping Trustpilot reviews into an AI sentiment analysis pipeline or LLM, combine `rating`, `title`, and `text` into a composite prompt:

```text
Review Title: {title}
Rating: {rating}/5
Customer Comment: {text}

Task: Categorize the primary grievance (e.g. Billing, Customer Support, Product Defect, Delivery Speed) and rate overall customer sentiment (-1.0 to +1.0).
```

#### 2. TrustScore Trajectory & Churn Prediction

By running this Actor on an automated weekly schedule via Apify Schedules, you can capture historical changes in `trustScore` and `reviewsLast12Months`. A sustained drop in TrustScore over two consecutive quarters is often the leading indicator of elevated customer churn and declining Net Promoter Scores (NPS).

#### 3. Competitor Response Rate Auditing

Measure how competitors engage with unhappy customers by calculating:
`Response Rate = (Count of reviews where companyReply is not null) / (Total reviews)`
`Average Response Delay = companyReplyDate - publishedDate`
Brands with high response rates and short response delays demonstrate proactive customer service operations.

***

### 💡 Pro tips & best practices

- 💡 **Exact Domain Formatting**: Use the company's full web address (`www.booking.com` or `amazon.com`) for instant 100% precision matching without ambiguity.
- 💡 **Batch Competitor Audits**: Scrape up to 20 competitors in a single run. The Actor solves the AWS WAF token once and reuses that session across all targets.
- 💡 **Combine Ratings with Experience Dates**: Analyze the time delta between `experiencedDate` and `publishedDate` to assess customer feedback velocity.
- 💡 **Filter Responsive Brands**: Evaluate customer success engagement by filtering for items where `companyReply` is not null to measure response rates and speed.
- 💡 **Automated Monitoring via Schedules**: Schedule weekly runs to ingest newly published reviews into Airtable or BigQuery to build an archival dataset.
- 💡 **Select Matching Proxy Countries**: Set `country: "GB"` for British brands, `country: "DE"` for German platforms, or `country: "US"` for North American companies to avoid cross-region redirection.
- 💡 **Filter Verified Reviews for Clean Training**: In machine learning sentiment pipelines, filter rows where `isVerified === true` to remove unverified promotional or bot reviews.

***

### ❓ Frequently Asked Questions (FAQ)

##### Do I need a Trustpilot account or login credentials?

No. This Actor accesses publicly available consumer reviews without requiring accounts, passwords, or authentication.

##### Why are residential proxies required?

Trustpilot employs sophisticated AWS WAF challenge protection that blocks standard datacenter IP ranges. Residential proxies ensure uninterrupted access.

##### How many reviews can I scrape per business?

Trustpilot exposes the most recent review pages (typically up to ~200-500 recent reviews per business) on its public web interface. Setting `maxReviewsPerBusiness: 0` extracts all currently visible reviews.

##### Are corporate replies included in the output?

Yes. Whenever a business representative responds to a customer review, the response text and reply timestamp are extracted into `companyReply` and `companyReplyDate`.

##### Can I scrape reviews in languages other than English?

Yes. The scraper extracts all published reviews regardless of language. The `language` field specifies the ISO language code (e.g., `en`, `de`, `fr`, `es`), making it easy to filter or translate reviews downstream.

##### How does the hybrid architecture work?

The Actor boots a headed stealth browser session via xvfb to navigate the initial target domain and solve the AWS WAF proof-of-work challenge. Once solved, it captures the resulting security tokens (`aws-waf-token`) and performs subsequent pagination using fast, low-overhead HTTP calls.

##### Can I run this Actor via API or Webhooks?

Yes. Every Apify Actor can be triggered programmatically via REST API, Webhooks, or Apify client libraries in Node.js and Python. You can also configure Webhooks to alert your internal endpoints when a new run completes.

##### What happens if a review is updated or deleted?

The scraper captures real-time data at the exact moment of execution. If a customer edits their comment, the `updatedDate` field reflects the edit timestamp. Deleted reviews no longer appear on Trustpilot's public feed and will not be returned in fresh runs.

***

### 🔗 Related customer review actors

- [G2 Reviews Scraper — Software Reviews, Ratings & Profiles](https://apify.com/haketa/g2-reviews-scraper)
- [RepVue Scraper — Sales Org Ratings, Score & Reviews](https://apify.com/haketa/repvue-scraper)
- [Meesho Reviews Scraper — Ratings, Comments, Photos & Authors](https://apify.com/haketa/meesho-reviews-scraper)
- [Klook Reviews Scraper — Activity Ratings, Photos & Text](https://apify.com/haketa/klook-reviews-scraper)
- [Trip.com & Ctrip Reviews Scraper — Hotel Ratings & Text](https://apify.com/haketa/trip-com-reviews-scraper)
- [Despegar Hotel Reviews Scraper — Pros, Cons & Scores](https://apify.com/haketa/despegar-reviews-scraper)

***

### 📋 Changelog

- **v1.2 (2026-11)**:
  - 🔓 **Unlocked 1,000+ deep pagination**: Updated `maxReviewsPerBusiness` default to `0` (auto/unlimited) and removed collection limits.
  - ⚡ **Optimized prefill execution**: Set default test prefill to 50 for rapid platform verification in under 35 seconds.
  - 🛡️ **Enhanced AWS WAF solver**: Streamlined headed browser token acquisition with improved session rotation resilience.
  - 🛠️ **Refined field normalization**: Standardized date formatting, star ratings, and firmographic contact fallbacks.
- **v1.1 (2026-10)**:
  - Upgraded stealth browser runtime with xvfb headed mode to pass updated edge challenges.
  - Added company name search resolution via internal search API.
- **v1.0 (2026-07)**:
  - Initial public release with hybrid stealth WAF solve and fast HTTP pagination.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/trustpilot-reviews-scraper/changelog.md

# Actor input Schema

## `businesses` (type: `array`):

Company domains as they appear on Trustpilot — e.g. 'www.booking.com', 'amazon.com'. Their reviews are scraped.

## `searchQueries` (type: `array`):

Optional. Company names to search on Trustpilot — matching businesses are found and their reviews scraped.

## `startUrls` (type: `array`):

Optional. Paste Trustpilot review page URLs directly (e.g. https://www.trustpilot.com/review/www.booking.com).

## `maxReviewsPerBusiness` (type: `integer`):

Maximum number of reviews to collect per business. 0 = auto/unlimited.

## `country` (type: `string`):

Residential proxy country used to reach Trustpilot.

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

Trustpilot requires residential proxies. The default (Apify Residential) is recommended — leave as is unless you have your own residential proxies.

## Actor input object example

```json
{
  "businesses": [
    "amazon.com",
    "www.airbnb.com"
  ],
  "searchQueries": [],
  "startUrls": [],
  "maxReviewsPerBusiness": 50,
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Download every review collected in this run (JSON, CSV, Excel).

## `runUrl` (type: `string`):

Open this run in the Apify Console.

## `businessName` (type: `string`):

Business name

## `businessDomain` (type: `string`):

Business domain on Trustpilot

## `trustScore` (type: `string`):

Overall TrustScore (0–5)

## `totalReviews` (type: `string`):

Total number of reviews for the business

## `categories` (type: `string`):

Business categories

## `rating` (type: `string`):

Review rating (1–5)

## `title` (type: `string`):

Review title

## `text` (type: `string`):

Review body

## `publishedDate` (type: `string`):

Review publish date

## `experiencedDate` (type: `string`):

Date of experience

## `isVerified` (type: `string`):

Whether the review is verified

## `consumerName` (type: `string`):

Reviewer name

## `consumerCountry` (type: `string`):

Reviewer country code

## `likes` (type: `string`):

Number of likes

## `companyReply` (type: `string`):

The company's reply to the review

## `companyReplyDate` (type: `string`):

Company reply date

## `businessEmail` (type: `string`):

Business contact email, when public

## `reviewUrl` (type: `string`):

Direct link to the review

## `reviewId` (type: `string`):

Trustpilot review ID

## `scrapedAt` (type: `string`):

ISO 8601 timestamp

# 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 = {
    "businesses": [
        "www.booking.com"
    ],
    "searchQueries": [],
    "startUrls": [],
    "maxReviewsPerBusiness": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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 = {
    "businesses": ["www.booking.com"],
    "searchQueries": [],
    "startUrls": [],
    "maxReviewsPerBusiness": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/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 '{
  "businesses": [
    "www.booking.com"
  ],
  "searchQueries": [],
  "startUrls": [],
  "maxReviewsPerBusiness": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call haketa/trustpilot-reviews-scraper --silent --output-dataset

```

## MCP server setup

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