Skip to content

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.

Published
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
In this article
  1. What data you can get from Trustpilot
  2. How to scrape Trustpilot reviews without code
  3. How to scrape Trustpilot reviews with the API
  4. With an AI agent (MCP)
  5. A real run: BankFive's newest reviews
  6. What it costs
  7. What to watch out for
  8. Is it legal to scrape Trustpilot reviews?
  9. Why Scrape.ly for Trustpilot reviews
  10. FAQ
  11. Can you scrape Trustpilot reviews for free?
  12. How do I scrape all reviews of a company on Trustpilot?
  13. Can I look up a company by brand name?
  14. How do I get only new Trustpilot reviews every day?
  15. Does the scraper collect reviewer emails?
  16. Can I scrape Trustpilot reviews with Python?

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 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 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
}
  1. Click Start. Our run finished in 24 seconds, most of it a browser check Trustpilot asks for.
  2. 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 preset shows balanced sampling on a big company.

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 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 page shows the same Actor as a ready-made API, and the Python client 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 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 —
Text
2026-10-26T14:30:20.564Z [Scrapely] Container started (setup 1.1 s)
2026-10-26T14:30:21.855Z [scrapely.proxy_configuration] INFO  Platform proxy access check succeeded.
2026-10-26T14:30:22.414Z [scrapely.actor] INFO  The public page asked for a browser check. Opening a browser session.
2026-10-26T14:30:43.430Z [scrapely.actor] INFO  Saved 5 reviews. Pages over HTTP: 0, in the browser: 1, browser checks passed: 1.
2026-10-26T14:30:43.430Z [scrapely.actor] INFO  [Status message]: Saved 5 reviews from 1 companies.
2026-10-26T14: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 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.

The Actor reads only the public review list that any visitor sees, without logging in. Trustpilot's own 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 guide shows the full workflow.
  • One platform for every review site. The same token runs Google Maps reviews, 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.

  • trustpilot
  • reviews
  • reputation monitoring
  • voice of customer
  • python
  • api

About the author

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.

//Keep reading\\

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.

No credit card. No setup calls.