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

Trustpilot API alternative: scrape reviews without login, export ratings, text & company replies to CSV/JSON for any company by domain.

- **URL**: https://apify.com/logiover/trustpilot-reviews-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Business, Marketing, Lead generation
- **Stats:** 9 total users, 6 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 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/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 Reviews Scraper

Scrape **Trustpilot reviews at scale** for any company — by domain or Trustpilot review URL. Returns **one clean row per review** with the star rating, title, full text, reviewer name & country, verification status, experience & published dates, and the company's reply (if any). Each row also carries the business name, overall **TrustScore** and total review count.

No login. No API key. No CAPTCHA solving on your side.

### What you get

| Field | Description |
|---|---|
| `businessName` | Company display name on Trustpilot |
| `domain` | Company domain scraped |
| `trustScore` | Overall TrustScore (1.0–5.0) |
| `stars` | Star bucket (rounded) |
| `totalReviews` | Total reviews the company has |
| `reviewId` | Unique Trustpilot review id |
| `rating` | Star rating of this review (1–5) |
| `title` | Review headline |
| `text` | Full review body |
| `authorName` | Reviewer display name |
| `authorLocation` | Reviewer country code |
| `authorReviewCount` | How many reviews the author has written |
| `isVerified` | Whether the review is verified |
| `verificationSource` | Source (Organic / Invited …) |
| `experienceDate` | Date of the experience |
| `publishedDate` | Date the review was published |
| `updatedDate` | Date the review was edited (if any) |
| `likes` | Helpful-vote count |
| `language` | Review language code |
| `replyText` | Company's reply text (if any) |
| `replyDate` | Date of the company's reply |
| `reviewUrl` | Direct link to the review |

### Input

| Field | Type | Notes |
|---|---|---|
| `companyDomains` | array (required) | Domains (`amazon.com`) or full Trustpilot URLs (`https://www.trustpilot.com/review/amazon.com`). |
| `maxReviews` | integer | Reviews per company. `0` = all available. |
| `starRatings` | array | Keep only these ratings (1–5). Empty = all. |
| `language` | string | ISO code to filter by language (e.g. `en`, `de`). |
| `proxyConfiguration` | object | Apify Proxy. Residential is used by default for reliable access. |

#### Example

```json
{
  "companyDomains": ["amazon.com", "booking.com"],
  "maxReviews": 1000,
  "starRatings": ["1", "2"],
  "language": "en"
}
````

### How it works

Trustpilot protects its pages with a JavaScript "Verifying Connection" anti-bot interstitial served via CloudFront. This actor runs a real headless Chromium that clears the challenge, then reads the page's embedded `__NEXT_DATA__` JSON — the same data Trustpilot's own frontend uses — and paginates `?page=1..N` until `maxReviews` is reached or there are no more reviews. Sessions/IPs rotate automatically on a block, and a single bad page never crashes the run.

### Notes

- Trustpilot serves ~20 reviews per page; very large companies have tens of thousands of reviews, so set `maxReviews` to control run time and cost.
- Anti-bot pressure can occasionally slow individual pages; the actor retries and rotates before giving up on a page.

### FAQ

#### Is this a Trustpilot API alternative?

Yes. Trustpilot's official API is gated and limited to your own business profile. This actor works as a no-key Trustpilot API alternative, returning structured review data for any public company page.

#### How do I export Trustpilot reviews to CSV or JSON?

Run the actor, then download the resulting dataset in CSV, JSON, or Excel from the run's Storage tab. Each review is one clean row, so the export drops straight into a spreadsheet or pipeline.

#### Can I scrape Trustpilot reviews without an API or login?

Yes. The actor uses a real headless browser to clear Trustpilot's anti-bot interstitial and read the page's embedded data, so you get reviews without an API key and without logging in.

### Changelog

#### 2026-06-07

- Docs: added coverage for Trustpilot API alternative, exporting reviews to CSV/JSON, and scraping without an API or login.

# Actor input Schema

## `companyDomains` (type: `array`):

Companies to scrape. Use the business domain (e.g. "amazon.com") or a full Trustpilot review URL (e.g. "https://www.trustpilot.com/review/amazon.com"). One row per review is returned.

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

How many reviews to collect per company (paginated). 0 = all available.

## `starRatings` (type: `array`):

Only keep reviews with these star ratings (1-5). Leave empty for all ratings.

## `language` (type: `string`):

Optional ISO language code to filter reviews by language (e.g. "en", "de", "fr"). Leave empty for all languages.

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

Proxy used to reach Trustpilot. Keep the default Apify Proxy. Datacenter is tried first; if blocked the actor automatically retries on residential.

## Actor input object example

```json
{
  "companyDomains": [
    "amazon.com",
    "booking.com"
  ],
  "maxReviews": 200,
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `rating` (type: `string`):

Star rating 1-5

## `title` (type: `string`):

Review title

## `text` (type: `string`):

Full review text

## `authorName` (type: `string`):

Reviewer name

## `authorLocation` (type: `string`):

Reviewer country

## `publishedDate` (type: `string`):

Date published

## `businessName` (type: `string`):

Company name

## `reviewUrl` (type: `string`):

Direct link to review

# 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 = {
    "companyDomains": [
        "amazon.com"
    ],
    "maxReviews": 200,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/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 = {
    "companyDomains": ["amazon.com"],
    "maxReviews": 200,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/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 '{
  "companyDomains": [
    "amazon.com"
  ],
  "maxReviews": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call logiover/trustpilot-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Trustpilot Reviews Scraper",
        "description": "Trustpilot API alternative: scrape reviews without login, export ratings, text & company replies to CSV/JSON for any company by domain.",
        "version": "0.0",
        "x-build-id": "Rc9azwBWXbmmYtEGC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~trustpilot-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-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/logiover~trustpilot-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-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/logiover~trustpilot-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-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",
                "required": [
                    "companyDomains"
                ],
                "properties": {
                    "companyDomains": {
                        "title": "Companies (domains or Trustpilot URLs)",
                        "type": "array",
                        "description": "Companies to scrape. Use the business domain (e.g. \"amazon.com\") or a full Trustpilot review URL (e.g. \"https://www.trustpilot.com/review/amazon.com\"). One row per review is returned.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxReviews": {
                        "title": "Max reviews per company",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many reviews to collect per company (paginated). 0 = all available.",
                        "default": 0
                    },
                    "starRatings": {
                        "title": "Star ratings filter",
                        "type": "array",
                        "description": "Only keep reviews with these star ratings (1-5). Leave empty for all ratings.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5"
                            ],
                            "enumTitles": [
                                "1 star",
                                "2 stars",
                                "3 stars",
                                "4 stars",
                                "5 stars"
                            ]
                        }
                    },
                    "language": {
                        "title": "Review language",
                        "type": "string",
                        "description": "Optional ISO language code to filter reviews by language (e.g. \"en\", \"de\", \"fr\"). Leave empty for all languages."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Proxy used to reach Trustpilot. Keep the default Apify Proxy. Datacenter is tried first; if blocked the actor automatically retries on residential.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
