# TrustPilot Reviews Scraper ⭐ (`shahidirfan/trustpilot-reviews-scraper`) Actor

Extract verified TrustPilot reviews at scale. Capture ratings, review text, reviewer profiles, dates & company metadata. Built for sentiment analysis, reputation monitoring, competitor benchmarking, brand intelligence & ML datasets. Fully structured, production-ready.

- **URL**: https://apify.com/shahidirfan/trustpilot-reviews-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** AI, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Trustpilot Reviews Scraper

Extract Trustpilot reviews from public company review pages. Collect review text, star ratings, dates, reviewer details, verification signals, business TrustScore, and company replies for reputation monitoring, competitor research, and customer feedback analysis.

### Features

- **Multiple URL input** - Add one or many Trustpilot review URLs or plain company domains.
- **Review pagination** - Collect reviews across pages until your result or page limit is reached.
- **Rating filters** - Focus on one star level when you need sentiment-specific datasets.
- **Language filters** - Collect all languages or target a specific Trustpilot language code.
- **Clean output** - Empty and unavailable values are removed before records are saved.
- **Business context** - Include company name, domain, TrustScore, and review counts when available.

---

### Use Cases

#### Reputation Monitoring

Track recent customer feedback for your own brand. Use ratings, review text, dates, and replies to spot changes in customer sentiment and support quality.

#### Competitor Research

Compare public reviews across similar companies. Collect review titles, ratings, and reviewer metadata to identify recurring praise, complaints, and service gaps.

#### Customer Experience Analysis

Build datasets for text analysis, dashboards, and reporting. Filter by star rating or language to study specific customer segments.

#### Response Tracking

Review public company replies alongside the original customer feedback. This helps teams measure response coverage and tone over time.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `urls` | Array | No | `["https://www.trustpilot.com/review/apify.com"]` | Trustpilot company review URLs or plain company domains such as `apify.com`. |
| `results_wanted` | Integer | No | `20` | Maximum number of reviews to save across all URLs. |
| `max_pages` | Integer | No | `10` | Maximum review pages to request per company. |
| `sort` | String | No | `"recency"` | Sort order: `recency` or `relevance`. |
| `languages` | String | No | `"all"` | Use `all` or a language code such as `en`, `de`, `fr`, `es`, or `it`. |
| `stars` | Integer | No | - | Optional star rating filter from 1 to 5. |
| `verified` | Boolean | No | `false` | Return only verified reviews when enabled. |
| `proxyConfiguration` | Object | No | Residential proxy | Proxy settings for reliable extraction. |

---

### Output Data

Each saved review may contain:

| Field | Type | Description |
|-------|------|-------------|
| `review_id` | String | Trustpilot review identifier. |
| `review_url` | String | Direct review URL when available. |
| `source_url` | String | Trustpilot page URL used for the record. |
| `source_page` | Integer | Review page number. |
| `business_domain` | String | Company domain from the Trustpilot page. |
| `business_name` | String | Trustpilot business display name. |
| `business_trust_score` | Number | Business TrustScore when available. |
| `business_review_count` | Integer | Total business review count when available. |
| `title` | String | Review title. |
| `text` | String | Full review text. |
| `rating` | Integer | Star rating from 1 to 5. |
| `language` | String | Review language code. |
| `is_verified` | Boolean | Whether Trustpilot marks the review as verified. |
| `verification_source` | String | Verification label or source when available. |
| `published_date` | String | Date when the review was published. |
| `experience_date` | String | Date of the customer experience. |
| `likes_count` | Integer | Public likes count when available. |
| `reviewer_name` | String | Public reviewer display name. |
| `reviewer_country` | String | Reviewer country code when available. |
| `reviewer_review_count` | Integer | Public review count for the reviewer. |
| `company_reply_text` | String | Public company reply text when available. |
| `company_reply_date` | String | Date of the company reply when available. |

---

### Usage Examples

#### Basic Extraction

Collect the latest reviews from one company:

```json
{
  "urls": ["https://www.trustpilot.com/review/apify.com"],
  "results_wanted": 20,
  "max_pages": 2
}
````

#### Multiple Companies

Use plain company domains and collect a shared result limit:

```json
{
  "urls": ["apify.com", "brightdata.com", "outscraper.com"],
  "results_wanted": 100,
  "max_pages": 5
}
```

#### Filter Negative Reviews

Collect recent one-star reviews for support analysis:

```json
{
  "urls": ["https://www.trustpilot.com/review/example.com"],
  "stars": 1,
  "sort": "recency",
  "languages": "all",
  "results_wanted": 50
}
```

***

### Sample Output

```json
{
  "review_id": "example-review-id",
  "source_url": "https://www.trustpilot.com/review/apify.com?page=1&sort=recency&languages=all",
  "source_page": 1,
  "business_domain": "apify.com",
  "business_name": "Apify",
  "business_trust_score": 4.8,
  "business_review_count": 622,
  "title": "Easy to use and reliable",
  "text": "Apify helped our team automate data collection and reduce manual work.",
  "rating": 5,
  "language": "en",
  "is_verified": true,
  "published_date": "2026-04-08T10:20:00.000Z",
  "experience_date": "2026-04-07T00:00:00.000Z",
  "reviewer_name": "Example Reviewer",
  "reviewer_country": "US"
}
```

***

### Tips for Best Results

#### Use Company Review Pages

- Prefer URLs in the format `https://www.trustpilot.com/review/company.com`.
- Plain domains are accepted and converted automatically.
- Localized Trustpilot URLs are normalized to the main review URL.

#### Keep Test Runs Small

- Start with `results_wanted` set to 20.
- Increase `max_pages` for larger collection jobs.
- Use star filters when you need targeted sentiment slices.

#### Configure Proxies

For larger or scheduled runs, residential proxies are recommended:

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### Integrations

Connect your Trustpilot review data with:

- **Google Sheets** - Review and label customer feedback.
- **Airtable** - Build searchable research databases.
- **Slack** - Send alerts for new low-rating reviews.
- **Webhooks** - Deliver records to your own systems.
- **Make** - Create automated monitoring workflows.
- **Zapier** - Trigger follow-up actions.

#### Export Formats

- **JSON** - For developers and data pipelines.
- **CSV** - For spreadsheet analysis.
- **Excel** - For reporting and sharing.
- **XML** - For system integrations.

***

### Frequently Asked Questions

#### Can I scrape any Trustpilot company page?

Yes, you can provide public Trustpilot company review pages or plain company domains.

#### Can I collect more than one company in a run?

Yes, add multiple values to `urls` and the actor will process them in order until it reaches `results_wanted`.

#### Can I filter by star rating?

Yes, set `stars` to a value from 1 to 5 to collect only that rating level.

#### Why should I use a proxy?

Trustpilot may limit some traffic sources, so residential proxies improve reliability for production runs.

#### Are empty fields saved?

No, unavailable null or empty values are removed from each dataset item.

#### Does this include company replies?

Yes, public company reply text and reply dates are included when Trustpilot provides them.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/schedules)

***

### Legal Notice

This actor is designed for legitimate data collection from public pages. Users are responsible for ensuring compliance with Trustpilot terms, privacy rules, and applicable laws. Use collected data responsibly and respect rate limits.

# Actor input Schema

## `urls` (type: `array`):

Trustpilot company review URLs or plain company domains. Examples: https://www.trustpilot.com/review/apify.com or apify.com.

## `results_wanted` (type: `integer`):

Maximum number of reviews to save across all URLs.

## `max_pages` (type: `integer`):

Maximum review pages to request per company.

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

Trustpilot review sort order.

## `languages` (type: `string`):

Use all languages or a Trustpilot language code such as en, de, fr, es, or it.

## `stars` (type: `integer`):

Optional star rating filter from 1 to 5.

## `verified` (type: `boolean`):

Return only verified reviews when enabled.

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

Use Apify Proxy for reliable Trustpilot extraction. Residential proxies are recommended for larger runs.

## Actor input object example

```json
{
  "urls": [
    "https://www.trustpilot.com/review/apify.com"
  ],
  "results_wanted": 20,
  "max_pages": 2,
  "sort": "recency",
  "languages": "all",
  "verified": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.trustpilot.com/review/apify.com"
    ],
    "results_wanted": 20,
    "max_pages": 2,
    "sort": "recency",
    "languages": "all"
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/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 = {
    "urls": ["https://www.trustpilot.com/review/apify.com"],
    "results_wanted": 20,
    "max_pages": 2,
    "sort": "recency",
    "languages": "all",
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/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 '{
  "urls": [
    "https://www.trustpilot.com/review/apify.com"
  ],
  "results_wanted": 20,
  "max_pages": 2,
  "sort": "recency",
  "languages": "all"
}' |
apify call shahidirfan/trustpilot-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TrustPilot Reviews Scraper ⭐",
        "description": "Extract verified TrustPilot reviews at scale. Capture ratings, review text, reviewer profiles, dates & company metadata. Built for sentiment analysis, reputation monitoring, competitor benchmarking, brand intelligence & ML datasets. Fully structured, production-ready.",
        "version": "0.0",
        "x-build-id": "9iWXywV5D6BLAmLkA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~trustpilot-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-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/shahidirfan~trustpilot-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-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/shahidirfan~trustpilot-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-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": {
                    "urls": {
                        "title": "Trustpilot URL or company domain",
                        "type": "array",
                        "description": "Trustpilot company review URLs or plain company domains. Examples: https://www.trustpilot.com/review/apify.com or apify.com.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "results_wanted": {
                        "title": "Reviews wanted",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of reviews to save across all URLs.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum review pages to request per company.",
                        "default": 10
                    },
                    "sort": {
                        "title": "Sort order",
                        "enum": [
                            "recency",
                            "relevance"
                        ],
                        "type": "string",
                        "description": "Trustpilot review sort order.",
                        "default": "recency"
                    },
                    "languages": {
                        "title": "Languages",
                        "type": "string",
                        "description": "Use all languages or a Trustpilot language code such as en, de, fr, es, or it.",
                        "default": "all"
                    },
                    "stars": {
                        "title": "Star rating filter",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Optional star rating filter from 1 to 5."
                    },
                    "verified": {
                        "title": "Verified reviews only",
                        "type": "boolean",
                        "description": "Return only verified reviews when enabled.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Proxy for reliable Trustpilot extraction. Residential proxies are recommended for larger runs.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
