# 🐺 Trustpilot Reviews Scraper API | $0.50/1K Reviews (`thewolves/trustpilot-reviews-scraper`) Actor

The Wolves proudly introduces the Trustpilot Review Scraper, an ideal tool for extracting reviews. It can gather 100-200 reviews per second, offering an extremely affordable rate of just $0.50 per 1,000 reviews. The most cost-effective option!

- **URL**: https://apify.com/thewolves/trustpilot-reviews-scraper.md
- **Developed by:** [The Wolves](https://apify.com/thewolves) (community)
- **Categories:** Lead generation, Automation, SEO tools
- **Stats:** 319 total users, 24 monthly users, 98.6% runs succeeded, 17 bookmarks
- **User rating**: 2.43 out of 5 stars

## Pricing

$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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

![](https://www.dropbox.com/scl/fi/0xigwqs1h133dq543l0kw/trustpilot-reviews.jpeg?rlkey=j4sdm6oc8i42pe92tkj1a0u2q&dl=1)

## 🥃 Trustpilot Reviews Scraper API: Extract Verified Company Reviews, Ratings & Customer Feedback at Scale

The **Trustpilot Reviews Scraper** by [The Wolves](https://apify.com/thewolves?fpr=yhdrb) is an Apify Actor that extracts customer reviews, star ratings, verification status, experience dates, reviewer profiles, and engagement data from any Trustpilot company page. This **trustpilot review scraper api** delivers 11 structured fields per review at speeds of **100-200 reviews per second** — with no proxy configuration required on your end.

**$0.50 per 1,000 reviews.** Scrape Trustpilot reviews from any company listing at scale. Every review includes the **verified/unverified distinction**, **experience date** (when the customer actually used the product, not just when they wrote the review), and a **likes count** that signals review visibility and social proof.

Built by **The Wolves** — a pack of data scientists with over a decade of experience in web scraping and API development. We build scrapers the way data teams actually need them: rich output, precise filtering, and pricing that scales.

> **Limitation:** The scraper extracts the first **10 pages per URL** (200 reviews per company URL, at 20 reviews per page). To collect more reviews from a single company, use multiple URL variations or page offsets where available.

**Pricing:** $0.50 per 1,000 reviews | **100-200 reviews/second** | **No proxy setup required**

---

### Table of Contents

1. [What Does the Trustpilot Reviews Scraper Do?](#what-does-the-trustpilot-reviews-scraper-do)
2. [Features and Capabilities](#features-and-capabilities)
3. [Pricing](#pricing)
4. [Input Parameters](#input-parameters)
5. [Output Format and Data Fields](#output-format-and-data-fields)
6. [Custom Map Function](#custom-map-function)
7. [AI Agent Integration via MCP](#ai-agent-integration-via-mcp)
8. [The Wolves Scraper Pack](#the-wolves-scraper-pack)
9. [Demo Mode and Free Testing](#demo-mode-and-free-testing)
10. [Automated Scheduling and Monitoring](#automated-scheduling-and-monitoring)
11. [Quick Start Guide](#quick-start-guide)
12. [Use Cases and Industries](#use-cases-and-industries)
13. [Troubleshooting](#troubleshooting)
14. [Frequently Asked Questions](#frequently-asked-questions)
15. [Contact](#contact)

---

### What Does the Trustpilot Reviews Scraper Do?

**Trustpilot review extraction** is the automated process of collecting customer reviews, ratings, verification status, and reviewer metadata from Trustpilot company pages. Trustpilot hosts over 300 million reviews across 1 million+ business profiles — making it the largest dedicated business review platform, particularly strong in e-commerce, SaaS, financial services, and B2B.

The **Wolves Trustpilot Reviews Scraper** extracts structured review data that includes fields most scrapers overlook. Each review comes with a **verified/unverified flag**, an **experience date** (distinct from the publish date), **likes count**, and **reviewer country code** — data points that are critical for credible sentiment analysis and review quality assessment.

The distinction between experience date and publish date matters. A customer might use a product in January but write the review in March. When you're tracking post-launch sentiment or measuring support response impact, the experience date gives you the accurate timeline — not the publish date.

#### What You Get From Every Review

**Review Content and Rating**

- Full review body text and title
- Star rating (1–5)
- Verified or unverified status
- Likes count (social proof indicator)

**Date Intelligence**

- Experience date (when the customer used the product/service)
- Published date (when the review was posted)
- Updated date (when the review was last modified)

**Reviewer Profile**

- Reviewer name
- Country code
- Unique reviewer ID

---

### Features and Capabilities

#### Input Flexibility

| Input Type                 | Example                                       | Best For                               |
| -------------------------- | --------------------------------------------- | -------------------------------------- |
| **Trustpilot Company URL** | `https://www.trustpilot.com/review/apify.com` | Targeting a specific company's reviews |

#### Core Capabilities

- **High-Speed Extraction** — 100-200 reviews per second
- **Verified Status** — Distinguish between verified and unverified reviews
- **Experience Date Tracking** — Know when the customer actually used the product, not just when they wrote the review
- **Likes Count** — Measure review visibility and social proof
- **Triple Date Fields** — Experience date, publish date, and update date per review
- **Reviewer Country** — Country code for geographic analysis
- **No Proxy Required** — The scraper handles proxy rotation internally
- **Custom Map Function** — Transform output with custom JavaScript before saving
- **Multiple Export Formats** — JSON, CSV, Excel direct download
- **API Integration** — RESTful API for Python, Node.js, or any HTTP client

#### Known Limitations

- **200 reviews per URL** — The scraper extracts the first 10 pages per URL (20 reviews per page = 200 reviews). This is a per-URL limit, not a total limit — you can provide multiple URLs to collect more data.

---

### Pricing

#### Pay-Per-Review Pricing

No subscriptions, no rentals, no minimum commitments. You pay only for the reviews you extract:

| Metric                  | Price   |
| ----------------------- | ------- |
| **Per 1,000 reviews**   | $0.50   |
| **Per review**          | $0.0005 |
| **Per 100,000 reviews** | $50.00  |

> **Example:** Extracting 200 reviews from 25 companies (5,000 reviews total) costs **$2.50**. Monitoring your top competitors monthly on Trustpilot keeps costs predictable and low.

---

### Input Parameters

| Field               | Type   | Description                                                                                   | Default    |
| ------------------- | ------ | --------------------------------------------------------------------------------------------- | ---------- |
| `startUrls`         | array  | Trustpilot company review URLs. The scraper extracts the first 10 pages (200 reviews) per URL | `[]`       |
| `maxItems`          | number | Maximum number of reviews to output                                                           | `Infinity` |
| `customMapFunction` | string | JavaScript function to transform each review object (transformation only, not filtering)      | `null`     |

#### Input Examples

**Single Company — All Available Reviews:**
```json
{
    "startUrls": [
        "https://www.trustpilot.com/review/apify.com"
    ],
    "maxItems": 200
}
````

**Multiple Companies — Competitive Analysis:**

```json
{
    "startUrls": [
        "https://www.trustpilot.com/review/apify.com",
        "https://www.trustpilot.com/review/octoparse.com",
        "https://www.trustpilot.com/review/parsehub.com"
    ],
    "maxItems": 600
}
```

**Limited Output — Quick Sample:**

```json
{
    "startUrls": [
        "https://www.trustpilot.com/review/apify.com"
    ],
    "maxItems": 50
}
```

### Output Format and Data Fields

Each extracted review is a structured JSON object containing 11 fields. Here is a sample:

```json
{
    "id": "663c7bd3350fc6a8eb8960b7",
    "user": {
        "name": "User Name",
        "countryCode": "FR",
        "id": "669c7bcbc225536a02f1f7e6"
    },
    "experiencedDate": "2024-05-07T00:00:00.000Z",
    "updatedDate": "2024-05-12T00:00:00.000Z",
    "publishedDate": "2024-05-09T09:31:32.000Z",
    "title": "Great customer care!",
    "body": "Awesome! Apify customer support is what set them apart from the competition. Love the tool and love the fact that they are customer-centric.",
    "rating": 5,
    "likes": 120,
    "isVerified": false
}
```

#### Complete Field Reference

| Field              | Type    | Description                                              |
| ------------------ | ------- | -------------------------------------------------------- |
| `id`               | string  | Unique Trustpilot review identifier                      |
| `user.name`        | string  | Reviewer's display name                                  |
| `user.countryCode` | string  | Reviewer's country code (e.g., FR, US, GB)               |
| `user.id`          | string  | Unique Trustpilot reviewer identifier                    |
| `experiencedDate`  | string  | ISO 8601 date when the customer used the product/service |
| `updatedDate`      | string  | ISO 8601 date when the review was last modified          |
| `publishedDate`    | string  | ISO 8601 date when the review was published              |
| `title`            | string  | Review title/headline                                    |
| `body`             | string  | Full review body text                                    |
| `rating`           | number  | Star rating (1-5)                                        |
| `likes`            | number  | Number of likes/upvotes from other users                 |
| `isVerified`       | boolean | Whether the review is verified by Trustpilot             |

#### Data Fields by Use Case

| Use Case                             | Key Fields                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------- |
| **B2B/SaaS Sentiment Analysis**      | `body`, `title`, `rating`, `experiencedDate`, `isVerified`                      |
| **Review Credibility Assessment**    | `isVerified`, `likes`, `user.countryCode`, `experiencedDate` vs `publishedDate` |
| **Competitive Benchmarking**         | `rating`, `body`, `title`, `publishedDate`, `isVerified`                        |
| **Geographic Market Analysis**       | `user.countryCode`, `rating`, `body`, `experiencedDate`                         |
| **Customer Support Impact Tracking** | `experiencedDate`, `publishedDate`, `rating`, `body`, `updatedDate`             |
| **NLP Training Data**                | `body`, `title`, `rating` (as label), `isVerified` (as quality filter)          |

#### Why Three Date Fields Matter

| Date Field        | What It Tells You                           | Best For                                         |
| ----------------- | ------------------------------------------- | ------------------------------------------------ |
| `experiencedDate` | When the customer actually used the product | Post-launch tracking, support impact measurement |
| `publishedDate`   | When the review was written                 | Monitoring review volume trends                  |
| `updatedDate`     | When the review was last edited             | Detecting sentiment changes over time            |

> **Example:** A customer experiences a product on January 15, writes a 2-star review on February 10, then updates it to 4 stars on March 5 after receiving great support. All three dates are captured — enabling you to measure the full customer journey and support impact.

***

### Custom Map Function

Transform each review before it's saved to the dataset. The `customMapFunction` parameter accepts a JavaScript function that reshapes every review object. Use this to flatten nested structures, rename properties, or compute derived values.

**Important:** The custom map function is for **transformation only**, not filtering. Do not use it for filtering purposes.

#### Example: Flatten for Spreadsheet Analysis

```javascript
(review) => ({
    id: review.id,
    reviewer: review.user?.name,
    country: review.user?.countryCode,
    rating: review.rating,
    title: review.title,
    body: review.body,
    experienceDate: review.experiencedDate,
    publishDate: review.publishedDate,
    updatedDate: review.updatedDate,
    likes: review.likes,
    verified: review.isVerified
})
```

#### Example: Extract for Cross-Platform Comparison

```javascript
(review) => ({
    platform: "Trustpilot",
    rating: review.rating,
    text: review.body,
    title: review.title,
    date: review.publishedDate,
    reviewer: review.user?.name,
    country: review.user?.countryCode,
    verified: review.isVerified
})
```

***

### AI Agent Integration via MCP

Apify provides a hosted **Model Context Protocol (MCP) server** at `mcp.apify.com` that allows AI agents and LLM-based applications to discover and run Apify Actors as tools — including this Trustpilot Reviews Scraper.

#### What This Means

If you're building AI agents using Claude Desktop, VS Code with MCP support, or any framework that implements the MCP specification, you can give your agent the ability to extract Trustpilot reviews autonomously. The agent can call this scraper as a tool, receive structured JSON results with verification status and experience dates, and use them in downstream analysis.

#### How to Connect

Add this scraper to your MCP client configuration:

```
https://mcp.apify.com?tools=thewolves/trustpilot-reviews-scraper
```

Or use the CLI for local development:

```bash
npx @apify/actors-mcp-server --tools thewolves/trustpilot-reviews-scraper
```

#### Use Cases for AI Agent Integration

- **Automated reputation monitoring** — An AI agent extracts Trustpilot reviews weekly, summarizes sentiment trends, and flags companies where ratings are dropping or where negative verified reviews are spiking.
- **Competitive intelligence pipelines** — Extract reviews from competitor Trustpilot pages, compare verified vs unverified review ratios, and generate strategic reports automatically.
- **Multi-platform analysis** — Combine Trustpilot reviews with TripAdvisor or Google Play reviews in a single agent workflow for unified cross-platform reputation reporting.

For full setup instructions, see the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

***

### The Wolves Scraper Pack

All tools below are built and maintained by [The Wolves](https://apify.com/thewolves?fpr=yhdrb) — a pack of data scientists with over a decade of experience building high-performance scrapers and APIs. Powerful, easy to use, and priced for scale.

| Tool                                                                                                 | Platform        | Price            | Best For                                        |
| ---------------------------------------------------------------------------------------------------- | --------------- | ---------------- | ----------------------------------------------- |
| **Trustpilot Reviews Scraper**                                                                       | Trustpilot      | $0.50/1K reviews | B2B/SaaS reputation analysis **(You are here)** |
| **[TripAdvisor Reviews Scraper](https://apify.com/thewolves/tripadvisor-reviews-scraper?fpr=yhdrb)** | TripAdvisor     | $0.50/1K reviews | Hospitality intelligence                        |
| **[Google Play Reviews Scraper](https://apify.com/thewolves/google-play-reviews-scraper?fpr=yhdrb)** | Google Play     | $0.10/1K reviews | Android app intelligence                        |
| **[App Store Reviews Scraper](https://apify.com/thewolves/appstore-reviews-scraper?fpr=yhdrb)**      | Apple App Store | $0.10/1K reviews | iOS app intelligence                            |

#### What Makes The Wolves Trustpilot Scraper Different

| Capability                     | This Tool                  | Basic Alternatives  |
| ------------------------------ | -------------------------- | ------------------- |
| **Verified/unverified status** | Per-review flag            | Not available       |
| **Experience date**            | Separate from publish date | Publish date only   |
| **Updated date**               | Tracks review edits        | Not available       |
| **Likes count**                | Social proof metric        | Not available       |
| **Reviewer country**           | Country code per reviewer  | Not available       |
| **Proxy management**           | Handled internally         | User must configure |
| **Speed**                      | 100-200 reviews/second     | Varies              |

***

### Demo Mode and Free Testing

Free plan users can test this **Trustpilot reviews scraper** in Demo Mode with a maximum of **10 items** per run. Demo Mode is designed to validate the output format, data quality, and field coverage before committing to larger runs.

**Demo Mode Limitations:**

- Maximum 10 reviews per run
- API access not available on Free plan
- Full functionality requires a [paid Apify plan](https://apify.com/pricing?fpr=yhdrb)

**How to Test:**

- Run the scraper with `maxItems: 10` to preview the output structure
- Verify that `isVerified`, `experiencedDate`, and `likes` fields are present
- Test the `customMapFunction` with a sample transformation
- Confirm the output matches your pipeline requirements

***

### Automated Scheduling and Monitoring

Trustpilot reviews appear continuously. For **e-commerce brands**, **SaaS companies**, and **reputation management agencies**, automated recurring runs ensure you capture new customer feedback as it's posted.

#### Why Schedule Review Extraction?

- **Brand monitoring** — Detect negative reviews early and respond before they accumulate
- **Competitive tracking** — Monitor competitor Trustpilot pages weekly for rating shifts
- **Product launch tracking** — Use `experiencedDate` to measure customer sentiment after releases
- **Support impact analysis** — Track whether support improvements correlate with better reviews over time
- **Agency reporting** — Automated data collection for client reputation dashboards

#### How to Set Up Scheduled Runs

1. Open the Actor in Apify Console
2. Configure your input parameters (startUrls, maxItems)
3. Click **Schedule** and set frequency (daily, weekly, monthly)
4. Optionally add a **webhook** to push new data to your pipeline

#### Webhook Integration

Combine scheduled runs with webhooks to build fully automated review monitoring:

```
Scheduled Run -> New Reviews Extracted -> Webhook fires -> Your system receives data
```

Use webhooks to trigger:

- Slack alerts for 1-star verified reviews requiring immediate response
- Database updates with new review data
- Dashboard refreshes for reputation analytics platforms
- Email digests summarizing weekly customer sentiment trends

***

### Quick Start Guide

#### For Non-Technical Users (Apify Console)

1. Go to **[Trustpilot Reviews Scraper](https://apify.com/thewolves/trustpilot-reviews-scraper?fpr=yhdrb)** on Apify
2. Click **Try for free**
3. Paste a Trustpilot company URL (e.g., `https://www.trustpilot.com/review/apify.com`) into the `startUrls` field
4. Set `maxItems` (up to 200 per URL)
5. Click **Start** and wait for results
6. **Export Trustpilot reviews to CSV** from the Storage tab

#### For Developers (Python API)

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("thewolves/trustpilot-reviews-scraper").call(run_input={
    "startUrls": [
        "https://www.trustpilot.com/review/apify.com"
    ],
    "maxItems": 200
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

#### For Competitive Analysis (Multi-Company)

```json
{
    "startUrls": [
        "https://www.trustpilot.com/review/COMPANY_A.com",
        "https://www.trustpilot.com/review/COMPANY_B.com",
        "https://www.trustpilot.com/review/COMPANY_C.com"
    ],
    "maxItems": 600
}
```

> Extract 200 reviews from each competitor in a single run. Use the `customMapFunction` to add a `company` field derived from the URL for easy segmentation in analysis.

#### For Data Scientists (Verified Review Analysis)

Use the `customMapFunction` to separate verified from unverified reviews and compute review age:

```javascript
(review) => ({
    rating: review.rating,
    text: review.body,
    verified: review.isVerified,
    country: review.user?.countryCode,
    experienceDate: review.experiencedDate,
    publishDate: review.publishedDate,
    daysBetweenExperienceAndReview: Math.round(
        (new Date(review.publishedDate) - new Date(review.experiencedDate)) / (1000 * 60 * 60 * 24)
    ),
    likes: review.likes
})
```

> This produces a flat dataset with a computed `daysBetweenExperienceAndReview` field — useful for analyzing whether delayed reviews tend to be more positive or negative.

***

### Use Cases and Industries

#### E-Commerce Reputation Monitoring

Extract Trustpilot reviews from your own company page and competitor pages to track customer satisfaction over time. The **verified/unverified distinction** is critical for e-commerce — verified reviews carry more weight with potential customers and are more reliable for internal analytics. Track the `likes` count to identify which negative reviews are most visible to potential buyers.

**Key fields:** `rating`, `body`, `isVerified`, `likes`, `publishedDate`, `user.countryCode`

#### SaaS and B2B Customer Feedback

Trustpilot is increasingly used by SaaS companies and B2B service providers. Extract reviews to understand customer pain points, measure satisfaction after product updates, and identify feature requests. The `experiencedDate` field lets you correlate reviews with specific product releases or service changes.

**Key fields:** `body`, `title`, `rating`, `experiencedDate`, `isVerified`

#### Competitive Benchmarking

Extract reviews from multiple companies in the same industry to compare customer sentiment, identify competitive advantages, and discover common pain points. Run multi-company extractions in a single scraper run. The `isVerified` flag helps ensure you're comparing apples to apples — verified reviews only.

**Key fields:** `rating`, `body`, `title`, `isVerified`, `publishedDate`

#### Geographic Market Analysis

Use the `user.countryCode` field to segment reviews by geography. Understand how customer satisfaction varies across markets. A SaaS product might have excellent reviews from US customers but complaints about localization from European markets — data that drives targeted product improvements.

**Key fields:** `user.countryCode`, `rating`, `body`, `experiencedDate`

#### Customer Support Impact Measurement

The triple date fields (`experiencedDate`, `publishedDate`, `updatedDate`) enable sophisticated support impact analysis. Track whether customers who received support update their reviews to higher ratings. Measure the time gap between experience and review publication — shorter gaps often correlate with stronger emotional responses (both positive and negative).

**Key fields:** `experiencedDate`, `publishedDate`, `updatedDate`, `rating`, `body`

#### NLP and Sentiment Analysis Training

Extract Trustpilot reviews with ratings as sentiment labels for training classifiers. The `isVerified` field serves as a quality filter — verified reviews tend to be more substantive and representative. The `likes` count indicates which reviews resonate with the community, useful for weighting training examples.

**Key fields:** `body`, `title`, `rating`, `isVerified`, `likes`, `user.countryCode`

***

### Troubleshooting

#### Common Issues and Solutions

| Issue                                     | Cause                                      | Solution                                                                                                   |
| ----------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| **Only 200 reviews returned**             | 10-page per-URL limit                      | This is a per-URL limit. Provide additional URLs to collect more reviews                                   |
| **Getting more results than requested**   | High-speed extraction overshoots slightly  | You are billed only for the number you requested, not the extra results delivered                          |
| **Missing data in output**                | Results stored in Apify dataset            | Navigate to the "Storage" tab and select "Download the results" or "Open in a New Tab"                     |
| **Empty results**                         | Invalid URL format                         | Ensure you're using a valid Trustpilot company URL (e.g., `https://www.trustpilot.com/review/company.com`) |
| **Some reviews show isVerified as false** | Not all reviews are verified by Trustpilot | This is accurate data — not all reviewers complete the verification process                                |

#### Performance Tips

- **Start small:** Test with `maxItems: 10` (Demo Mode) to validate your setup before scaling
- **Multiple companies in one run:** Provide multiple URLs in the `startUrls` array for competitive analysis
- **Flatten nested data:** Use the `customMapFunction` to produce flat, analysis-ready output
- **Monitor billing:** You are billed per review extracted, not per `maxItems` setting — if fewer reviews exist, you pay only for what's delivered
- **Schedule strategically:** Run weekly extractions with the same URLs to build a time-series dataset of review trends

***

### Frequently Asked Questions

#### What Trustpilot review data can I extract?

Extract **review text**, **titles**, **star ratings (1-5)**, **verified/unverified status**, **experience dates**, **publish dates**, **update dates**, **reviewer names**, **reviewer country codes**, **reviewer IDs**, and **likes count** — all in structured JSON or CSV format.

#### Can I export Trustpilot reviews to CSV?

Yes. **Download Trustpilot reviews** directly from Apify Console in JSON, CSV, or Excel format. Use the `customMapFunction` to flatten nested objects (like the user profile) into a single-row-per-review format ideal for spreadsheets.

#### Why is there a 200-review limit per URL?

The scraper extracts the first **10 pages per URL** (20 reviews per page = 200 reviews). This is a per-URL limit, not a total limit. You can provide multiple company URLs in the `startUrls` array to collect reviews from many companies in a single run.

#### What does the isVerified field mean?

The `isVerified` field indicates whether Trustpilot has verified that the reviewer actually had an experience with the company. Verified reviews are generally more credible and are given higher visibility on Trustpilot. This field is valuable for filtering training data or weighting sentiment analysis results.

#### What is the difference between experiencedDate and publishedDate?

The `experiencedDate` is when the customer actually used the product or service. The `publishedDate` is when they wrote and posted the review. These can differ by days, weeks, or even months. For post-launch sentiment tracking or support impact analysis, the `experiencedDate` provides the accurate timeline.

#### Can I scrape reviews from multiple companies at once?

Yes. Provide multiple Trustpilot company URLs in the `startUrls` array (e.g., `["https://www.trustpilot.com/review/company-a.com", "https://www.trustpilot.com/review/company-b.com"]`). Each company's reviews are extracted within a single Actor run.

#### Can I use Python to scrape Trustpilot reviews?

Yes. Full Python support via the Apify Client library. See the [Quick Start Guide](#quick-start-guide) for Python integration with `client.actor("thewolves/trustpilot-reviews-scraper")`.

#### Can AI agents use this scraper?

Yes. Through Apify's **Model Context Protocol (MCP) server**, AI agents built with Claude Desktop, VS Code, or any MCP-compatible framework can call this scraper as a tool. This enables automated reputation monitoring, competitive analysis, and multi-platform review pipelines. See [AI Agent Integration via MCP](#ai-agent-integration-via-mcp) for setup details.

#### How fast is the extraction?

**100-200 reviews per second**, depending on the company listing and Trustpilot's response times. This scraper is optimized for maximum throughput with internal proxy management.

#### Do I need to set up proxies?

No. This scraper handles all proxy rotation internally. You don't need to configure, purchase, or manage any proxy infrastructure.

#### Does this extract company TrustScores?

This scraper focuses on **individual reviews**, not company-level aggregate data. Each review includes the reviewer's star rating (1-5), but the overall company TrustScore is not extracted per review.

***

### Contact

**Built by [The Wolves](https://apify.com/thewolves?fpr=yhdrb)** — a pack of data scientists with over a decade of experience building scrapers and APIs. We build them powerful, we build them fast, and we price them fair.

For questions, feature requests, or support:

- **Discord:** Reach out to [Tommy the Wolf](https://discordapp.com/users/tommy_the_wolf) — always available

***

**Ready to extract Trustpilot review data at scale?** At $0.50 per 1,000 reviews with 100-200 reviews/second, verified/unverified review tracking, triple date fields, and reviewer country data, this **Trustpilot Reviews Scraper API** by [The Wolves](https://apify.com/thewolves?fpr=yhdrb) delivers the data B2B and e-commerce teams need for credible reputation intelligence. Start scraping today.

# Actor input Schema

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

URLs to start with. It should be a detail URL

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

Maximum number of items that you want as output.

## `customMapFunction` (type: `string`):

Function that takes each of the objects as argument and returns data that will be mapped by the function itself.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.trustpilot.com/review/kindlewritinghub.com",
    "https://www.trustpilot.com/review/www.vans.com",
    "https://www.trustpilot.com/review/shop.missha-deutschland.de",
    "https://www.trustpilot.com/review/dior.co.uk",
    "https://www.trustpilot.com/review/www.barxparx.com",
    "https://www.trustpilot.com/review/oshalafarm.com",
    "https://www.trustpilot.com/review/www.nomador.com?sort=recency",
    "https://www.trustpilot.com/review/apify.com",
    "https://www.trustpilot.com/review/swiftpromining.org",
    "https://www.trustpilot.com/review/couplehoodies.com",
    "https://www.trustpilot.com/review/rosecjewels.com",
    "https://www.trustpilot.com/review/jerseywatch.com"
  ],
  "maxItems": 1000,
  "customMapFunction": "(object) => { return {...object} }"
}
```

# 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 = {
    "startUrls": [
        "https://www.trustpilot.com/review/kindlewritinghub.com",
        "https://www.trustpilot.com/review/www.vans.com",
        "https://www.trustpilot.com/review/shop.missha-deutschland.de",
        "https://www.trustpilot.com/review/dior.co.uk",
        "https://www.trustpilot.com/review/www.barxparx.com",
        "https://www.trustpilot.com/review/oshalafarm.com",
        "https://www.trustpilot.com/review/www.nomador.com?sort=recency",
        "https://www.trustpilot.com/review/apify.com",
        "https://www.trustpilot.com/review/swiftpromining.org",
        "https://www.trustpilot.com/review/couplehoodies.com",
        "https://www.trustpilot.com/review/rosecjewels.com",
        "https://www.trustpilot.com/review/jerseywatch.com"
    ],
    "maxItems": 1000,
    "customMapFunction": (object) => { return {...object} }
};

// Run the Actor and wait for it to finish
const run = await client.actor("thewolves/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 = {
    "startUrls": [
        "https://www.trustpilot.com/review/kindlewritinghub.com",
        "https://www.trustpilot.com/review/www.vans.com",
        "https://www.trustpilot.com/review/shop.missha-deutschland.de",
        "https://www.trustpilot.com/review/dior.co.uk",
        "https://www.trustpilot.com/review/www.barxparx.com",
        "https://www.trustpilot.com/review/oshalafarm.com",
        "https://www.trustpilot.com/review/www.nomador.com?sort=recency",
        "https://www.trustpilot.com/review/apify.com",
        "https://www.trustpilot.com/review/swiftpromining.org",
        "https://www.trustpilot.com/review/couplehoodies.com",
        "https://www.trustpilot.com/review/rosecjewels.com",
        "https://www.trustpilot.com/review/jerseywatch.com",
    ],
    "maxItems": 1000,
    "customMapFunction": "(object) => { return {...object} }",
}

# Run the Actor and wait for it to finish
run = client.actor("thewolves/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 '{
  "startUrls": [
    "https://www.trustpilot.com/review/kindlewritinghub.com",
    "https://www.trustpilot.com/review/www.vans.com",
    "https://www.trustpilot.com/review/shop.missha-deutschland.de",
    "https://www.trustpilot.com/review/dior.co.uk",
    "https://www.trustpilot.com/review/www.barxparx.com",
    "https://www.trustpilot.com/review/oshalafarm.com",
    "https://www.trustpilot.com/review/www.nomador.com?sort=recency",
    "https://www.trustpilot.com/review/apify.com",
    "https://www.trustpilot.com/review/swiftpromining.org",
    "https://www.trustpilot.com/review/couplehoodies.com",
    "https://www.trustpilot.com/review/rosecjewels.com",
    "https://www.trustpilot.com/review/jerseywatch.com"
  ],
  "maxItems": 1000,
  "customMapFunction": "(object) => { return {...object} }"
}' |
apify call thewolves/trustpilot-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🐺 Trustpilot Reviews Scraper API | $0.50/1K Reviews",
        "description": "The Wolves proudly introduces the Trustpilot Review Scraper, an ideal tool for extracting reviews. It can gather 100-200 reviews per second, offering an extremely affordable rate of just $0.50 per 1,000 reviews. The most cost-effective option!",
        "version": "0.0",
        "x-build-id": "MmPzDi5ZK3sfpN32N"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thewolves~trustpilot-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thewolves-trustpilot-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/thewolves~trustpilot-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-thewolves-trustpilot-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/thewolves~trustpilot-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-thewolves-trustpilot-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with. It should be a detail URL",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum number of items on output",
                        "type": "integer",
                        "description": "Maximum number of items that you want as output."
                    },
                    "customMapFunction": {
                        "title": "Custom map function",
                        "type": "string",
                        "description": "Function that takes each of the objects as argument and returns data that will be mapped by the function itself."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
