# Trustpilot Company Reviews Scraper (`xtracto/trustpilot-reviews`) Actor

Scrape a company's Trustpilot reviews and profile: trust score, star rating, review count, categories, plus each review's text, rating, author, reply and dates. No login required.

- **URL**: https://apify.com/xtracto/trustpilot-reviews.md
- **Developed by:** [Farhan Febrian Nauval](https://apify.com/xtracto) (community)
- **Categories:** E-commerce, Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Trustpilot Company Reviews Scraper

Scrape any company's Trustpilot reviews and profile in one run. One result = one review (plus one company profile record).

### Why use this actor

- No account, no login, and no API key required
- Full review text — not just the star rating
- Company profile too: trust score, star rating, total review count, categories, and contact info
- Every review includes the author, date, company reply, language and country
- Walks through as many review pages as you want, with automatic retries
- Stable JSON output suitable for pipelines, reputation monitoring, or analytics

### How it works

1. Paste one or more Trustpilot company links (or just the company domain, e.g. `www.amazon.com`).
2. The actor reads the company's profile and then pages through its reviews.
3. Results stream into your dataset, ready to download as JSON, CSV, or Excel.

You don't manage scrapers, browsers, or retries — the actor handles all of that.

> Trustpilot occasionally shows a "Verifying Connection" check to unfamiliar visitors. Running with a residential proxy (the default) avoids it. If you ever hit it, you can paste a one-time token from your own browser into the optional **verification token** field — see the field description.

### Input

```json
{
  "companyUrls": [
    "https://www.trustpilot.com/review/www.amazon.com"
  ],
  "maxReviews": 200,
  "maxPages": 20,
  "includeCompanyProfile": true,
  "concurrency": 2,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

| Field | Type | Description |
|---|---|---|
| `companyUrls` | array | Trustpilot review URLs, or bare company domains (`www.amazon.com`). |
| `maxReviews` | integer | Cap reviews per company. `0` = no cap. Default 200. |
| `maxPages` | integer | Page cap per company (20 reviews/page). Default 20. |
| `includeCompanyProfile` | boolean | Also output a company profile record. Default true. |
| `awsWafToken` | string | Optional one-time token, only if you hit the verification page. |
| `concurrency` | integer | How many companies to process in parallel. Default 2. |
| `proxyConfiguration` | object | Proxy settings. A residential pool (e.g. US) is recommended. |

### Output

**Company profile record** (`recordType: "COMPANY"`):

```json
{
  "_input": "https://www.trustpilot.com/review/www.amazon.com",
  "_source": "S1-nextdata",
  "_scrapedAt": "2026-06-11T10:20:00Z",
  "recordType": "COMPANY",
  "displayName": "Amazon",
  "identifyingName": "www.amazon.com",
  "trustScore": 1.7,
  "stars": 1.5,
  "numberOfReviews": 46527,
  "websiteUrl": "https://www.amazon.com",
  "categories": [ { "categoryId": "electronics_technology", "displayName": "Electronics & Technology" } ],
  "isClaimed": false
}
```

**Review record** (`recordType: "REVIEW"`):

```json
{
  "_input": "https://www.trustpilot.com/review/www.amazon.com",
  "_source": "S1-nextdata",
  "_scrapedAt": "2026-06-11T10:20:01Z",
  "recordType": "REVIEW",
  "page": 1,
  "id": "6a2a4daaa84d16150a0430c0",
  "rating": 1,
  "title": "Amazon keeps selling defective products",
  "text": "I just received a defective product, and amazon expects me to spend my time and money to return it ... (truncated)",
  "likes": 0,
  "language": "en",
  "dates": { "experiencedDate": "2026-06-11T00:00:00.000Z", "publishedDate": "2026-06-11T07:55:10.000Z" },
  "consumer": { "displayName": "Mischelle Wilson-Brady", "countryCode": "US", "numberOfReviews": 1 },
  "reply": null,
  "location": null
}
```

| Field | Type | Description |
|---|---|---|
| `recordType` | string | `COMPANY` or `REVIEW`. |
| `trustScore` / `stars` | number | Company trust score (0–5) and star band (company records). |
| `numberOfReviews` | number | Total reviews on the company (company records). |
| `rating` | number | This review's star rating (1–5). |
| `title` / `text` | string | Review headline and full body. |
| `consumer` | object | Author name, country, and review count. |
| `reply` | object | The company's reply, if any. |
| `dates` | object | Experienced / published / updated dates. |
| `language` | string | Detected review language. |

A company/URL that can't be loaded returns an `_error` record instead of being dropped.

### Notes

- Reviews are returned newest-first, 20 per page, exactly as Trustpilot orders them.
- Trust scores, review counts and replies are point-in-time and change over time.

# Actor input Schema

## `companyUrls` (type: `array`):

Trustpilot review-page URLs, or bare company domains. Examples: https://www.trustpilot.com/review/www.amazon.com , or just www.amazon.com

## `maxReviews` (type: `integer`):

Stop after this many reviews per company. 0 = no cap (walk until the last page or the page cap).

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

Safety cap on review pages walked per company (each page has 20 reviews).

## `includeCompanyProfile` (type: `boolean`):

Also output one company profile record (trust score, stars, review count, categories, contact info) per company.

## `awsWafToken` (type: `string`):

Optional. Only needed if your IP gets the 'Verifying Connection' page. Open a Trustpilot review page in your browser, copy the 'aws-waf-token' cookie value, and paste it here. The token is reusable for a few hours. On a clean residential proxy you usually don't need this.

## `concurrency` (type: `integer`):

How many company URLs to process in parallel.

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

Proxy settings. A residential pool (e.g. US) is recommended — Trustpilot blocks most datacenter IPs.

## Actor input object example

```json
{
  "companyUrls": [
    "https://www.trustpilot.com/review/www.amazon.com"
  ],
  "maxReviews": 200,
  "maxPages": 20,
  "includeCompanyProfile": true,
  "concurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "companyUrls": [
        "https://www.trustpilot.com/review/www.amazon.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/trustpilot-reviews").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 = { "companyUrls": ["https://www.trustpilot.com/review/www.amazon.com"] }

# Run the Actor and wait for it to finish
run = client.actor("xtracto/trustpilot-reviews").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 '{
  "companyUrls": [
    "https://www.trustpilot.com/review/www.amazon.com"
  ]
}' |
apify call xtracto/trustpilot-reviews --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Trustpilot Company Reviews Scraper",
        "description": "Scrape a company's Trustpilot reviews and profile: trust score, star rating, review count, categories, plus each review's text, rating, author, reply and dates. No login required.",
        "version": "0.1",
        "x-build-id": "djcUG92Qh0Ssduuwj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~trustpilot-reviews/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-trustpilot-reviews",
                "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/xtracto~trustpilot-reviews/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-trustpilot-reviews",
                "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/xtracto~trustpilot-reviews/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-trustpilot-reviews",
                "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",
                "required": [
                    "companyUrls"
                ],
                "properties": {
                    "companyUrls": {
                        "title": "Trustpilot company URLs",
                        "type": "array",
                        "description": "Trustpilot review-page URLs, or bare company domains. Examples: https://www.trustpilot.com/review/www.amazon.com , or just www.amazon.com",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxReviews": {
                        "title": "Max reviews per company",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after this many reviews per company. 0 = no cap (walk until the last page or the page cap).",
                        "default": 200
                    },
                    "maxPages": {
                        "title": "Max pages per company",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Safety cap on review pages walked per company (each page has 20 reviews).",
                        "default": 20
                    },
                    "includeCompanyProfile": {
                        "title": "Include company profile",
                        "type": "boolean",
                        "description": "Also output one company profile record (trust score, stars, review count, categories, contact info) per company.",
                        "default": true
                    },
                    "awsWafToken": {
                        "title": "Verification token (optional)",
                        "type": "string",
                        "description": "Optional. Only needed if your IP gets the 'Verifying Connection' page. Open a Trustpilot review page in your browser, copy the 'aws-waf-token' cookie value, and paste it here. The token is reusable for a few hours. On a clean residential proxy you usually don't need this."
                    },
                    "concurrency": {
                        "title": "Concurrent companies",
                        "minimum": 1,
                        "maximum": 6,
                        "type": "integer",
                        "description": "How many company URLs to process in parallel.",
                        "default": 2
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. A residential pool (e.g. US) is recommended — Trustpilot blocks most datacenter IPs.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
