Trustpilot Reviews Scraper
Pricing
from $0.25 / 1,000 review scrapeds
Trustpilot Reviews Scraper
Extract public Trustpilot company reviews: ratings, text, replies, reviewer info, and company trust score. Filter by stars, language, and date. Deep coverage past the ~200-review wall via smart filter slicing. No login required.
Pricing
from $0.25 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Daniel Valev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
What does Trustpilot Reviews Scraper do?
Trustpilot Reviews Scraper collects public reviews from Trustpilot company profiles and saves one structured dataset item per review. Give it company domains or Trustpilot review URLs, optional star/language/date filters, and a maximum number of reviews per company.
It does not log in to Trustpilot, does not use mobile-app APIs or user cookies, and does not claim unlimited history. Trustpilot’s public pagination stops around page 10 (~200 reviews) per filter combination; with deep coverage the Actor slices filters (stars, then languages/dates) and merges unique reviews so you can go further without signing in.
Why scrape Trustpilot reviews?
Public reviews support competitor research, reputation monitoring, and incremental sync workflows:
- schedule recurring runs and keep only reviews newer than
publishedAfter - compare ratings and reply behaviour across companies
- export JSON/CSV through Apify integrations, the API, or MCP
The default run scrapes 20 reviews for pipedrive.com so health checks stay cheap while still exercising the live browser + HTTP path.
What data can Trustpilot Reviews Scraper extract?
| Field | Type | Meaning |
|---|---|---|
reviewId / reviewUrl | string | Public review identity and URL |
title / text / rating | string / int | Review content and stars |
publishedDate / experienceDate / updatedDate | ISO datetime | Trustpilot timestamps (UTC) |
language / likes / source | string / int | Language, likes, source label |
verificationLevel / isVerified | string / bool | Verification metadata |
authorName / authorId / country | string | Public reviewer fields (optional anonymization) |
replyMessage / replyPublishedDate | string | Company reply when present |
companyName / companyDomain / companyTrustScore | mixed | Company profile fields |
scrapedAt / inputUrl | string | Actor metadata |
Every field is always present; unavailable values are null (arrays default to []).
How to scrape Trustpilot reviews
- Open the Actor Input tab.
- Add one or more
companyUrls(domain or full Trustpilot URL). - Set
maxReviewsPerCompany(use0for everything reachable on the public path). - Optionally filter by
stars,languages,date,verified, orwithReplies. - Keep Apify Proxy on the RESIDENTIAL group — datacenter IPs are commonly blocked by Trustpilot’s WAF.
- Run the Actor and open the Dataset tab (and
COVERAGE_REPORTin the key-value store).
Incremental sync with publishedAfter
Set publishedAfter to an ISO date (YYYY-MM-DD, midnight UTC) or a full ISO date-time. Only reviews strictly newer than the cursor are saved and charged. With sort=recency, pagination stops as soon as a page crosses the cutoff.
Pricing
Pricing is pay-per-event. Platform usage is included in the event price (not billed separately). Configure the same numbers in Console Publishing → Monetization.
| Event | Free / no discount | Description |
|---|---|---|
Run started (run-start) | $0.005 | Once when the Actor run starts successfully |
Review scraped (review-scraped) | $0.0005 / review ($0.50 / 1,000) | Per review saved to the dataset |
Volume discounts on higher Apify plans:
| Plan | Per-review price | Per 1,000 reviews |
|---|---|---|
| No discount (Free) | $0.00050 | $0.50 |
| Bronze | $0.00043 | $0.43 |
| Silver | $0.00035 | $0.35 |
| Gold | $0.00025 | $0.25 |
Reviews skipped by publishedAfter, deduplication, or filters are not charged. Blocked runs that produce zero reviews do not charge review events. Set a max total charge on the run to stop cleanly with stopReason = charge-limit-reached.
Input
See the Input tab for the full schema. Important fields:
companyUrls— required list of domains or Trustpilot URLsmaxReviewsPerCompany—0means unbounded within public/sliced reach; default/prefill is20languages— empty means all languages (the Actor sendslanguages=all; Trustpilot’s own UI often defaults to English-only)deepCoverage— slice filters to work past the ~200-review public wallanonymizeReviewers— replaceauthorNamewith initials; nullauthorId/authorImageproxyConfiguration— defaults to Apify ProxyRESIDENTIAL
Output
Results are written to the default dataset. You can download JSON, CSV, Excel, and other formats, or read them through the dataset API.
{"reviewId": "6ab516bdf6b3a0e76ca64942","reviewUrl": "https://www.trustpilot.com/reviews/6ab516bdf6b3a0e76ca64942","title": "Training was outstanding","text": "The onboarding session was clear and useful.","rating": 5,"publishedDate": "2026-09-24T14:25:33.000Z","experienceDate": "2026-09-24T00:00:00.000Z","updatedDate": null,"language": "en","likes": 0,"verificationLevel": "not-verified","isVerified": false,"source": "Organic","authorName": "Alex","authorId": "public-consumer-id","authorImage": null,"authorReviewCount": 1,"country": "IE","replyMessage": "Thank you for your feedback!","replyPublishedDate": "2026-09-24T14:36:05.000Z","replyUpdatedDate": null,"companyName": "Pipedrive","companyDomain": "pipedrive.com","companyTrustScore": 4.4,"companyStars": 4.5,"companyTotalReviews": 3453,"companyCategories": ["CRM Provider"],"companyUrl": "https://www.trustpilot.com/review/pipedrive.com","scrapedAt": "2026-09-25T12:00:00.000Z","inputUrl": "pipedrive.com"}
Coverage report
Each run also writes COVERAGE_REPORT to the default key-value store (not charged): companyDomain, reviewsTotalOnTrustpilot, reviewsReturned, coveragePercent, filterSlicesFetched, pagesFetched, stopReason.
stopReason is one of: complete, max-reviews-reached, published-after-reached, public-wall, public-wall-after-slicing, charge-limit-reached, not-found, blocked, fetch-errors.
Limits
- Public pagination stops at about page 10 (~200 reviews) per filter combination; page 11 redirects to login. This Actor never logs in.
- Deep coverage uses additional star/language/date slices and deduplicates by
reviewId. Ordering is no longer a single global newest-first list once slicing is active. - Trustpilot fronts pages with an AWS WAF challenge. The Actor bootstraps a real browser once per proxy session, then prefers cheap
/_next/data/...HTTP pages. If__NEXT_DATA__disappears (App Router migration), the company fails loudly and raw HTML is saved asDEBUG_{domain}_page{n}.html. - A run that returns 0 reviews because of blocking ends as failed, not as a silent empty success.
Integrations and API / MCP
Use Apify schedules, webhooks, and integrations to push new reviews downstream. For programmatic access, use the Apify API or an MCP client configured against Apify. Call this Actor with the same JSON input you would use in Console.
FAQ
Why do I see fewer languages than on Trustpilot in a browser?
Trustpilot’s own profile UI often defaults to English. Leave languages empty so this Actor requests all languages via languages=all.
Can I get more than 200 reviews for a large company?
Yes, enable deepCoverage and set maxReviewsPerCompany above 200 (or 0). Coverage still depends on how well star/language/date slices separate the catalogue; COVERAGE_REPORT records when the public wall remains after slicing.
Does anonymizeReviewers remove all personal data?
No. Review text can still contain personal data. Anonymization only initials the display name and drops author id/image. You remain responsible for GDPR and other applicable law.
Responsible use
This Actor only reads public Trustpilot pages. Reviewer names and related fields can be personal data under the GDPR. You are responsible for complying with Trustpilot’s terms and applicable law, and for having a lawful basis before processing personal data.