Trustpilot Reviews & TrustScore Scraper avatar

Trustpilot Reviews & TrustScore Scraper

Pricing

from $0.18 / 1,000 reviews

Go to Apify Store
Trustpilot Reviews & TrustScore Scraper

Trustpilot Reviews & TrustScore Scraper

Give it domains such as monzo.com or Trustpilot URLs, in bulk. Get each review's rating, text, date and company reply, plus a free TrustScore summary. Filter by stars, language, date, keyword, topic or reviewer country. Reads past the 200-review limit without logging in. $0.25 per 1,000 reviews.

Pricing

from $0.18 / 1,000 reviews

Rating

0.0

(0)

Developer

Gautham Krishna

Gautham Krishna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Get Trustpilot reviews and each company's TrustScore as clean rows, for competitor analysis, customer research and reputation monitoring.

Use cases, each with a ready-to-run example:

It works for any business on any Trustpilot country site. Paste review page URLs or plain domains, set filters, and get one row per review plus one summary row per business.

You pay $0.25 per 1,000 reviews ($0.00025 each), and less on Apify Store discount tiers (Bronze, Silver, Gold), down to $0.175 per 1,000 on Gold. Company summary rows are free, and businesses that fail or have no Trustpilot page are never charged.

At a glance

TopicDetails
InputMany businesses per run, as Trustpilot review URLs from any country site or plain domains such as monzo.com. Filters: any mix of star ratings, language, date period (last 30 days up to last 12 months), verified only, replied only, keyword search, Trustpilot topics and reviewer countries. Newest first by default
OutputOne JSON row per review: rating, title, text, language, dates, verified flag and the company's reply. Plus one free company row per business with TrustScore and star distribution
Price$0.00025 per review ($0.25 per 1,000), or $0.225 per 1,000 on Bronze, $0.20 on Silver and $0.175 on Gold. No start fee. Company rows, unknown domains and failed fetches are free
DepthPast Trustpilot's 200-review page limit without logging in. Above 200 reviews per business the scraper reads narrower filters, and on small and mid-size companies it returns most of the history, back to 2007 on Amazon. See "Past the 200-review limit" for what to expect by company size
Tested56 real businesses with up to 100,000 reviews each: all 56 returned reviews, 95,165 in total, in one 58-minute run. 112 businesses at 100 reviews each: 110 returned reviews, the other 2 have no Trustpilot page, in 58 seconds

What you get

One company summary per business (free):

FieldWhat it holds
domain, name, urlTrustpilot's domain key, display name and review page
trustScore, starsTrustScore (for example 4.3) and the rounded star rating
totalReviews, reviewsLast12MonthsReview counts Trustpilot shows on the page
starDistributionReviews per star rating, {"1": 547, "2": 52, ...}
categories, primaryCategoryTrustpilot categories
isClaimed, claimedDateWhether the business claimed its profile, and when
country, websiteUrl, isClosedBusiness country, website, closed flag
replyPercentage, averageDaysToReplyHow the business answers negative reviews
reviewLanguagesReview count per language
matchingReviews, reviewsReturned, moreBehindLoginHow many reviews match your filters, how many you got, and whether Trustpilot hid the rest behind its login

One row per review (charged):

FieldWhat it holds
businessDomain, businessNameWhich business the review is about
reviewId, reviewUrlTrustpilot review ID and link
rating, title, text, languageThe review itself
reviewDate, experienceDate, updatedDateWhen it was published, the date of the experience, and the last edit
isVerified, source, likesVerified label, review source (for example Organic) and useful votes
replyText, replyDateThe company's reply, when there is one
reviewerCountry, reviewerReviewCountReviewer's country and how many reviews they have written

The scraper does not collect reviewer names, emails, phone numbers or business contact details.

Input

{
"businesses": [
"https://www.trustpilot.com/review/www.booking.com",
"https://de.trustpilot.com/review/www.zalando.de",
"monzo.com"
],
"maxReviewsPerBusiness": 500,
"stars": ["1", "2"],
"language": "all",
"datePeriod": "last12months",
"verifiedOnly": false,
"withRepliesOnly": false,
"keyword": "refund",
"topics": ["customer_service"],
"reviewerCountries": ["US", "GB"],
"sort": "recency"
}
InputWhat it does
businessesTrustpilot review URLs from any country site, website URLs or plain domains. booking.com finds www.booking.com on its own
maxReviewsPerBusinessStop after this many reviews per business
starsOnly these star ratings. Empty means all
languageall (default) or a code such as en, de, fr. Trustpilot's own site shows only English unless you change it
datePeriodany, last30days, last3months, last6months or last12months
verifiedOnlyOnly reviews with Trustpilot's verified label
withRepliesOnlyOnly reviews the company answered
keywordOnly reviews containing this word, through Trustpilot's own search. See below
topicsOnly reviews Trustpilot tagged with these topics. See below
reviewerCountriesOnly reviews from reviewers in these countries, as two-letter codes. See below
sortrecency (newest first) or relevance
splitToGetMoreGo past the 200-review page limit, see below. On by default
onlyNewSinceLastRunOff by default. See Monitoring below
publishedAfterEmpty by default. See Monitoring below

Monitoring: only new reviews and a date cutoff

Two optional inputs turn a scheduled run into a feed of new reviews. Both are off by default, and a run without them works exactly as before.

OptionWhat it does
onlyNewSinceLastRunReturns only reviews this scraper has not returned to you before for the same business and filters, and nothing older than the newest one it returned last time. The first run returns the usual results and remembers them
publishedAfterOnly reviews published on or after a date: 2026-10-01, 2026-10-01T12:00:00Z (UTC), or a relative value such as 7 days

With sort: "recency" the run stops at the first page that holds nothing new, so a daily run reads only the pages it needs. With other orders it still skips old reviews, but it reads further to find new ones. You pay only for the reviews returned. publishedAfter takes an exact date, where datePeriod only offers Trustpilot's fixed periods. The memory is a key-value store named trustpilot-reviews-scraper-monitor in your own Apify account, one record per business and filter set. Delete that store to start over. The free company row still comes back on every run, and its reviewsReturned counts only the new reviews.

Run it on a schedule

A daily run with onlyNewSinceLastRun: true turns the scraper into a review alert for the businesses you follow. The default sort: "recency" lets each run stop at the first page with nothing new. We ran the same 112 businesses on 15 Oct and again on 20 Oct. The 20 Oct run returned 3,564 reviews, and a script found none that the 15 Oct run had returned and none older than its newest review per business.

  1. Set your input with onlyNewSinceLastRun: true and click Save as a new task.
  2. On the task page, click Actions, then Schedule, and pick how often it runs. Apify's schedules guide covers cron times and time zones.
  3. On the task's Integrations tab, choose where each run's results go.
IntegrationWhat it does
SlackPosts a message to your channel when a run finishes
Google DriveSaves each run's results as a file in your Drive
WebhookSends the finished run, with its dataset ID, to your own URL
Make, Zapier, n8nAdds each new row to a Google Sheet, a CRM or a database

Each review has a stable reviewId, so a sheet or database can skip rows it already holds.

Keyword, topics and reviewer countries

FilterHow it works
keywordTrustpilot's own search. Whole words, not case-sensitive, and accents count (rücksendung is not rucksendung). Several words match any of them, and a phrase in double quotes matches exactly. Trustpilot marks matches with <em> tags, which the scraper removes, so title and text read as written
topicsTrustpilot's topic tags. Several topics match reviews that have all of them. IDs Trustpilot accepts: customer_service, delivery_service, product, order, refund, value_for_money, staff, price, quality, app, website, contact, payment, booking_process, location, delivery. Trustpilot silently ignores an ID it does not know, so the scraper checks, and a business where an ID was ignored returns a free invalid_input row naming it instead of unfiltered reviews
reviewerCountriesTrustpilot has no country filter, so the scraper reads reviews and keeps the ones from the countries you list, such as ["US", "GB"]. You pay only for the reviews kept. A business stops after 50 pages plus 10 pages for every 20 matching reviews, so a country with few reviewers ends quickly

In our tests, "keyword": "refund" on Amazon and Booking.com returned 80 reviews that all contain the word. "topics": ["refund", "payment"] matched 4,203 Booking.com reviews. "reviewerCountries": ["DE", "US"] on four companies returned 307 reviews, every one from Germany or the US.

Past the 200-review limit

Trustpilot shows visitors who are not logged in 10 pages of 20 reviews for each filter combination. Page 11 sends you to the login page. This scraper never logs in, and needs no account or cookie of yours.

Each narrower filter combination gets its own 200, so the scraper reads a business in stages.

  1. The plain list, then each star rating in each language. This runs whenever splitToGetMore is on, as before.
  2. When maxReviewsPerBusiness is above 200, it goes deeper inside each star and language: verified reviews, replied reviews, each of Trustpilot's 16 topics, then searches for words taken from the reviews it has already read.

A slice stops when it finds under 1 new review per request. With maxReviewsPerBusiness at 200 or less, nothing changes from before. Only-new monitoring runs stay on the fast newest-first path and never start stage 2.

How much of the history comes back depends on the company's size and on how many businesses share the run. Trustpilot answers Apify's servers at about 4 to 5 requests per second, so a run's timeout sets the budget. These are measured, as a share of the reviews Trustpilot lists for the company (matchingReviews):

Company, three in one run with the default 1-hour timeoutListed reviewsReturnedShareOldest returned
Allbirds (10 languages)2,6462,59798.1%2018-09-19
Chewy (English only, three quarters 5 stars)13,20811,64488.2%2011-09-14
Amazon (39 languages)46,85036,66878.3%2007-08-09

Amazon stopped at the cap of 6,000 page reads per business for the deeper stages, and Chewy where new reviews ran out at under 1 per request. The run took 51 minutes.

Company size, 56 businesses in one run with the default 1-hour timeoutBusinessesShare returned, median (range)
Up to 200 reviews10100% (100 to 100%)
200 to 1,0001299.6% (78 to 100%)
1,000 to 5,0001158% (20 to 99%)
5,000 to 20,0001420% (5 to 54%)
Over 20,000911% (2 to 24%)

A business whose first page keeps failing against Trustpilot's rate limit gets one more try after the others, and only then becomes a free error row. A few small companies returned slightly more than their listed count, because new reviews arrived after Trustpilot counted. They show as 100%.

So for full history of a big company, run it alone or with a few others, and raise the run timeout if you need more. On big companies expect part of the history, not all of it. The company row says how far it got. Compare reviewsReturned with matchingReviews, and moreBehindLogin: true means Trustpilot held more back. A message appears when the run's time, the business's share of it or the page cap ran out.

Two limits keep a run healthy. Every business gets its plain pages and star and language slices first, and only then do the deeper stages share the time that is left, equally, so one huge company cannot keep the others from starting. The run also watches its own timeout and stops reading shortly before it, so it ends as succeeded with the reviews it fetched saved, never as timed out. The status message then says "Time cap reached".

Reviews come grouped by filter rather than in one date order. Sort by reviewDate afterwards if you need a timeline.

Output example

This is real output from a test run.

A review row:

{
"type": "review",
"status": "ok",
"businessDomain": "wise.com",
"businessName": "Wise",
"reviewId": "6ac90d55aa6da2e8b4600dbe",
"rating": 5,
"title": "Easy banking with the App",
"text": "Easy banking with the App and on my PC/Laptop. No matter where you are, always very fast transaction times. I am very satisfied with Wise until now.",
"language": "en",
"reviewDate": "2026-10-09T17:50:45.000Z",
"experienceDate": "2026-10-01",
"updatedDate": null,
"isVerified": true,
"source": "BusinessGeneratedLink",
"likes": 0,
"replyText": "Hey there! \n\nKeeping your transfers quick and smooth across all your devices is what we're here for! Thanks for choosing us to handle your international payments.\n\nWise",
"replyDate": "2026-10-09T20:26:52.000Z",
"reviewerCountry": "BE",
"reviewerReviewCount": 6,
"reviewUrl": "https://www.trustpilot.com/reviews/6ac90d55aa6da2e8b4600dbe"
}

A review row from "keyword": "refund", with Trustpilot's <em> marks already removed:

{
"type": "review",
"status": "ok",
"businessDomain": "www.amazon.com",
"businessName": "Amazon",
"reviewId": "6ad11c24ce0460b5c09749f4",
"rating": 1,
"title": "Amazon is getting worse and worse",
"text": "Amazon is getting worse and worse. I can't get my refund I'm due, their deliveries are never here the day they're supposed to be, and their customer service is a joke. This is what I pay $145.00 a year for?????\nAmazon needs investigating.",
"language": "en",
"reviewDate": "2026-10-15T20:32:04.000Z",
"experienceDate": "2026-10-13",
"updatedDate": null,
"isVerified": false,
"source": "Organic",
"likes": 1,
"replyText": null,
"replyDate": null,
"reviewerCountry": "US",
"reviewerReviewCount": 9,
"reviewUrl": "https://www.trustpilot.com/reviews/6ad11c24ce0460b5c09749f4"
}

The company summary row for monzo.com (reviewLanguages shortened here, the real row lists all 39 languages):

{
"input": "monzo.com",
"type": "company",
"status": "ok",
"domain": "www.monzo.com",
"name": "Monzo",
"trustScore": 4.6,
"stars": 4.5,
"totalReviews": 73247,
"reviewsLast12Months": 14037,
"starDistribution": {
"1": 7379,
"2": 843,
"3": 1057,
"4": 4305,
"5": 59663
},
"categories": [
"Bank"
],
"primaryCategory": "Bank",
"isClaimed": true,
"claimedDate": "2016-09-16T09:28:12.000Z",
"isClosed": false,
"country": "GB",
"websiteUrl": "https://www.monzo.com",
"replyPercentage": 49.948927477017364,
"averageDaysToReply": 3.06,
"reviewLanguages": {
"en": 71954,
"pl": 55,
"es": 38,
"ro": 19
},
"businessUnitId": "57da77be0000ff000594bcdb",
"url": "https://www.trustpilot.com/review/www.monzo.com",
"matchingReviews": 72160,
"reviewsReturned": 100,
"moreBehindLogin": false
}

The company row for www.allegro.pl from a 56-business deep run, where it got 2,447 of its 2,488 listed reviews (reviewLanguages shortened here, the real row lists 17 languages):

{
"input": "www.allegro.pl",
"type": "company",
"status": "ok",
"domain": "www.allegro.pl",
"name": "Allegro",
"trustScore": 1.4,
"stars": 1.5,
"totalReviews": 2924,
"reviewsLast12Months": 403,
"starDistribution": {
"1": 2546,
"2": 112,
"3": 50,
"4": 45,
"5": 171
},
"categories": [
"Home & Garden"
],
"primaryCategory": null,
"isClaimed": true,
"claimedDate": "2019-12-10T09:06:54.000Z",
"isClosed": false,
"country": "PL",
"websiteUrl": "https://www.allegro.pl",
"replyPercentage": 94.18282548476455,
"averageDaysToReply": 0.3,
"reviewLanguages": {
"pl": 2213,
"en": 205,
"de": 20,
"it": 12
},
"businessUnitId": "46d40693000064000500b7ad",
"url": "https://www.trustpilot.com/review/www.allegro.pl",
"matchingReviews": 2488,
"reviewsReturned": 2447,
"moreBehindLogin": true,
"message": "Stopped when its share of the run's time ran out, so the other businesses get their turn. Run fewer businesses at once, or raise the run timeout, to get more"
}

Pricing

Prices are per 1,000 reviews.

EventNo discountBronzeSilverGold
Review returned$0.25$0.225$0.20$0.175
Company summary rowFreeFreeFreeFree
Business not found, invalid input or failed fetchFreeFreeFreeFree

Bronze, Silver and Gold are Apify Store discount tiers, and Apify's Pricing tab shows them as Starter, Scale and Business. Apify decides which tier an account is on.

Set a maximum cost per run in the run options. The scraper stops once that limit is reached.

Use it from AI agents and code

The scraper works as a tool through the Apify MCP server in Claude, Cursor, VS Code and other MCP clients. You can also call it through the Apify API or the Python and JavaScript clients, schedule it, or connect it to Make, Zapier and n8n.

More from heyitsgautham

Other actors from the same account.

FAQ

Do I need a proxy? No. Trustpilot runs a browser check on every visitor. The scraper passes it once with a real headless browser, then reads the review data directly, which keeps runs fast and cheap. The proxy setting is there only in case Trustpilot starts blocking Apify's servers.

Why do I get fewer reviews than totalReviews? Three reasons, in order of how often they happen. Your filters exclude some reviews, and matchingReviews shows how many match. Trustpilot hides reviews past the 200-per-filter limit, and moreBehindLogin shows when. Set maxReviewsPerBusiness above 200 to read deeper, as described above. Trustpilot also counts some reviews it no longer shows.

What happens with a domain that has no Trustpilot page? You get a free company row with "status": "not_found". The scraper tries the domain with and without www. before giving up.

How fast is it? At 200 reviews or fewer per business, fast: 112 businesses with 100 reviews each (8,207 reviews) finished in 58 seconds. Deep runs take longer, because Trustpilot answers Apify's servers at about 4 to 5 requests per second. 56 businesses with up to 100,000 reviews each used the whole hour and returned 95,165 reviews.

Will the run time out? No. The scraper reads the run's own timeout and stops reading shortly before it, keeping everything it fetched. A business it had no time to start gets a free error row that says so. The default timeout is 1 hour. Raise it in the run options to get more of a big company's history.

Limitations

  • Logged-out page limit of 200 reviews per filter combination. The deeper stages get past it for most small and mid-size companies, but on companies with tens of thousands of reviews a run returns part of the history, as the tables above show.
  • Trustpilot rate-limits heavy reading from Apify's servers. The scraper slows down when that happens, and a page that still fails after 10 tries is skipped and counted in the company row's message.
  • Trustpilot's last7days filter is not offered, because Trustpilot ignores it.
  • Review text is what Trustpilot shows publicly. Reviews Trustpilot removed or hid are not available.
  • Only use the data in ways that respect Trustpilot's terms and the privacy of reviewers.