Trustpilot Scraper - Company Reviews and Ratings
Pricing
from $0.45 / 1,000 review returneds
Trustpilot Scraper - Company Reviews and Ratings
Scrape Trustpilot reviews for any company. Copy whatever follows /review/ in the URL. Trustpilot picks the domain, so Amazon is www.amazon.com, not amazon.com. Each review has rating, title, full text, author, country, verification, dates, reply and TrustScore. $0.45 per 1,000 reviews.
Pricing
from $0.45 / 1,000 review returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
Trustpilot Scraper: company reviews with ratings, replies and TrustScore
Give it one or more company domains and get one row per review: the star rating, the title, the full text, who wrote it and from which country, whether Trustpilot verified it, when it was posted, when the experience actually happened, and the company's reply if there is one. Every row also carries the company's TrustScore and total review count, so you do not need a second lookup.
One thing trips people up on the first run. Trustpilot decides the exact domain string, and you
have to match it. Amazon lives at www.amazon.com, not amazon.com. Copy whatever sits after
/review/ in the Trustpilot address bar and paste that.
| Input | Company domains, exactly as Trustpilot writes them |
| Output | One row per review |
| Ceiling | About 200 reviews per company per run, the 10 pages Trustpilot lists without an account |
| Account needed | None |
| Price | $0.45 per 1,000 reviews, flat on every plan |
๐ What Trustpilot Scraper does
It walks a company's review pages in order, about twenty reviews to a page, and turns each one into
a row. Several domains in one run are handled one after another, and the per-company cap applies to
each of them separately, so three domains at maxReviews: 100 is up to 300 rows.
Alongside the review itself you get the company context repeated on every row: companyName,
trustScore, starRating, totalReviews, whether the profile is claimed, and the website
Trustpilot has on file. That makes a single dataset enough to rank companies and read their reviews
without joining anything.
experiencedAt is the date the reviewer says the thing happened, which is often days before
publishedAt. It is the field to use when you are trying to tie a run of complaints to a bad week.
Three optional filters narrow the list: star ratings, a date range and the order. Trustpilot applies them itself, so a run for one-star reviews reads one-star pages and nothing else.
๐ฅ What you give it
{"companyDomains": ["www.amazon.com", "nike.com"],"maxReviews": 200}
| Field | Default | What it is |
|---|---|---|
companyDomains | none | The list version. Domains as Trustpilot writes them: www.amazon.com, nike.com, booking.com. The Console shows www.amazon.com as an example, but that is a prefill, so an API call has to send its own. |
companyDomain | none | One box instead of the list, if that suits you better. Only read when companyDomains is empty. |
maxReviews | 100 | Per company, 1 to 5,000. Trustpilot serves about twenty per page, so this sets how many pages get loaded. |
starRatings | none | Only reviews with these ratings, as a list from "1" to "5": ["1", "2"] for the complaints. Empty means every rating. |
dateRange | any | last30days, last3months, last6months or last12months. Counts from the day the review went up (publishedAt). |
sortBy | recency | recency is newest first, Trustpilot's own default. relevance is Trustpilot's relevance ranking. |
notionConnector | none | Optional. Writes every delivered review into your Notion. Authorise a connector once under Settings, API and Integrations, MCP connectors, then pick it here. |
notionParentId | none | Optional. The Notion data source id to write into. Leave it empty and the pages are created privately in your workspace. |
proxyConfiguration | on | Optional network setting. Leave it alone unless you want the run to leave through a network of your own, which is used exactly as you give it. |
You can also paste the company's Trustpilot link, https://www.trustpilot.com/review/www.amazon.com,
and the domain is read from it. That is the safest way, because the link already has Trustpilot's
exact domain, www. and all. A link with filters in it, such as ?stars=1, is refused with a
BAD_INPUT row rather than run without them. Paste the plain link and use the fields above instead.
๐ค What you get back
A real row from a recent run, with the review body cut short here for length:
{"ok": true,"companyName": "Amazon","companyDomain": "www.amazon.com","trustScore": 1.6,"starRating": 1.5,"totalReviews": 49297,"categories": [],"isClaimed": true,"websiteUrl": "https://www.amazon.com","reviewId": "6aaf168f35c963635c9f54b2","rating": 1,"title": "My item was delivered damage and open","text": "My item was delivered damage and open. It was not resolved. ...","author": "Octavian Augustus","authorCountry": "US","authorReviewCount": 2,"verified": false,"likes": 1,"publishedAt": "2026-09-20T01:11:11.000Z","experiencedAt": "2026-09-19T00:00:00.000Z","language": "en","replyText": null,"replyAt": null,"reviewUrl": "https://www.trustpilot.com/reviews/6aaf168f35c963635c9f54b2"}
| Field | What it is |
|---|---|
trustScore, starRating | The company's weighted score and its rounded star value. Repeated on every row from that company. |
rating | This one review's stars, 1 to 5. |
verified | Trustpilot's own verification label, not a judgement about the reviewer. |
experiencedAt | When the reviewer says it happened, as opposed to when they wrote it. |
replyText, replyAt | The company's public reply, or null when there is none. |
authorReviewCount | How many reviews that account has written in total. A 1 is worth noticing. |
categories | Trustpilot's category ids, and an empty list on plenty of profiles. |
title, text, author, authorCountry, likes, experiencedAt and replyText all come back
null when Trustpilot does not publish them. That is normal, not a fault.
๐งพ Reading the output
Real reviews carry ok: true. Everything else carries ok: false and an errorCode, and none of
those rows are charged.
| Code | What it means |
|---|---|
BAD_INPUT | No domain was sent, a filter value Trustpilot does not know, or a pasted link with its own filters. Nothing was loaded. |
NO_RESULTS | The page loaded but there was no company there. Nine times out of ten the domain is missing its www., or has an extra one. With filters set it can also mean no review matched them, and the row's note says so. |
EMPTY_REVIEW | A review with no rating and no text. Kept so your count reconciles, never billed. |
BLOCKED | Trustpilot refused the page after the run kept trying. Nothing was delivered for that domain. |
The Console's Overview table hides text, trustScore, verified, replyText and
experiencedAt, and shows diagnostic rows as mostly blank lines. Download the dataset as JSON, CSV
or Excel, or switch the table to all fields.
โถ๏ธ How to run it
- Find the company on Trustpilot and copy whatever follows
/review/in the address bar. - Open Trustpilot Scraper and click Try for free.
- Paste the domain into Company domains. Add more lines for more companies.
- Set Max reviews per company. Try 20 first to check the shape.
- Click Start, then download the dataset.
๐ฐ How much does it cost?
$0.45 per 1,000 reviews. Flat on every Apify plan, no volume tiers.
You are billed per genuine review row. Empty review shells, repeated reviews inside a run and every diagnostic row are not charged. With filters set, a review that does not match them is never delivered, so it is never charged either.
๐ก What people use it for
- Watching a competitor's rating and reading what changed, on a schedule.
- Grouping complaints by
experiencedAtto find the week something went wrong. - Checking how often a company replies, and how quickly, across a list of rivals.
- Pulling one-star text into a summariser to get the recurring objection in the customer's own words.
๐ง What it does not do
- Date ranges are fixed windows. The last 30 days, or the last 3, 6 or 12 months, counted from
the day a review went up. For any other window, filter on
publishedAtorexperiencedAtafterwards. - No reviewer profiles. You get the display name, country and their total review count, nothing more.
- Not the whole history for a big company. Trustpilot lists 10 pages, about 200 reviews, of any one view to a visitor without an account, so that is what one run gets per company. Filters are how you reach further: the newest 200 one-star reviews and the newest 200 five-star reviews are two different sets.
- A stopped walk does not always explain itself. If a run was serving reviews and then stopped early, you get the shorter set without a diagnostic row telling you why.
- The domain must be Trustpilot's exact one. Getting it wrong gives you an empty result, not a helpful correction.
- Null is common. Several fields depend on what the reviewer filled in and what Trustpilot chooses to publish.
- Rows are a snapshot. Reviews get edited and removed, and TrustScore moves.
๐งญ Which reviews scraper do you need?
| If you want | Use |
|---|---|
| Trustpilot reviews and TrustScore | This one |
| Software reviews from G2 | G2 Reviews Scraper |
| Software reviews from Capterra | Capterra Reviews Scraper |
| Reviews of a physical place | Google Maps Reviews Scraper |
| Employee reviews instead of customer ones | Glassdoor Reviews Scraper |
โ Questions people ask
Which domain do I type? The one in Trustpilot's own URL, after /review/. If their page says
www.amazon.com, then amazon.com will find nothing.
Can I get reviews from a date range? Within fixed windows, yes: set dateRange to the last 30
days or the last 3, 6 or 12 months. For any other range, filter on publishedAt or experiencedAt
afterwards.
Can I run several companies at once? Yes. Put each on its own line, and remember the cap is per company.
Why is text empty on some rows? Star-only reviews exist. If there is no rating either, the row
comes back as EMPTY_REVIEW and is not billed.
How do I avoid paying for the same review twice? Dedupe on reviewId, which is stable across
runs.
Is this legal? These are public reviews on public company pages. They are written by identifiable people, so GDPR and similar laws apply and you want a reason for collecting them. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
๐ If something breaks
Open the Issues tab on the actor page. Send the exact domain string you used and the run id. The
errorCode on the diagnostic row usually names the problem by itself.