# Trustpilot Reviews and TrustScore Scraper (No Reviewer Names) (`pistachio_implementation/trustpilot-reviews-company-scores`) Actor

Get Trustpilot reviews plus each company TrustScore, total reviews and star distribution for any list of domains. Reviewer names removed. Filter by stars, date, language, verified or replied. Built in retries for reliable runs.

- **URL**: https://apify.com/pistachio\_implementation/trustpilot-reviews-company-scores.md
- **Developed by:** [Hay Equipos](https://apify.com/pistachio_implementation) (community)
- **Categories:** E-commerce, Marketing, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Trustpilot Reviews and TrustScore Scraper (No Reviewer Names)

Give this actor a list of company websites and get back their Trustpilot reviews and a summary of each company's reputation: TrustScore, total number of reviews and how many reviews sit at each star level. Reviewer names are removed from every row, so you get the opinion without the personal data.

It is built for reliability first. Every page load is retried with growing pauses, a fresh browser session is started when Trustpilot slows it down, and a company that does not exist on Trustpilot produces a clear error row instead of a failed run.

### What you can use it for

- Track your own brand and your competitors' TrustScore every week.
- Feed review text into sentiment analysis, topic clustering or an AI summary.
- Find the complaints customers repeat most (filter to 1 and 2 stars).
- See how often, and how fast, a company answers its reviews.
- Build a competitor comparison table from the company summary rows.

### Input

| Field | What it does | Default |
|---|---|---|
| Company domains | Company websites as Trustpilot lists them, for example `www.bestbuy.com`. Full Trustpilot review links also work. | required |
| Maximum reviews per company | How many reviews to save per company, newest first. 0 saves only the company summary. | 100 |
| Include company summary | One summary row per company. | on |
| Review language | A two letter code such as `en`, or `all`. | all |
| Star ratings | Keep only these star levels. | all |
| Date range | Last 30 days, 3, 6 or 12 months. | any time |
| Verified reviews only | Keep only reviews Trustpilot marks as verified. | off |
| Reviews with a company reply only | Keep only answered reviews. | off |
| Proxy | Not needed in most cases. | none |

Example input:

```json
{
  "companyDomains": ["www.bestbuy.com", "www.zappos.com"],
  "maxReviewsPerCompany": 200,
  "stars": ["1", "2"],
  "dateRange": "last6months"
}
```

### Output

Each row has a `type` field: `review`, `company` or `error`. The dataset has two ready made views, Reviews and Company summaries, and you can download either as JSON, CSV or Excel.

Review row:

```json
{
  "type": "review",
  "companyDomain": "www.zappos.com",
  "companyName": "Zappos",
  "reviewId": "6ab1f4e2fbe9a92da4d4a2ba",
  "reviewUrl": "https://www.trustpilot.com/reviews/6ab1f4e2fbe9a92da4d4a2ba",
  "rating": 1,
  "title": "Zappos failed to provide a refund even…",
  "text": "Zappos failed to provide a refund even though shoes were returned per their instructions.",
  "language": "en",
  "reviewerCountry": "US",
  "publishedDate": "2026-09-22T05:24:18.000Z",
  "experiencedDate": "2026-09-10T00:00:00.000Z",
  "updatedDate": null,
  "isVerified": false,
  "verificationLevel": "not-verified",
  "verificationSource": "invitation",
  "reviewSource": "Organic",
  "likes": 0,
  "companyReply": {
    "text": "We have sent an email to the address on file with more information...",
    "publishedDate": "2026-09-25T21:50:49.000Z",
    "updatedDate": null
  },
  "scrapedAt": "2026-09-27T05:42:05.340Z"
}
```

Company summary row:

```json
{
  "type": "company",
  "companyDomain": "www.bestbuy.com",
  "companyName": "Best Buy",
  "trustpilotUrl": "https://www.trustpilot.com/review/www.bestbuy.com",
  "trustScore": 1.4,
  "stars": 1.5,
  "totalReviews": 7199,
  "reviewsLast12Months": 650,
  "ratingDistribution": { "oneStar": 6261, "twoStars": 272, "threeStars": 123, "fourStars": 130, "fiveStars": 413 },
  "reviewsMatchingFilters": 6674,
  "reviewLanguages": [{ "language": "en", "reviewCount": 6904 }],
  "categories": ["TV store"],
  "countryCode": "US",
  "isClaimed": false,
  "replyPercentage": 0,
  "averageDaysToReply": 0
}
```

Error row (a domain with no Trustpilot page):

```json
{ "type": "error", "companyDomain": "no-such-company.com", "error": "No Trustpilot profile found for this domain" }
```

### Pricing

Pay per event, no subscription:

- $3.00 per 1,000 reviews ($0.003 per review)
- $0.005 per company summary

You only pay for rows you receive. Set a maximum cost per run in the run options and the actor stops cleanly when it is reached.

### Limits, stated plainly

- **Trustpilot shows visitors who are not logged in 10 pages (200 reviews) of any one listing.** This actor never logs in. To reach further it reads several listings for the same company (each star level, each review language, verified only, replied only) and removes duplicates. In tests this collected 1,094 unique reviews for a company with 7,078. For small and mid sized companies (a few hundred reviews per star level) you normally get every review. For very large companies you get the newest reviews across every star level and language, not the full history.
- Reviewer names, profile pictures and profile links are never collected. Review text is kept as written and may itself mention names.
- Speed is about 200 to 300 reviews a minute, with polite pauses between pages.
- Only public pages are read. No account, no login.

### FAQ

**Which domain do I type?** The one in the company's Trustpilot link. For `trustpilot.com/review/www.bestbuy.com` that is `www.bestbuy.com`. You can paste the whole link too.

**Why is the review title cut off with "…"?** When a reviewer leaves the title empty, Trustpilot builds one from the first words of the text. The full text is always in `text`.

**Can I get only the TrustScore for a list of companies?** Yes. Set Maximum reviews per company to 0 and you pay only for the summary rows.

**Does it work for Trustpilot sites in other countries?** Yes. Every company profile is shared across Trustpilot's country sites; use the language filter to pick review languages.

**A run returned fewer reviews than the company total. Why?** See the first limit above, and check your filters: `reviewsMatchingFilters` in the summary row shows how many reviews match what you asked for.

**Something broke.** Open an issue on the actor page with the run link. Issues are answered within a day.

# Actor input Schema

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

Company websites as Trustpilot lists them, for example www.bestbuy.com or zappos.com. You can also paste full Trustpilot review page links.

## `maxReviewsPerCompany` (type: `integer`):

How many reviews to save for each company, newest first. Set 0 to get only the company summary.

## `includeCompanySummary` (type: `boolean`):

Save one summary row per company with TrustScore, total reviews and the count of reviews at each star level.

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

Two letter language code such as en, de or fr, or all for every language.

## `stars` (type: `array`):

Only keep reviews with these star ratings. Leave empty for all ratings.

## `dateRange` (type: `string`):

Only keep reviews published in this period.

## `verifiedOnly` (type: `boolean`):

Only keep reviews Trustpilot marks as verified.

## `withRepliesOnly` (type: `boolean`):

Only keep reviews the company has answered.

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

Not needed in most cases. Add a proxy only if your runs start failing.

## Actor input object example

```json
{
  "companyDomains": [
    "www.bestbuy.com"
  ],
  "maxReviewsPerCompany": 40,
  "includeCompanySummary": true,
  "languages": "all",
  "stars": [],
  "dateRange": "",
  "verifiedOnly": false,
  "withRepliesOnly": false
}
```

# Actor output Schema

## `results` (type: `string`):

All rows the run saved to the default dataset.

## `summary` (type: `string`):

The RUN\_STATS record: counts and problems for the whole run.

# 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": [
        "www.bestbuy.com"
    ],
    "maxReviewsPerCompany": 40
};

// Run the Actor and wait for it to finish
const run = await client.actor("pistachio_implementation/trustpilot-reviews-company-scores").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": ["www.bestbuy.com"],
    "maxReviewsPerCompany": 40,
}

# Run the Actor and wait for it to finish
run = client.actor("pistachio_implementation/trustpilot-reviews-company-scores").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 '{
  "companyDomains": [
    "www.bestbuy.com"
  ],
  "maxReviewsPerCompany": 40
}' |
apify call pistachio_implementation/trustpilot-reviews-company-scores --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pistachio_implementation/trustpilot-reviews-company-scores"
        }
    }
}
```

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/TgeLgFuwNKCKZOoPA/builds/0jlv1siuUnzmLMwKs/openapi.json
