# Trustpilot Reviews Scraper (`azzouzana/trustpilot-scraper`) Actor

From $0.4/1k 💰 Scrape Trustpilot reviews at scale with 70+ data points (ratings, text, country, names, replies, full business profiles, reviews distributions and more). Bypass Trustpilot’s ~200 limit at lightning speed! Export to JSON/CSV/Excel/API. AI-agent ready - start now! 🚀

- **URL**: https://apify.com/azzouzana/trustpilot-scraper.md
- **Developed by:** [Azzouzana](https://apify.com/azzouzana) (community)
- **Categories:** Automation, Lead generation, SEO tools
- **Stats:** 70 total users, 20 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.40 / 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?

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

## Fast Trustpilot Reviews Scraper 🔥 Beyond the 200-Review limit

#### 🤖 What does Trustpilot Reviews Scraper do?

Trustpilot Reviews Scraper enables you to extract company reviews from [Trustpilot](https://www.trustpilot.com) for brand monitoring, competitive research, lead enrichment, and sentiment analysis — without manual copy-paste or browser automation.

Trustpilot only lets you browse about **~200 reviews** per company on the website. This actor goes **beyond that cap** and can collect **thousands** of reviews when they are publicly available.

The scraper collects key review details such as:

- **Review ID & URL** – Stable identifiers and direct links to each review
- **Title & text** – Headline and full review body
- **Star rating** – 1–5 score per review
- **Dates** – Published, experienced, and updated timestamps
- **Verified flag & source** – Whether Trustpilot marked the review as verified
- **Reviewer** – Display name, country code, and review count
- **Company reply** – Reply text and published date when the business responded
- **Business unit** – Trustpilot slug for the company (e.g. `stripe.com`, `www.nike.com`)

Optional fields when enabled in input: full business-unit profile (`includeBusinessDetails`), trust score and star breakdown (`includeReviewsDistribution`), transparency data (`includeTransparency`).

**Pricing:** **From $0.40 per 1,000 reviews** ($0.4/1K) · volume-based PPE · JSON, CSV, Excel · Apify API · AI-agent ready

***

#### 💡 Why scrape Trustpilot reviews?

Trustpilot is a leading consumer review platform used across ecommerce, SaaS, and services. Scraping it allows you to:

- **Monitor brand reputation:** Track ratings, verified reviews, and company replies over time
- **Benchmark competitors:** Compare star scores and feedback themes across companies
- **Enrich sales & marketing:** Add trust signals and reviewer geography to CRM or outreach
- **Run voice-of-customer analysis:** Export pros, cons, and recurring topics at scale
- **Build dashboards & alerts:** Feed JSON/CSV into BI tools, Sheets, or webhooks

***

#### 🚀 How to scrape Trustpilot reviews

Using Trustpilot Reviews Scraper is straightforward:

1. **Try for free** – [Sign in to Apify](https://apify.com/sign-up?fpr=cbgdsf) and open this actor.
2. **Configure inputs** – Set **Company** (`company`), **Max reviews** (`maxItems`), sort order, and any filters (stars, language, countries, date range, verified only, etc.).
3. **Run the actor** – Click **Run** to start scraping.
4. **Retrieve results** – Preview or download data from the **Dataset** tab (JSON, CSV, Excel, or API).

##### Supported company input

| Format | Example |
|--------|---------|
| Domain slug | `stripe.com` |
| Slug with www | `www.nike.com` |
| Full review URL | `https://www.trustpilot.com/review/shopify.com` |
| Full review URL (www slug) | `https://www.trustpilot.com/review/www.nike.com` |

> **One company per run.** Start a new run for each Trustpilot business you want to scrape.

***

#### 💳 How much will it cost to scrape Trustpilot reviews?

**Pay Per Event (PPE)** — **from $0.40 per 1,000 reviews** ($0.4/1K). You pay per review saved to your dataset. Pricing is **volume-based**, not a single flat rate: larger runs unlock lower per-review cost. Check the actor **Pricing** tab on Apify for current tiers.

| Reviews collected | Cost at from rate\* |
| ----------------: | -----------------: |
| 100 | $0.04 |
| 500 | $0.20 |
| 1,000 | $0.40 |
| 2,500 | $1.00 |
| 5,000 | $2.00 |
| 10,000 | $4.00 |
| 25,000 | $10.00 |

\*Illustrative totals at the **from** rate ($0.4/1K). Your effective rate depends on volume tier.

**Free tier (trial) limits:** up to **5 reviews** per run, **5 runs** per calendar day (UTC), and at least **1 minute** between runs. [Upgrade when ready to scale](https://apify.com/pricing?fpr=cbgdsf).

***

#### 📝 Input Parameters

Configure the actor in the Apify Console or via JSON. **`company` is required.**

##### Core

| Parameter | Type | Default | Description |
| --------- | ---- | ------- | ----------- |
| `company` | string | `apify.com` | Trustpilot review page URL, domain, or slug (e.g. `apify.com`, `www.nike.com`, `https://www.trustpilot.com/review/www.nike.com`). **Required.** |
| `maxItems` | integer | `200` | Maximum unique reviews to collect this run (`10`–`5000`). |
| `sortBy` | string | `recency` | `recency` (most recent) or `relevance` (most relevant). |

##### Filters

| Parameter | Type | Default | Description |
| --------- | ---- | ------- | ----------- |
| `filterStars` | array | — | Only these star ratings: `"1"`–`"5"`. Leave empty for all. Multiple values may be split on page cap for deeper coverage. |
| `filterLanguages` | string | `all` | Review language: `all`, `en`, `fr`, `pt`, `es`, `nl`, `it`, `id`, `de`, `zh`, `ru`, or `pl`. |
| `filterCountries` | array | `[]` | Reviewer country codes (e.g. `US`, `GB`, `DE`). Client-side filter on `reviewerCountryCode`. Empty = all countries. |
| `filterDateRange` | string | `all` | `all`, `last30days`, `last3months`, `last6months`, or `last12months`. |
| `filterVerifiedOnly` | boolean | `false` | Only reviews marked as verified by Trustpilot. |
| `filterRepliesOnly` | boolean | `false` | Only reviews that have a company reply. |
| `searchKeywords` | string | — | Keyword filter in review text (max 100 characters). |

##### Company data (optional)

| Parameter | Type | Default | Description |
| --------- | ---- | ------- | ----------- |
| `includeBusinessDetails` | boolean | `false` | Full Trustpilot business-unit profile on each row: flattened `business_*` fields (id, categories, verification, activity, contactInfo, flags) plus `businessName`, `businessWebsite`, `businessUrl`, and contact aliases. |
| `includeReviewsDistribution` | boolean | `false` | Add `trustScore`, `totalReviews`, and `starsOne`–`starsFive` on each review row. |
| `includeTransparency` | boolean | `false` | Fetch transparency page for `basicLinkRate` and consumer alerts. |

**Quick test — one company, 100 recent reviews**

```json
{
  "company": "stripe.com",
  "maxItems": 100,
  "sortBy": "recency"
}
```

**Filtered — 5-star verified reviews from the last 3 months**

```json
{
  "company": "https://www.trustpilot.com/review/stripe.com",
  "maxItems": 500,
  "sortBy": "relevance",
  "filterStars": ["5"],
  "filterDateRange": "last3months",
  "filterVerifiedOnly": true,
  "filterCountries": ["US", "GB"]
}
```

**Full export — business unit data on every row**

```json
{
  "company": "shopify.com",
  "maxItems": 1000,
  "sortBy": "recency",
  "includeBusinessDetails": true,
  "includeReviewsDistribution": true,
  "includeTransparency": true
}
```

***

#### 📊 Output

The actor returns one JSON object per review in the default dataset. Without the company-data flags, each row includes review and reviewer fields plus `businessUnit` and `scrapedAt`.

Sample output (truncated):

```json
{
  "reviewId": "6a61d53617bd1e98284606ae",
  "reviewUrl": "https://www.trustpilot.com/reviews/6a61d53617bd1e98284606ae",
  "reviewTitle": "Business Coach",
  "reviewText": "As a business coach, I regularly work with clients from a wide variety of sectors. I make sure to carry out extensive research in advance into the sector-specific requirements and the current competitive landscape, both across Germany as a whole and within the region in particular. Using the Google Maps Scraper saves me hours – or even days – of tedious manual research, from which I would then have to laboriously filter out duplicates and multiple entries.",
  "reviewRating": 4,
  "reviewLanguage": "en",
  "reviewPublishedDate": "2026-07-23T10:47:50.000Z",
  "reviewExperiencedDate": "2026-07-23T00:00:00.000Z",
  "reviewUpdatedDate": null,
  "reviewIsVerified": false,
  "reviewSource": "BasicLink",
  "reviewLikes": 0,
  "reviewerId": "6a61d5297b418c16b6899045",
  "reviewerUrl": "https://www.trustpilot.com/users/6a61d5297b418c16b6899045",
  "reviewerName": "Gerald Jürgens",
  "reviewerCountryCode": "DE",
  "reviewerReviewCount": 1,
  "replyText": null,
  "replyPublishedDate": null,
  "businessUnit": "apify.com",
  "scrapedAt": "2026-07-23T11:43:54.636Z",
  "business_id": "62ac9c3177fbadc00785d7fe",
  "business_displayName": "Apify",
  "business_identifyingName": "apify.com",
  "business_numberOfReviews": 636,
  "business_numberOfReviewsLast12Months": 499,
  "business_trustScore": 4.8,
  "business_websiteUrl": "https://apify.com/",
  "business_websiteTitle": "apify.com",
  "business_profileImageUrl": "https://s3-eu-west-1.amazonaws.com/tpd/logos/62ac9c3177fbadc00785d7fe/0x0.png",
  "business_customHeaderUrl": null,
  "business_promotion": null,
  "business_hideCompetitorModule": false,
  "business_stars": 5,
  "business_categories": [
    {
      "id": "software_company",
      "name": "Software Company",
      "rank": "undefined",
      "cardinality": "undefined",
      "isPrimary": true
    },
    {
      "id": "computer_software_store",
      "name": "Computer Software Store",
      "rank": "undefined",
      "cardinality": "undefined",
      "isPrimary": false
    }
  ],
  "business_breadcrumb_topLevelId": "electronics_technology",
  "business_breadcrumb_topLevelDisplayName": "Electronics & Technology",
  "business_breadcrumb_midLevelId": "internet_software",
  "business_breadcrumb_midLevelDisplayName": "Internet & Software",
  "business_breadcrumb_bottomLevelId": "software_company",
  "business_breadcrumb_bottomLevelDisplayName": "Software Company",
  "business_isClaimed": true,
  "business_isClosed": false,
  "business_isTemporarilyClosed": false,
  "business_locationsCount": 0,
  "business_isCollectingReviews": false,
  "business_verification_verifiedByGoogle": false,
  "business_verification_verifiedPaymentMethod": false,
  "business_verification_verifiedUserIdentity": false,
  "business_hasCollectedIncentivisedReviews": false,
  "business_countryCode": "CZ",
  "business_consumerAlert": null,
  "business_consumerAlerts": null,
  "business_isMerged": false,
  "business_contactInfo_email": "hello@apify.com",
  "business_contactInfo_address": "Vodičkova 704/36, Nové Město",
  "business_contactInfo_city": "Prague",
  "business_contactInfo_country": "CZ",
  "business_contactInfo_phone": null,
  "business_contactInfo_zipCode": "110 00",
  "business_activity_isUsingPaidFeatures": false,
  "business_activity_hasSubscription": false,
  "business_activity_claimedDate": "2024-07-30T11:24:59.000Z",
  "business_activity_isClaimed": true,
  "business_activity_previouslyClaimed": true,
  "business_activity_replyBehavior_averageDaysToReply": 0,
  "business_activity_replyBehavior_negativeReviewsWithRepliesCount": 0,
  "business_activity_replyBehavior_replyPercentage": 0,
  "business_activity_replyBehavior_totalNegativeReviewsCount": 13,
  "business_activity_verification_verifiedByGoogle": false,
  "business_activity_verification_verifiedPaymentMethod": false,
  "business_activity_verification_verifiedUserIdentity": false,
  "business_activity_hasBusinessUnitMergeHistory": false,
  "business_activity_isUsingAIResponses": false,
  "business_activity_hasRecentlyInvitedUsers": true,
  "business_hasCustomHeaderSetting": false,
  "business_hasPromotionSetting": false,
  "business_hasLocationModuleAccess": false,
  "businessName": "Apify",
  "businessWebsite": "https://apify.com/",
  "businessEmail": "hello@apify.com",
  "businessPhone": null,
  "businessCity": "Prague",
  "businessZipCode": "110 00",
  "businessAddress": "Vodičkova 704/36, Nové Město, Prague, 110 00",
  "businessCountry": "CZ",
  "businessUrl": "https://www.trustpilot.com/review/apify.com",
  "trustScore": 4.8,
  "totalReviews": 636,
  "starsOne": 13,
  "starsTwo": 2,
  "starsThree": 3,
  "starsFour": 44,
  "starsFive": 574,
  "basicLinkRate": 83,
  "basicLinkRateSource": "trustpilot",
  "hasCollectedIncentivisedReviews": false,
  "consumerAlert": null,
  "consumerAlerts": []
}
```

With `includeBusinessDetails`, `includeReviewsDistribution`, and `includeTransparency` enabled, rows also include flattened `business_*` profile fields, `businessName`, `businessWebsite`, `businessUrl`, contact aliases, `trustScore`, `totalReviews`, `starsOne`–`starsFive`, and transparency metadata.

Export via dataset download, Apify API, webhooks, Google Sheets, Zapier, Make, and other Apify integrations.

***

#### ❓ FAQ

**How much does it cost to run this actor?**\
**From $0.40 per 1,000 reviews** ($0.4/1K) — volume-based PPE, not flat pricing. See [How much will it cost](#-how-much-will-it-cost-to-scrape-trustpilot-reviews).

**Why am I only getting 5 results?**\
On the free Apify plan, each run is limited to 5 reviews so you can check data quality. Upgrade to a paid plan to use your full **Max reviews** setting.

**How many reviews can I get per company?**\
**Thousands** — set **Max reviews** to match your needs. Trustpilot only lets you browse about **200 reviews** on the website; this actor goes beyond that cap when more reviews exist.

**Can I get more than ~200 reviews for one company?**\
Yes. On Trustpilot's site you hit a limit around **200 reviews** per company page. This actor is built to collect **thousands** beyond that when they are publicly available.

**Can I scrape several companies in one run?**\
No. One company per run. Start another run for a different URL or slug.

**Do I need a Trustpilot account?**\
No. The actor collects publicly visible review pages.

**What export formats are available?**\
JSON, CSV, Excel, and API.

***

#### ⚖️ Is it legal to scrape Trustpilot?

Web scraping may be subject to legal restrictions (e.g. GDPR for personal data in the EU). Make sure you have a legitimate purpose and comply with Trustpilot's terms of service. This actor only collects publicly visible review data and does not access content behind login or private accounts. When in doubt, consult your legal advisor.

This actor is **not affiliated with Trustpilot A/S** or any of its subsidiaries. All trademarks belong to their respective owners.

***

#### 📬 Contact us

**Need a custom workflow, higher limits, or help getting started?**

- 💬 **Discord:** `@azzouzana`
- 📧 **Email:** <labs@azzouzana.com>

# Actor input Schema

## `company` (type: `string`):

Trustpilot review page URL, domain, or slug (e.g. apify.com, www.nike.com, https://www.trustpilot.com/review/www.nike.com).

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

Maximum unique reviews to collect this run.

## `sortBy` (type: `string`):

Most recent (newest first) or most relevant reviews.

## `filterStars` (type: `array`):

Only these star ratings (1–5). Leave empty for all. Multiple values may be split on page cap for deeper coverage.

## `filterLanguages` (type: `string`):

Review language filter (matches Trustpilot UI). All languages = no language filter.

## `filterCountries` (type: `array`):

Only keep reviews from these reviewer countries (client-side filter on reviewerCountryCode). Leave empty for all countries.

## `filterDateRange` (type: `string`):

Only reviews from the selected time window. All reviews = no date filter.

## `filterVerifiedOnly` (type: `boolean`):

Only include reviews marked as verified by Trustpilot.

## `filterRepliesOnly` (type: `boolean`):

Only include reviews that have a company reply.

## `searchKeywords` (type: `string`):

Keyword filter in review text (max 100 characters).

## `includeBusinessDetails` (type: `boolean`):

Add the full Trustpilot businessUnit profile on each row: flattened business\_\* fields (id, categories, verification, activity, contactInfo, flags) plus businessName, businessWebsite, businessUrl, and contact aliases.

## `includeReviewsDistribution` (type: `boolean`):

Add trustScore, totalReviews, starsOne–starsFive on each review row.

## `includeTransparency` (type: `boolean`):

Fetch transparency page for basicLinkRate and consumer alerts.

## Actor input object example

```json
{
  "company": "apify.com",
  "maxItems": 200,
  "sortBy": "recency",
  "filterLanguages": "all",
  "filterCountries": [],
  "filterDateRange": "all",
  "filterVerifiedOnly": false,
  "filterRepliesOnly": false,
  "includeBusinessDetails": false,
  "includeReviewsDistribution": false,
  "includeTransparency": false
}
```

# Actor output Schema

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

One dataset row per Trustpilot review (rating, title, text, dates, verified flag, reviewer country, reply, businessUnit).

# 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 = {
    "company": "apify.com",
    "maxItems": 200,
    "filterCountries": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("azzouzana/trustpilot-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 = {
    "company": "apify.com",
    "maxItems": 200,
    "filterCountries": [],
}

# Run the Actor and wait for it to finish
run = client.actor("azzouzana/trustpilot-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 '{
  "company": "apify.com",
  "maxItems": 200,
  "filterCountries": []
}' |
apify call azzouzana/trustpilot-scraper --silent --output-dataset

```

## MCP server setup

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