Trustpilot Reviews Scraper - Verified Filters & Replies avatar

Trustpilot Reviews Scraper - Verified Filters & Replies

Pricing

from $1.50 / 1,000 review records

Go to Apify Store
Trustpilot Reviews Scraper - Verified Filters & Replies

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

DIOPSIDE AI

Maintained by Community

Actor 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

FieldTypeDefaultDescription
companyDomainsarray of strings["apify.com"]Company domains as they appear on Trustpilot.
startUrlsarray[]Trustpilot profile URLs; merged with companyDomains.
maxReviewsPerCompanyinteger200Reviews to return per company.
starsarray of "1""5"[] (all)Only return these star ratings.
languagestring"all"ISO review language, e.g. en, de. all returns every language.
dateRangeenum"any"last30days, last3months, last6months, last12months.
sortByenum"recency"recency or relevance.
verifiedOnlybooleanfalseOnly reviews Trustpilot marks verified.
repliesOnlybooleanfalseOnly reviews the company replied to.
includeCompanyProfilebooleantrueAlso emit one company record per profile.
deepCoveragebooleantrueSlice by star rating to get past the 200-review public limit.
proxyConfigurationobjectApify proxyEscalate 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

InputRecordsTime
1 company, 60 reviews61~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; deepCoverage slices 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.
  • relevance sorting 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.