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
- Open the Trustpilot Reviews Scraper in the Scrape.ly Store.
- Pick the Reviews with company details, 5 reviews preset. It fills in this input:
{
"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
}- Click Start. Our run finished in 24 seconds, most of it a browser check Trustpilot asks for.
- 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 aswww.bankfive.com, or a bare name. One company per entry.searchTerms: brand names, when you don't know the domain. AddstrictNameMatchto require a matching name or domain.maxReviews: reviews per company (default 10).sortByandsampling: newest or most relevant;balancedgives 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:
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:
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):
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:
{
"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 | — |
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=falseWhat the five rows and the company profile show:
- The profile in one row.
companycarried 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.publishedDateminuspublishedDateis 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
experiencedDatewhen 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
searchTermswithstrictNameMatchwhen 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.
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 (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.




