Trustpilot Reviews Scraper - Verified Filters & Replies
Pricing
from $1.50 / 1,000 review records
Trustpilot Reviews Scraper - Verified Filters & Replies
Trustpilot profiles and reviews: ratings, full text, company replies, verification labels, reviewer country and language. Clears the AWS WAF challenge once per run with a real browser. Star/language/date filters are verified against what Trustpilot returned, so a dropped filter fails loudly.
Pricing
from $1.50 / 1,000 review records
Rating
0.0
(0)
Developer
DIOPSIDE AI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Share
Trustpilot Reviews Scraper
Company profiles and customer reviews from Trustpilot — ratings, full review text, company replies, verification labels, reviewer country and language — from any company profile, with star / language / date filters that are checked, not assumed.
Public profile pages only. No login, no personal contact data.
Why this one
Trustpilot changed twice in ways that quietly break most scrapers in this category. This actor is built around both.
1. Every page is behind an AWS WAF JavaScript challenge. Since September 2026 trustpilot.com
answers 403 with a "Verifying your connection" interstitial to any plain HTTP client. A Chrome TLS
fingerprint is not enough — curl_cffi impersonating Chrome, Chrome 124 and Safari 17 all get the
same 403. This actor launches a real browser once per run, clears the challenge in ~2 seconds,
and then reuses the resulting aws-waf-token for ordinary HTTP requests (the token stays valid for
days). You pay for one browser launch, not one per page — a 400-review run finishes in about 20
seconds.
2. ?page=1 silently returns the wrong reviews. Trustpilot serves the canonical profile page
from a CDN cache whenever page=1 appears in the query string, and that cached page ignores every
filter you asked for — while still answering 200 OK. Request 1-star reviews with page=1 and you
get back the default mix of 4- and 5-star reviews, with nothing in the response to tell you the
filter was dropped. This actor never emits page=1, and after every request it re-reads the filter
state Trustpilot echoes back. If a filter did not survive the round trip, the run fails loudly
instead of writing wrong data into your dataset.
Two more things that come out of that:
- Non-English reviews are included by default. Trustpilot's own pages default to English only —
on a profile with 741 reviews, 51 of them are invisible unless you override the language. This
actor defaults to
language: "all". - Coverage past 200 reviews. Trustpilot's public pagination stops at page 10 (200 reviews per filter combination); page 11 redirects to a login wall. Rather than pretend otherwise, the actor re-queries the company one star rating at a time — each rating has its own page window — and de-duplicates by review ID, reaching ~1,000 reviews per company without logging in. When a company still has more reviews than the public site will serve, the run says so in its status message rather than silently returning short.
vs other Trustpilot scrapers
The category leader, trustpilot-scraper-ppe (706 monthly users), is reliable (4% failed runs) —
we're not trying to underprice a healthy leader. A smaller alternative,
trustpilot-review-scraper, failed on 41% of its last 4,754 runs, which lines up with the
WAF challenge and the page=1 filter bug above: both are easy to get mostly working and easy
to get subtly wrong.
Input
| Field | Type | Default | Description |
|---|---|---|---|
companyDomains | array of strings | ["apify.com"] | Company domains as they appear on Trustpilot. |
startUrls | array | [] | Trustpilot profile URLs; merged with companyDomains. |
maxReviewsPerCompany | integer | 200 | Reviews to return per company. |
stars | array of "1"–"5" | [] (all) | Only return these star ratings. |
language | string | "all" | ISO review language, e.g. en, de. all returns every language. |
dateRange | enum | "any" | last30days, last3months, last6months, last12months. |
sortBy | enum | "recency" | recency or relevance. |
verifiedOnly | boolean | false | Only reviews Trustpilot marks verified. |
repliesOnly | boolean | false | Only reviews the company replied to. |
includeCompanyProfile | boolean | true | Also emit one company record per profile. |
deepCoverage | boolean | true | Slice by star rating to get past the 200-review public limit. |
proxyConfiguration | object | Apify proxy | Escalate to RESIDENTIAL if challenges start failing. |
{"companyDomains": ["apify.com"],"maxReviewsPerCompany": 200,"stars": ["1", "2"],"language": "all","dateRange": "last12months"}
Output
One record per review (record_type: "review"), plus one per company (record_type: "company")
when includeCompanyProfile is on.
{"record_type": "review","review_id": "6aad08bdde1d5fc31500cfe1","review_url": "https://www.trustpilot.com/reviews/6aad08bdde1d5fc31500cfe1","company_domain": "apify.com","company_name": "Apify","rating": 5,"title": "I use Apify a lot and I do not regret it at all","text": "I use Apify actors to scrape trending topics for my blog...","language": "en","experienced_date": "2026-08-02T00:00:00.000Z","published_date": "2026-09-18T11:47:41.000Z","likes": 0,"source": "BasicLink","is_verified": false,"verification_level": "invited","consumer_name": "Righteousness","consumer_country": "GB","consumer_review_count": 1,"reply_text": null,"reply_published_date": null,"scraped_at": "2026-09-18T12:20:00+00:00"}
The company record carries trust_score, number_of_reviews,
number_of_reviews_last_12_months, categories, country_code, is_claimed,
has_incentivised_reviews, consumer_alert and the contact details the business publishes on its
own profile.
Sizes and run time
| Input | Records | Time |
|---|---|---|
| 1 company, 60 reviews | 61 | ~10 s |
| 1 company, 200 reviews (one page window) | 201 | ~15 s |
| 1 company, 400 reviews (star-sliced) | 401 | ~20 s |
| 10 companies × 200 reviews | ~2,010 | ~3 min |
One browser launch per run (~2 s), then ~0.9 s per 20-review page.
Use cases
- Track TrustScore and review volume for your own brand and your competitors over time.
- Pull every 1- and 2-star review for a company and cluster the complaints.
- Monitor whether a business replies to negative reviews, and how fast.
- Compare sentiment across languages and countries for a multi-market brand.
- Feed review text into a summarisation or topic model.
Limits, stated plainly
- Trustpilot's public pages stop at 200 reviews per filter combination;
deepCoverageslices by star rating to reach roughly 1,000 per company. Past that there is no public route, and this actor will not log in to fake one. Runs that hit the ceiling say so in the status message. relevancesorting is Trustpilot's own ranking and is not stable between runs.- Reviewer display names and countries are whatever the reviewer chose to publish; no email, phone or other private data is collected.