# Trustpilot Scraper - Business Data, Reviews & Contact Info (`jamesrez/trustpilot-scraper`) Actor

Extract business ratings, reviews, emails, and phone numbers from Trustpilot. Search by keyword, browse categories, or scrape reviews at scale.

- **URL**: https://apify.com/jamesrez/trustpilot-scraper.md
- **Developed by:** [James Rezendes](https://apify.com/jamesrez) (community)
- **Categories:** Lead generation
- **Stats:** 25 total users, 2 monthly users, 96.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 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.

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

## Trustpilot Scraper

Extract business data, reviews, ratings, and contact information from Trustpilot. Search by keyword, browse categories, or scrape reviews for specific businesses.

### What does Trustpilot Scraper do?

This Actor scrapes Trustpilot to extract structured business data and customer reviews. Use it for:

- **Lead generation** — Find businesses with their contact info (email, phone, website)
- **Competitor analysis** — Compare ratings and review volumes across companies
- **Brand monitoring** — Track reviews and sentiment for any business
- **Market research** — Analyze entire business categories on Trustpilot
- **Reputation management** — Export and analyze customer feedback at scale

### Features

- **3 scraping modes**: Search, Category browsing, and Review extraction
- **Rich business data**: Name, TrustScore, star rating, review count, website, email, phone, address, categories
- **Full review data**: Author, rating, title, text, date, language
- **Automatic pagination**: Crawls multiple pages of results
- **Configurable limits**: Control how many pages to scrape
- **Fast & lightweight**: Uses CheerioCrawler (no browser needed)
- **Proxy support**: Built-in proxy configuration for reliable scraping

### How to use

#### 1. Search for businesses

Find businesses by keyword (e.g., "dentist london", "web design agency", "plumber chicago"):

```json
{
    "mode": "search",
    "searchQuery": "dentist london",
    "maxPages": 10
}
```

Returns 10 businesses per page with name, rating, website, email, phone, address, and categories.

#### 2. Browse a category

Scrape all businesses in a Trustpilot category:

```json
{
    "mode": "category",
    "categoryUrl": "bank",
    "maxPages": 20
}
```

Category slugs: `bank`, `electronics_technology`, `health_medical`, `travel_vacation`, etc. You can also use full URLs like `https://www.trustpilot.com/categories/bank`.

#### 3. Extract reviews

Get customer reviews for specific businesses:

```json
{
    "mode": "reviews",
    "businessUrls": ["amazon.com", "netflix.com"],
    "maxReviewPages": 10
}
```

Returns 20 reviews per page with author, rating, title, full text, and date.

#### 4. Search + Reviews combo

Search for businesses AND scrape their reviews in one run:

```json
{
    "mode": "search",
    "searchQuery": "insurance company",
    "maxPages": 5,
    "includeReviews": true,
    "maxReviewPages": 3
}
```

### Output

#### Business data (Search & Category modes)

```json
{
    "name": "The New York Pass",
    "trustScore": 4.7,
    "stars": 4.5,
    "numberOfReviews": 27062,
    "website": "https://www.newyorkpass.com/",
    "email": "info@newyorkpass.com",
    "phone": "1 (877) 714-1999",
    "address": "",
    "city": "New York City",
    "zipCode": "",
    "country": "United States",
    "categories": ["Travel Aggregator"],
    "trustpilotUrl": "https://www.trustpilot.com/review/newyorkpass.com",
    "logoUrl": "//s3-eu-west-1.amazonaws.com/tpd/logos/..."
}
```

#### Review data (Reviews mode)

```json
{
    "businessName": "Amazon",
    "businessUrl": "https://www.trustpilot.com/review/amazon.com",
    "author": "John Smith",
    "rating": 4,
    "title": "Great delivery speed",
    "text": "Ordered on Monday, arrived Tuesday. Package was in perfect condition...",
    "datePublished": "2026-03-01T14:30:00.000Z",
    "language": "en"
}
```

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | string | `search` | Scraping mode: `search`, `category`, or `reviews` |
| `searchQuery` | string | | Search term for finding businesses |
| `categoryUrl` | string | | Trustpilot category slug or full URL |
| `businessUrls` | string\[] | | Business domains or Trustpilot URLs for review extraction |
| `maxPages` | integer | 5 | Max search/category result pages (10 results per page) |
| `maxReviewPages` | integer | 3 | Max review pages per business (20 reviews per page) |
| `includeReviews` | boolean | false | Also scrape reviews when searching/browsing categories |
| `proxyConfiguration` | object | | Proxy settings for avoiding rate limits |

### Use cases

#### Lead generation for sales teams

Search for businesses in your target industry and location. Export with emails and phone numbers for outreach.

#### Competitive intelligence

Compare your company's Trustpilot rating against competitors. Track review volume and sentiment trends.

#### Review monitoring

Set up scheduled runs to track new reviews for your business or competitors. Export to Google Sheets or your CRM.

#### Market research

Analyze entire business categories — how many companies, average ratings, geographic distribution.

### Tips

- Use **proxy configuration** for large scraping jobs to avoid rate limiting
- Start with small `maxPages` values to test, then scale up
- The `includeReviews` option significantly increases run time — use it selectively
- Export data as CSV for easy import into spreadsheets, or JSON for programmatic use

### Pricing

This Actor uses **Pay Per Event** pricing:

- $0.50 per 100 business results
- $0.25 per 100 reviews

Platform costs (compute, proxy) are billed separately by Apify.

# Actor input Schema

## `mode` (type: `string`):

Choose what to scrape: search for businesses by keyword, browse a category, or extract reviews from specific businesses

## `searchQuery` (type: `string`):

Search term (e.g. 'plumber new york', 'dentist london', 'web design'). Used in Search mode.

## `categoryUrl` (type: `string`):

Trustpilot category slug or full URL (e.g. 'bank', 'electronics\_technology', or 'https://www.trustpilot.com/categories/bank'). Used in Category mode.

## `businessUrls` (type: `array`):

List of Trustpilot business URLs or domain names to scrape reviews from (e.g. 'amazon.com' or 'https://www.trustpilot.com/review/amazon.com'). Used in Reviews mode.

## `maxPages` (type: `integer`):

Maximum number of search/category result pages to scrape (10 results per page)

## `maxReviewPages` (type: `integer`):

Maximum number of review pages per business (20 reviews per page)

## `includeReviews` (type: `boolean`):

When searching or browsing categories, also scrape reviews for each business found

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

Proxy settings for avoiding rate limits

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "plumber new york",
  "categoryUrl": "bank",
  "businessUrls": [
    "amazon.com"
  ],
  "maxPages": 5,
  "maxReviewPages": 3,
  "includeReviews": false
}
```

# 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 = {
    "searchQuery": "plumber new york",
    "categoryUrl": "bank",
    "businessUrls": [
        "amazon.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jamesrez/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 = {
    "searchQuery": "plumber new york",
    "categoryUrl": "bank",
    "businessUrls": ["amazon.com"],
}

# Run the Actor and wait for it to finish
run = client.actor("jamesrez/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 '{
  "searchQuery": "plumber new york",
  "categoryUrl": "bank",
  "businessUrls": [
    "amazon.com"
  ]
}' |
apify call jamesrez/trustpilot-scraper --silent --output-dataset

```

## MCP server setup

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