---
title: "How to Scrape Trustpilot Reviews | Scrape.ly"
description: "Scrape Trustpilot reviews for any company: stars, text, dates, verification and company replies, with filters. A real run, its cost, and API and MCP code."
url: https://scrape.ly/blog/scrape-trustpilot-reviews
markdown: https://scrape.ly/blog/scrape-trustpilot-reviews.md
---

[Tutorials](https://scrape.ly/blog/category/tutorials.md)

# How to Scrape Trustpilot Reviews: Ratings, Text and Company Replies

Scrape Trustpilot reviews for any company by domain or brand name: stars, title, text, country, verification, dates and the company's reply. No-code steps, curl, Python, Node.js and MCP, plus a real run from 26 October 2026 and its exact cost.

[Corner Ledger Actor publisher on the Scrape.ly Store](https://scrape.ly/blog/author/cornerledger.md)

- Published

  Oct 26, 2026

- Reading time

  8 min read

![Pixel-art robot with an orange >\_ on its terminal head pulls a review card with five green stars off a cork board topped with the green Trustpilot star, where another such card is pinned](https://scrape.ly/media/scrape-trustpilot-reviews.png?w=1080)

To scrape Trustpilot reviews, give a ready-made Actor a company's Trustpilot URL, its domain or just its brand name, and it returns one row per review: stars, title, text, reviewer country, verification, dates and the company's reply. On Scrape.ly that's a preset and one click, or a single API call, with no Trustpilot login and no API key from Trustpilot.

This guide covers the fields you get, the no-code steps, the same job in curl, Python, Node.js and through an AI agent, and a real run from 26 October 2026: the five newest reviews of the bank BankFive with its company profile, plus the log and the exact cost.

## What data you can get from Trustpilot

The [Trustpilot Reviews Scraper](https://scrape.ly/store/cornerledger/trustpilot-scraper.md) returns one row per review:

| Field                                                        | What it holds                                                                                                          |
| ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `id`, `url`                                                  | Review ID and permanent link                                                                                           |
| `rating`, `title`, `text`, `language`                        | Stars (1–5), headline, body and language                                                                               |
| `isVerified`, `verificationLevel`, `source`, `labels`        | Whether Trustpilot verified the review, and how it was collected                                                       |
| `reviewerName`, `reviewerCountry`, `reviewerNumberOfReviews` | The reviewer's display name, country and review count                                                                  |
| `publishedDate`, `experiencedDate`, `updatedDate`            | When it was posted, when the experience happened, later edits                                                          |
| `reply`                                                      | The company's reply with `text` and `publishedDate`, or `null`                                                         |
| `likes`                                                      | Likes on the review                                                                                                    |
| `businessName`, `businessUrl`, `businessUnitId`              | The company reviewed                                                                                                   |
| `company`                                                    | The public company profile: TrustScore, stars, review total, categories, claimed status (with `includeCompanyDetails`) |

Turn on `includeStats` to add the star distribution and per-language counts from the company page.

## How to scrape Trustpilot reviews without code

1. Open the Trustpilot Reviews Scraper in the Scrape.ly Store.
2. Pick the [Reviews with company details, 5 reviews](https://scrape.ly/store/cornerledger/trustpilot-scraper/presets/company-details.md) preset. It fills in this input:

```json
{
  "startUrls": ["https://www.trustpilot.com/review/www.bankfive.com"],
  "maxReviews": 5,
  "sortBy": "recent",
  "sampling": "recent",
  "scrapeAllReviews": true,
  "filterDateRange": "all",
  "filterVerifiedOnly": false,
  "filterRepliesOnly": false,
  "strictNameMatch": false,
  "includeCompanyDetails": true,
  "includeStats": false
}
```

3. Click **Start**. Our run finished in 24 seconds, most of it a browser check Trustpilot asks for.
4. Open the dataset and export it as JSON, CSV or Excel.

The input fields that matter most:

- `startUrls`: a Trustpilot review URL, a domain such as `www.bankfive.com`, or a bare name. One company per entry.
- `searchTerms`: brand names, when you don't know the domain. Add `strictNameMatch` to require a matching name or domain.
- `maxReviews`: reviews per company (default 10).
- `sortBy` and `sampling`: newest or most relevant; `balanced` gives each star rating an equal share of the limit.
- `filterStars`, `filterLanguages`, `filterCountries`, `filterVerifiedOnly`, `filterRepliesOnly`: keep only the reviews you care about.
- `filterDateRange`, `startDate`, `lastDays`: keep a scheduled run incremental.

The [Amazon reviews from the last 30 days](https://scrape.ly/store/cornerledger/trustpilot-scraper/presets/balanced-last30days.md) preset shows balanced sampling on a big company.

Scrape.ly Store Trustpilot Reviews Scraper Any company's public Trustpilot reviews by URL, domain or brand name: stars, text, dates, verification and the company reply, with star, language, country and date filters.

[Try it free](https://scrape.ly/store/cornerledger/trustpilot-scraper.md) [Browse the Store](https://scrape.ly/store.md)

## How to scrape Trustpilot reviews with the API

Create a token under **Settings → API & Integrations** in the dashboard and store it as `SCRAPELY_TOKEN`. A one-page run takes about 15 to 30 seconds, inside the synchronous endpoint's 45-second wait:

```shell
curl -X POST "https://api.scrape.ly/v2/actors/cornerledger~trustpilot-scraper/run-sync-get-dataset-items"
  -H "Authorization: Bearer $SCRAPELY_TOKEN"
  -H "Content-Type: application/json"
  -d '{"startUrls": ["https://www.trustpilot.com/review/www.bankfive.com"], "maxReviews": 5, "sortBy": "recent", "includeCompanyDetails": true}'
```

For 200 reviews or several companies, start the run asynchronously so a `408` timeout can't tempt you into starting a second run: `POST /v2/actors/cornerledger~trustpilot-scraper/runs`, then poll `/v2/actor-runs/RUN_ID?waitForFinish=60` until `SUCCEEDED`, and read `/v2/actor-runs/RUN_ID/dataset/items?format=csv`. The [API docs](https://scrape.ly/docs/api-actors.md) show the full flow.

In Python (`pip install scrapely-client-python`), this support-triage script pulls the 1- and 2-star reviews of the last 30 days and lists the ones the company hasn't answered yet:

```python
import os
from decimal import Decimal

from scrapely_client import ScrapelyClient

client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")

run = client.actor("cornerledger/trustpilot-scraper").call(
    run_input={
        "startUrls": ["www.bankfive.com"],
        "maxReviews": 50,
        "filterStars": ["1", "2"],
        "lastDays": 30,
    },
    max_total_charge_usd=Decimal("0.10"),
)
for r in client.dataset(run.default_dataset_id).iterate_items():
    if r["reply"] is None:
        print(r["publishedDate"][:10], r["rating"], r["title"], r["url"])
```

In JavaScript or Node.js (`npm install scrapely-client`):

```javascript
import { ScrapelyClient } from 'scrapely-client';

const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });

const run = await client.actor('cornerledger/trustpilot-scraper').call({
  searchTerms: ['BankFive'],
  maxReviews: 20,
  sampling: 'balanced',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items.map((r) => r.rating));
```

The [Trustpilot API](https://scrape.ly/api/trustpilot-api.md) page shows the same Actor as a ready-made API, and the [Python client](https://scrape.ly/docs/client-python.md) docs cover paging through large datasets.

### With an AI agent (MCP)

Scrape.ly runs a hosted MCP server at `https://mcp.scrape.ly`. In Cursor, add it to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "scrapely": {
      "url": "https://mcp.scrape.ly",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}
```

In Claude Code, run `claude mcp add --transport http scrapely https://mcp.scrape.ly`, then `/mcp` to sign in with OAuth. Ask: "Use scrapely to get the 50 newest Trustpilot reviews of www\.bankfive.com and group the complaints by topic, with how many got a company reply." The [MCP docs](https://scrape.ly/docs/mcp.md) list ChatGPT, VS Code, Windsurf and the other clients.

## A real run: BankFive's newest reviews

We ran the preset on 26 October 2026. It saved 5 reviews in 24.3 seconds. Reviewers are private people, so we show them as `[reviewer 1]` to `[reviewer 5]`, and we replaced a bank employee's first name in one title with `[employee]`:

| Reviewer      | Stars | Title                                       | Country | Verified | Published  | Company reply |
| ------------- | ----- | ------------------------------------------- | ------- | -------- | ---------- | ------------- |
| \[reviewer 1] | 5     | \[employee] was in every way possible GREAT | US      | yes      | 2026-10-23 | —             |
| \[reviewer 2] | 5     | Excellent people and services               | US      | yes      | 2026-10-23 | —             |
| \[reviewer 3] | 2     | Customer services wasn't helpful nor…       | US      | yes      | 2026-10-22 | 2026-10-23    |
| \[reviewer 4] | 5     | Very helpful with what I needed             | US      | yes      | 2026-10-22 | —             |
| \[reviewer 5] | 5     | Great customer service at the Dartmouth…    | US      | yes      | 2026-10-22 | —             |

```plaintext
20261026T14:30:20.564Z [Scrapely] Container started (setup 1.1 s)
20261026T14:30:21.855Z [scrapely.proxy_configuration] INFO  Platform proxy access check succeeded.
20261026T14:30:22.414Z [scrapely.actor] INFO  The public page asked for a browser check. Opening a browser session.
20261026T14:30:43.430Z [scrapely.actor] INFO  Saved 5 reviews. Pages over HTTP: 0, in the browser: 1, browser checks passed: 1.
20261026T14:30:43.430Z [scrapely.actor] INFO  [Status message]: Saved 5 reviews from 1 companies.
20261026T14:30:44.099Z [Scrapely] Container state: status=exited exitCode=0 oomKilled=false
```

What the five rows and the company profile show:

- **The profile in one row.** `company` carried BankFive's TrustScore of 4.7 (4.5 stars), 5,977 reviews in total, its primary category (Bank) and the fact that the company has claimed its profile.
- **Every review was invited and verified.** All five came through Trustpilot's invitation flow (`source: InvitationApi`) and were marked verified. That matters when you compare companies: a profile that invites every customer gets a different mix than one that doesn't.
- **Replies are fast and targeted.** The only negative review (2 stars, published 22 October at 23:08 UTC) got a company reply 22 hours later. The four 5-star reviews got none. `reply.publishedDate` minus `publishedDate` is a response-time metric you can track per company.
- **Experience date isn't publish date.** The experiences happened 3 to 8 days before the reviews went live. Use `experiencedDate` when you match reviews to incidents, releases or branch visits.
- **Reviewers are mostly occasional.** Three of five had written one or two Trustpilot reviews in total (`reviewerNumberOfReviews`).

## What it costs

The Actor has two events, with platform usage (compute, proxy and the browser check) included. Prices checked on the Store page on 26 October 2026:

- **Run start:** $0.02, once per run. It covers the browser check Trustpilot asks for.
- **Review:** $0.0007 per review saved ($0.70 per 1,000).

**Our run:** $0.02 + 5 × $0.0007 = $0.0235 at list price. Our account was billed $0.0188 after its plan's Store discount.

**At scale:** 200 reviews of one company cost $0.02 + 200 × $0.0007 = $0.16. A balanced sample of 1,000 reviews costs $0.72. Ten competitors with 200 reviews each in one run cost $0.02 + 2,000 × $0.0007 = $1.42.

## What to watch out for

- **200 per list.** Trustpilot asks visitors for a login after page 10 of a review list, so one list gives at most 200 reviews (20 per page). Balanced sampling reads each star rating as its own list, up to 1,000 per company, and each star or language filter gets its own 200.
- **Browser check time.** The first page of a run takes 15 to 30 seconds because of the check; later pages are read over plain HTTP in about 3 to 5 seconds each. Batch companies into one run rather than many tiny runs.
- **Counts differ from the profile.** The profile total includes reviews the public list doesn't return. The Actor saves what's on the public list.
- **Country filter runs after the page is read**, so it can return fewer rows than `maxReviews`.
- **Unknown domain, no rows.** A domain Trustpilot doesn't know saves nothing, and the run still succeeds. Use `searchTerms` with `strictNameMatch` when you're unsure of the domain.
- **Names in text.** Reviews and replies often name staff or the reviewer ("Hi" plus a first name). If you publish or share excerpts, remove names first, as we did above.

Trustpilot also has official APIs: its [developer docs](https://developers.trustpilot.com/authentication) say "You can access public APIs with only your API key (Client ID)". If you have a key and you only need companies' public reviews by business unit ID, that's an option; the Actor needs no Trustpilot key and adds brand-name lookup, balanced sampling and filters in one input.

## Is it legal to scrape Trustpilot reviews?

The Actor reads only the public review list that any visitor sees, without logging in. Trustpilot's own [Terms of Use for consumers](https://legal.trustpilot.com/for-reviewers/terms-of-use-for-consumers) (version 8, read on 26 October 2026) say: "You must not carry out in any way (including facilitating, permitting or authorising) any text mining, data mining or web scraping of our platform for any purpose without our express permission." Whether and how those terms bind you depends on your jurisdiction and your use.

Reviews are personal data: a display name, a country and a review history identify a person, so the GDPR and similar laws apply once you store them. Collect only the fields you need, pseudonymise reviewers in anything you publish, and don't republish full review text. This is not legal advice; for a commercial project, ask a lawyer about your case.

## Why Scrape.ly for Trustpilot reviews

- **The browser check is handled.** The Actor opens a browser session when Trustpilot asks for one and switches to plain HTTP for later pages, so you pay $0.02 per run for it instead of building it.
- **Past the 200 ceiling.** Balanced sampling and per-filter lists get you up to 1,000 reviews per company without a login.
- **Monitoring-ready.** `lastDays`, `filterRepliesOnly`, star filters and schedules turn it into a daily feed for Slack, Sheets or your warehouse. Our [review monitoring](https://scrape.ly/blog/review-monitoring.md) guide shows the full workflow.
- **One platform for every review site.** The same token runs [Google Maps reviews](https://scrape.ly/blog/scrape-google-maps-reviews.md), Yelp, Tripadvisor and Amazon reviews, and the hosted MCP server puts all of them in front of your AI agent.

## FAQ

### Can you scrape Trustpilot reviews for free?

Yes, for small jobs. The Free plan includes $5 of usage credit every month, no credit card needed. At list price that covers about 30 runs of 200 reviews ($0.16 each).

### How do I scrape all reviews of a company on Trustpilot?

Use `sampling: "balanced"` with a high `maxReviews` to read each star rating as its own list (up to 1,000 per company), or run separate star or language filters, each worth up to 200 reviews. The profile total can still be higher than what the public lists return.

### Can I look up a company by brand name?

Yes. Put the brand in `searchTerms` and the Actor resolves it on Trustpilot's public search page. Turn on `strictNameMatch` to avoid a similarly named company.

### How do I get only new Trustpilot reviews every day?

Set `sortBy: "recent"` and `lastDays: 1` (or `startDate`), save the input and schedule it daily. Each run then saves only the reviews published since the cutoff.

### Does the scraper collect reviewer emails?

No. It collects what the public page shows: display name, country and review count. There's no contact-email lookup.

### Can I scrape Trustpilot reviews with Python?

Yes. Install `scrapely-client-python` and call `cornerledger/trustpilot-scraper`, as in the triage script above. The scraping runs in the cloud, so your script needs no browser.

Scrape.ly Store Start with the BankFive preset Run the BankFive preset as-is or paste your own companies. Stars, text, dates, verification and company replies at $0.70 per 1,000 reviews plus $0.02 per run.

[Try it free](https://scrape.ly/store/cornerledger/trustpilot-scraper.md) [Browse the Store](https://scrape.ly/store.md)

About the author

[Corner Ledger](https://scrape.ly/blog/author/cornerledger.md) Actor publisher on the Scrape.ly Store

The businesses on every corner and in every register: map listings, local directories, company registries and customer reviews. For sales teams and market researchers. A Scrapely studio.

- [Website](https://scrape.ly/users/cornerledger.md)

Keep reading

## More in Tutorials

- [![Pixel-art robot with an orange >\_ on its terminal head pulls a chart slip with a purple rising line out of a monitor showing the purple Yahoo Finance icon beside ticker rows, above a rising candlestick chart, and drops it into a crate](https://scrape.ly/media/scrape-yahoo-finance.png?w=750)](https://scrape.ly/blog/scrape-yahoo-finance.md)
  ### [How to Scrape Yahoo Finance: Quotes, Financials, History and Options](https://scrape.ly/blog/scrape-yahoo-finance.md)
  [Scrape Yahoo Finance for any stock, ETF, crypto pair or index and get one JSON record per ticker: live quote, profile, price history, financial statements, dividends, analyst ratings, holders, options and earnings dates. A real three-ticker run, its cost and code.](https://scrape.ly/blog/scrape-yahoo-finance.md)
- [![Pixel-art robot with an orange >\_ on its terminal head pulls a company review card with a briefcase and five gold stars out of an office building with lit windows, two glass doors and a potted plant, and drops it into a crate of job cards](https://scrape.ly/media/scrape-glassdoor.png?w=750)](https://scrape.ly/blog/scrape-glassdoor.md)
  ### [How to Scrape Glassdoor Jobs and Reviews](https://scrape.ly/blog/scrape-glassdoor.md)
  [Scrape Glassdoor job listings with pay ranges and company ratings, and employee reviews with every sub-rating, without logging in. No-code steps, curl, Python, Node.js and MCP, plus two real runs from 26 October 2026 and their exact cost.](https://scrape.ly/blog/scrape-glassdoor.md)
- [![Pixel-art robot with an orange >\_ on its terminal head pulls a company card out of an office tower with the blue LinkedIn logo on its sign and drops it into a crate](https://scrape.ly/media/scrape-linkedin.png?w=750)](https://scrape.ly/blog/scrape-linkedin.md)
  ### [How to Scrape LinkedIn: Companies, Jobs, Posts and Ads (2026)](https://scrape.ly/blog/scrape-linkedin.md)
  [Scrape LinkedIn company pages, job ads, posts and ads with ready-made scrapers that need no LinkedIn login. A real run on Google, Notion and Stripe with its exact cost, code for the API and AI agents, and what hiQ v. LinkedIn means for you.](https://scrape.ly/blog/scrape-linkedin.md)

## The internet is full of data. Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

[Get Started Free](https://my.scrape.ly/register) [Chat with Support](mailto:hello@scrape.ly?subject=Question%20about%20Scrape.ly\&body=Hi%2C%20I%20have%20a%20question%20about%20Scrape.ly.)

No credit card. No setup calls.
