# Trustpilot Company Scraper (`scraptivo/trustpilot-scraper`) Actor

Collects Trustpilot companies from search queries, categories, or company URLs. Returns TrustScore, review counts, and optional profile details and reviews.

- **URL**: https://apify.com/scraptivo/trustpilot-scraper.md
- **Developed by:** [Scraptivo](https://apify.com/scraptivo) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.97 / 1,000 company records

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

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 Company Scraper** collects companies from [Trustpilot](https://www.trustpilot.com) and turns them into structured data for reputation research, competitor monitoring, and lead lists. Provide a search query, category, or company URL, run the Actor, and export name, TrustScore, review counts, and website to JSON, CSV, Excel, or your preferred integration. Use it to compare categories, attach reviews, and automate recurring collection. Pricing starts at **$1.00 per 1,000 companies**, with optional details and reviews at **$1.50 per 1,000** each.

### What can you automate with Trustpilot Company Scraper?

- **Build company lists from search** — Run queries such as `Clothing store in United States` and export TrustScore, stars, and review counts.
- **Crawl a category** — Pass slugs such as `clothing_store` or `cats_dogs` for a country.
- **Enrich selected profiles** — Turn on company details for claimed status, verification, contact, activity, and similar companies.
- **Attach reviews** — Enable reviews to nest title, text, rating, and consumer fields on each company. Charged per review.
- **Cap spend** — Use `maxItems` for companies and `maxReviews` (default 5, `0` = all) so a category crawl stays bounded.
- **Start from copied URLs** — Paste search, category, or `/review/{company}` URLs when you already have the page.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Market researchers | Comparing TrustScores and review volume in a category. |
| Brand and reputation teams | Tracking a rival's newest comments and star mix. |
| Lead-generation teams | Exporting websites and optional contact fields from claimed profiles. |
| Agencies | Building client-ready company lists without opening Trustpilot by hand. |

### What data can you collect from Trustpilot?

| Data group | Example fields | How it helps |
|---|---|---|
| Company identity | Name, profile URL, website, `companyId`, identifying name | Deduplicate and reopen the profile. |
| Reputation | Stars, TrustScore, total reviews, last-12-month reviews | Rank companies quickly. |
| Location | City, zip, country, categories | Slice results by market. |
| Status | Claimed, verified, recommended, closed | Filter inactive or unclaimed profiles. |
| Details | Email, phone, verification flags, activity, rating breakdown | Appear when **Scrape company details** is enabled. |
| Reviews | Title, text, rating, dates, consumer | Appear when **Scrape company reviews** is enabled. |

Listing-level name, TrustScore, stars, and review counts are returned on every company. Contact, verification, and similar-company fields appear when details are enabled. Reviews nest on the company record; they are not separate dataset rows.

### How to use Trustpilot Company Scraper

1. Open the [Trustpilot Company Scraper](https://apify.com/scraptivo/trustpilot-scraper) on Apify.
2. Enter a search query, a category slug, or paste Trustpilot URLs.
3. Set `country` (default `US`), `maxItems`, and optional details or reviews.
4. Run the Actor and wait for company records to appear in the dataset.
5. Export JSON, CSV, or Excel, or connect the dataset to your workflow.

```json
{
    "searchQueries": ["Clothing store in United States"],
    "country": "US",
    "maxItems": 10,
    "scrapeCompanyDetails": false,
    "scrapeReviews": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Example workflow

#### Watch US clothing stores every Monday

1. Schedule a weekly run with `searchQueries` = `["Clothing store in United States"]` and `country` = `US`.
2. Keep details and reviews off for a cheap company snapshot, then enable them on a shortlist.
3. Send new records to Google Sheets through a webhook.
4. Deduplicate user-side against the stable `companyId` field.

### Automate and integrate your results

- **Schedules** — Run **weekly** for category research or **daily** when you watch a small set of company URLs.
- **Webhooks** — Push completed datasets into Sheets, Slack, or a CRM.
- **Exports and API** — Download from the Apify Console or start a run from the API:

```shell
curl "https://api.apify.com/v2/acts/scraptivo~trustpilot-scraper/runs?token=YOUR-APIFY-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchQueries": ["Clothing store in United States"],
    "country": "US",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
  }'
```

- **Deduplication** — The Actor appends results on every run. Use `companyId` as the stable key.

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---|---:|---|---|
| `searchQueries` | Array of strings | No\* | — | Company search terms on Trustpilot. |
| `country` | String | No | `US` | ISO country code for search and category results. |
| `categoryIds` | Array of strings | No\* | — | Category slugs or category page URLs. |
| `startUrls` | Array of URLs | No\* | — | Search, category, or company review URLs. |
| `maxItems` | Integer | No | `0` | Maximum companies (`0` = unlimited). |
| `scrapeCompanyDetails` | Boolean | No | `false` | Visit each profile for contact, verification, and activity. Charges `company-details`. |
| `scrapeReviews` | Boolean | No | `false` | Fetch reviews nested on each company. Charges `review` per review. |
| `maxReviews` | Integer | No | `5` | Maximum reviews per company (`0` = all). |
| `proxyConfiguration` | Proxy object | No | Apify proxy, RESIDENTIAL | Residential proxies are recommended. |

\* Provide at least one of `searchQueries`, `categoryIds`, or `startUrls`.

#### Are reviews separate dataset rows?

No. Reviews nest on the company record. You still pay one `review` event per review collected.

### Output example

Each dataset item is one company:

```json
{
    "companyId": "597650820000ff0005a75542",
    "name": "Red Tuna Shirt Club",
    "identifyingName": "redtunashirtclub.com",
    "url": "https://www.trustpilot.com/review/redtunashirtclub.com",
    "website": "https://redtunashirtclub.com",
    "stars": 5.0,
    "trustScore": 4.9,
    "numberOfReviews": 3467,
    "country": "US",
    "isVerified": true,
    "isClaimed": true,
    "source": "search",
    "searchQuery": "Clothing store in United States"
}
```

### How much does it cost to scrape Trustpilot?

The Actor uses pay-per-event pricing plus a small Actor-start event ($0.00005 per start, scaled by memory):

- **$1.00 / 1,000 companies** — a `dataset-item` event for every company written to the dataset.
- **$1.50 / 1,000 company details** — a `company-details` event when **Scrape company details** is enabled.
- **$1.50 / 1,000 reviews** — a `review` event for each review when **Scrape company reviews** is enabled.

A listing-only run of 1,000 companies costs **$1.00**. Adding details on those companies costs **$2.50**. Five reviews on each of 1,000 companies would add **$7.50** in review events. Volume discounts on Apify paid plans reduce the per-1,000 rate (for example **$0.97 per 1,000 companies** and **$1.20 per 1,000 details or reviews** at the Gold plan). Compute units consumed are deducted from your Apify plan.

### Reliability and responsible use

- **Proxy requirement** — Residential proxies are recommended. The default input uses the Apify RESIDENTIAL group.
- **Conditional fields** — Email, phone, verification, activity, and reviews appear only when the matching toggle is enabled.
- **Public listings** — The Actor collects publicly visible Trustpilot company and review data.
- **Responsible use** — Only use the data in ways that comply with Trustpilot terms and applicable law.

### Frequently asked questions

#### Can I scrape Trustpilot companies by search or category?

Yes. Use `searchQueries` such as `dog trainer`, `categoryIds` such as `clothing_store`, or paste Trustpilot URLs. Set `country` to scope the results.

#### Can I schedule Trustpilot Company Scraper to run automatically?

Yes. Use the **Scheduler** tab in Apify Console. Weekly suits category research; daily suits a short watchlist of company URLs.

#### What counts as one result?

Each company row is one `dataset-item` event ($1.00 per 1,000). Details and reviews are extra events only when those toggles are on. Reviews are billed per review, not per company.

#### Why are some fields empty?

Contact, verification, and similar-company fields are collected only when **Scrape company details** is enabled. Reviews appear only when **Scrape company reviews** is enabled.

#### How do I avoid duplicate records?

The Actor does not deduplicate across runs. Use `companyId` as the stable key. `maxItems` and `maxReviews` cap a run.

#### Do I need a proxy?

Residential proxies are recommended and are the default.

### Related Scraptivo automations

- [Tripadvisor Reviews Scraper](https://apify.com/scraptivo/tripadvisor-reviews-scraper) — reviews from Tripadvisor.
- [Yelp Scraper](https://apify.com/scraptivo/yelp-scraper) — business listings and reviews from Yelp.
- [Clutch.co Company Scraper](https://apify.com/scraptivo/clutch-scraper) — B2B company ratings and reviews from Clutch.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.

# Actor input Schema

## `searchQueries` (type: `array`):

Company search terms on Trustpilot (e.g. "clothing", "Clothing store in United States", "dog trainer"). Primary input for AI agents — no URL required.

## `country` (type: `string`):

ISO country code that scopes search and category results (e.g. US, GB, DE, FR). Default is United States.

## `categoryIds` (type: `array`):

Trustpilot category slugs or category page URLs (e.g. "cats\_dogs", "clothing\_store", "https://www.trustpilot.com/categories/cats\_dogs").

## `startUrls` (type: `array`):

Search, category, or company review URLs copied from trustpilot.com (e.g. https://www.trustpilot.com/search?query=clothing, https://www.trustpilot.com/categories/cats\_dogs, https://www.trustpilot.com/review/sportdecals.com).

## `maxItems` (type: `integer`):

Maximum number of companies to scrape (0 = unlimited)

## `scrapeCompanyDetails` (type: `boolean`):

Visit each company profile and extract claimed status, verification, contact, activity, and similar companies. Charged as company-details.

## `scrapeReviews` (type: `boolean`):

Fetch reviews for each company. Each review is charged as review. Use Max reviews per company to cap how many are collected.

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

Maximum number of reviews to scrape per company (0 = all reviews). Default is 5.

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

Apify proxy settings. Residential proxies are recommended.

## Actor input object example

```json
{
  "searchQueries": [
    "Clothing store in United States"
  ],
  "country": "US",
  "maxItems": 10,
  "scrapeCompanyDetails": false,
  "scrapeReviews": false,
  "maxReviews": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset of scraped Trustpilot companies

## `runStats` (type: `string`):

Record counts and run timestamps

# 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 = {
    "searchQueries": [
        "Clothing store in United States"
    ],
    "country": "US",
    "maxItems": 10,
    "scrapeCompanyDetails": false,
    "scrapeReviews": false,
    "maxReviews": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/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 = {
    "searchQueries": ["Clothing store in United States"],
    "country": "US",
    "maxItems": 10,
    "scrapeCompanyDetails": False,
    "scrapeReviews": False,
    "maxReviews": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scraptivo/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 '{
  "searchQueries": [
    "Clothing store in United States"
  ],
  "country": "US",
  "maxItems": 10,
  "scrapeCompanyDetails": false,
  "scrapeReviews": false,
  "maxReviews": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scraptivo/trustpilot-scraper --silent --output-dataset

```

## MCP server setup

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