Trustpilot Reviews Scraper - TrustScore, Stars & Replies avatar

Trustpilot Reviews Scraper - TrustScore, Stars & Replies

Pricing

$0.49 / 1,000 reviews

Go to Apify Store
Trustpilot Reviews Scraper - TrustScore, Stars & Replies

Trustpilot Reviews Scraper - TrustScore, Stars & Replies

Trustpilot reviews by business URL or domain: rating, title, text, language, country, dates and the company's reply, plus TrustScore, review count and categories. Filter by language and stars. No login or cookies; reviewer names are never collected. Partial results are marked.

Pricing

$0.49 / 1,000 reviews

Rating

0.0

(0)

Developer

Lantern Lab

Lantern Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Categories

Share

Trustpilot Reviews Scraper

Give it Trustpilot business URLs or website domains and get the public reviews back: star rating, title, full text, language, the reviewer's country, publish and experience dates, verification label and the company's reply. Each business also gets its TrustScore, total review count, categories and the contact details it published on Trustpilot. Filter by language and star rating. No Trustpilot login, no cookies, no account - and no reviewer names.

Price: you pay per review collected. Business rows, status rows and the run summary are free, and so is a URL or domain that finds nothing.

Quick example

Input:

{
"businessUrls": ["https://www.trustpilot.com/review/www.bol.com"],
"domains": ["zalando.de"],
"maxReviewsPerBusiness": 100,
"languages": ["all"],
"stars": []
}

One review row (recordType: "review", text shortened):

{
"recordType": "review",
"reviewId": "6ad3165b6727fdb98dc1f8bd",
"reviewUrl": "https://www.trustpilot.com/reviews/6ad3165b6727fdb98dc1f8bd",
"businessName": "Bol",
"businessDomain": "www.bol.com",
"rating": 1,
"title": "About two years ago",
"text": "About two years ago, I bought a computer and sent it in for warranty service ...",
"language": "en",
"country": "NL",
"publishedAt": "2026-10-17T08:31:56.000Z",
"experiencedAt": "2026-10-17T00:00:00.000Z",
"updatedAt": null,
"isVerified": false,
"companyReply": {
"text": "Thank you for your review. We have sent you a request so that you can provide more information ...",
"publishedAt": "2026-10-19T13:30:12.000Z",
"updatedAt": null
},
"partial": false,
"collectedAt": "2026-10-23T16:39:11.000Z"
}

One business row (recordType: "business", free):

{
"recordType": "business",
"businessId": "47783f3e0000640005020bb9",
"name": "Bol",
"domain": "www.bol.com",
"url": "https://www.trustpilot.com/review/www.bol.com",
"trustScore": 2.6,
"reviewCount": 48890,
"categories": ["Software Company"],
"country": "NL",
"contact": { "phone": "030 - 310 4999", "city": "Utrecht", "country": "NL" },
"reviewsAvailable": 43585,
"reviewsReturned": 100,
"partial": false,
"statusText": "Collected 100 review(s) of 43585 matching."
}

Every business URL and domain also gets one free input_status row (found, not_found, invalid_input or partial), and the last row is the RUN_SUMMARY.

What you get

RowFields
review (charged)reviewId, reviewUrl, rating (1-5), title, text, language, country, publishedAt, experiencedAt, updatedAt, isVerified, source, likes, companyReply (text, publishedAt, updatedAt, or null), businessName, businessDomain, businessId, collectedAt
business (free)name, domain, url, websiteUrl, trustScore, stars, reviewCount, reviewsLast12Months, categories, primaryCategory, country, isClaimed, isClosed, contact (only what the business published), reviewsAvailable / reviewsRequested / reviewsReturned / reviewsCharged, partial, partialReason, statusText
input_status (free)input, inputType, outcome, businessDomain, partial, partialReason, statusText

A review is written and charged once per run, even when two inputs reach the same business.

Input

FieldDefaultMeaning
businessUrls-Trustpilot review pages, on any country site (de.trustpilot.com, fr.trustpilot.com, ...).
domains-Website domains such as www.amazon.com or zalando.de; Trustpilot's own redirect is followed.
maxReviewsPerBusiness100Newest first. 0 = business profile only.
languagesallLanguage codes (en, de, fr, ...), one pass each.
starsallAny of 1-5.
maxUpstreamRequestsderivedHard ceiling on requests to Trustpilot; derived from the input when empty.
proxyConfigurationApify datacenterResidential also works and uses more paid traffic.

Limits

  • 200 reviews per filter. Trustpilot shows a logged-out visitor 10 pages of 20 reviews for one combination of language and stars; page 11 asks for a login. This Actor never logs in. Above 200 reviews it collects one star rating at a time, so it reaches up to 1,000 reviews per language (200 per star). When more match than that, the business row says partialReason: "login_wall" - narrow languages or stars to reach others.
  • Language default. On trustpilot.com, Trustpilot itself lists only English reviews; this Actor asks for every language unless you set languages.
  • Reviewer privacy. The reviewer appears only as a country. Names, profile pictures and profile links are never collected. Review text and company replies are written as published.
  • A browser is used. Trustpilot answers plain HTTP clients with a browser check, so each Trustpilot site is opened once in headless Chrome and the review pages are then read as the site's own JSON. Give a run 2 GB of memory: 1 GB works but is about half as fast.
  • Partial is never empty. partial: true with a partialReason (login_wall, upstream_request_cap, charge_limit_reached, blocked, upstream_error, not_collected) means the result is incomplete, never that there is nothing to collect. A business with no matching review has reviewsAvailable: 0 and partial: false.