Trustpilot Review Scraper — Unlimited Reviews, Bypass 200 Limit
Pricing
Pay per usage
Trustpilot Review Scraper — Unlimited Reviews, Bypass 200 Limit
Trustpilot reviews → CSV/JSON/Excel in 2 min. 950+ production runs, bypasses 200-review limit. 9 fields/review: stars, headline, text, author, date, language, company, URL, timestamp. BI, competitor research, lead enrichment. spinov001@gmail.com · blog.spinov.online · t.me/scraping_ai
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Alex
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Trustpilot Review Scraper
Pull every public review from any Trustpilot company page — past the 200-result UI cap — straight into CSV or JSON. No API waitlist, no auth, no headless browser.
949 lifetime production runs on this exact actor as of 2026-04-29.
What you get per review
Every record returned is a flat JSON object with these 9 fields (verified against src/main.js Actor.pushData()):
| Field | Example |
|---|---|
companyName | Booking.com |
companyUrl | https://www.trustpilot.com/review/booking.com |
title | Review headline (may be empty string if missing in JSON-LD) |
text | Full review body, plain text (may be empty string if missing) |
stars | 1 – 5 integer, or null when reviewRating.ratingValue is non-numeric |
author | Reviewer display name (may be empty string) |
datePublished | ISO 8601 (2026-03-12T08:14:00Z) — or null if absent |
inLanguage | en-US, de-DE, etc. — or null |
scrapedAt | ISO 8601 capture timestamp |
CSV output is the same fields as a header row. No nested arrays — opens cleanly in Excel, Google Sheets, pandas, dbt seeds.
Use it for
- Competitor analysis — pull a rival's 1-star reviews and tag them by complaint category
- Sentiment monitoring — push the
textcolumn into your LLM of choice; track shifts week-over-week - Lead enrichment — companies with rising 1-star volume often hire support / CX consultants
- Market research — feed
inLanguage+starsinto a regional satisfaction dashboard - Reputation early-warning — schedule a daily run, diff the result, alert on new negative reviews
Quick start
- Click Try for free above.
- Paste a Trustpilot company URL into
companyUrls(e.g.https://www.trustpilot.com/review/booking.com). - Optionally set
maxReviewsPerCompany(default100, max1000perinput_schema). - Run. Download CSV/JSON from Storage → Dataset.
For programmatic use (input keys match .actor/input_schema.json exactly):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("knotless_cadence/trustpilot-review-scraper").call(run_input={"companyUrls": ["https://www.trustpilot.com/review/booking.com"],"maxReviewsPerCompany": 1000,"filterByStars": 0,"sortBy": "recency",})for review in client.dataset(run["defaultDatasetId"]).iterate_items():print(review["stars"], review["title"])
Inputs:
companyUrls— array of Trustpilot review URLs (or bare domains; the actor normalises tohttps://www.trustpilot.com/review/<domain>)searchQueries— array of search terms (auto-discovers companies + scrapes top 10 per query — hard.slice(0, 10)cap)maxReviewsPerCompany— integer cap per company URL (default100, schema max1000). Multi-URL runs multiply: 5 URLs × 100 = up to 500 reviews.filterByStars—0= all,1–5= only that rating. Records outside the filter are dropped entirely (not emitted with partial schema).sortBy—recency(default) orrelevance. The actor appends?sort=${sortBy}directly to Trustpilot URLs.
How the 200-cap bypass works
Trustpilot's public UI paginates reviews; older entries are not always reachable from the default sort view. This actor walks ?page=N directly using CheerioCrawler (HTTP only — no headless browser, no captcha layer), parses the JSON-LD Review graph that Trustpilot embeds in every page, and pushes each review as a flat row. Concurrency is capped at maxConcurrency: 5 and per-crawl requests at maxRequestsPerCrawl: 1000.
Honest limitations (verified against src/main.js)
- No Apify Proxy is wired.
CheerioCrawleris constructed withoutproxyConfiguration. Requests originate from Apify's default IP pool and can be rate-limited at high concurrency. For proxy-routed runs at scale, request a custom build via the contact below. - No headless rendering. Currently Trustpilot embeds the
ReviewJSON-LD graph server-side — Cheerio reads it directly. If Trustpilot moves to client-only rendering, this actor will return empty results. Disclosure-honest: this is a fragility, not a guarantee. sortByis appended as?sort=recency/?sort=relevance. Trustpilot's UI may use different sort tokens internally; verify your sort actually changes ordering before relying on it for time-series work.- Pagination terminates on the first empty page. Transient server
[](network blip, brief block) on page N silently ends pagination for that company. No retry on the pagination boundary; missing tail-pages are not re-attempted within the same run. - Crawlee internal retries: 3 per request for transient failures (default). Persistent blocks return a silent zero-record run, not an exception.
- Search dedup is exact-URL match. Case differences or trailing-slash variants in href attributes are treated as different companies; you may see one extra duplicate per search.
maxReviewsPerCompanyis per-URL. Whole-run total =len(companyUrls) × maxReviewsPerCompanyplus up tolen(searchQueries) × 10 × maxReviewsPerCompanyfrom auto-discovered companies. Budget accordingly.filterByStarshalves the dataset effective yield when you set a single rating — pagination still consumes the fullmaxReviewsPerCompanybudget even though most rows are dropped. To guarantee N records of a specific rating, raise the cap.- Schema fields can be empty strings or null (see table above). Downstream code should handle
text == ''andstars is Nonerather than asserting populated values.
Need something custom?
If your use case is broader than "give me Trustpilot reviews" — multi-source review aggregation, scheduled deltas piped to your DB, data cleaned and joined to your CRM — we build that as a one-shot package.
| Tier | Price | Includes |
|---|---|---|
| Pilot | $97 | 1 custom actor or modification, 7-day support |
| Standard | $297 | Custom actor + Slack/email alerts on results, 30-day support |
| Premium | $797 | Custom actor + dashboard + 90-day support + 1 modification round |
Email: spinov001@gmail.com
Blog (case studies + writeups): https://blog.spinov.online
Telegram channel (scraping & data engineering tips): https://t.me/scraping_ai
Pilot pricing while we grow our public portfolio. Most pilots delivered inside 48–72 hours.
Honest disclosure
- Public reviews only. We do not scrape private user data, accounts, or anything behind a login.
- Independent project — not affiliated with Trustpilot.
- This actor is maintained by the same author who runs
apify.com/knotless_cadence(78 actors, 31 public).