Trustpilot Reviews Scraper
Pricing
from $20.00 / 1,000 results
Trustpilot Reviews Scraper
Scrape Trustpilot reviews, ratings and company data by domain or URL. Filters by language, date, star rating, verified reviews. Up to 1000 reviews per company. No login required.
Pricing
from $20.00 / 1,000 results
Rating
0.0
(0)
Developer
Yuliia Kulakova
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
19 hours ago
Last modified
Categories
Share

Trustpilot Reviews Scraper
Extract reviews, ratings, and company data from Trustpilot — no browser, no login, no hassle.
Scrape any company's reviews on Trustpilot by domain name or URL. Get full review text, star ratings, author details, reply data, and company info in seconds. Supports powerful filters: language, date range, star rating, verified-only, and replies-only.
Quick Navigation
- What This Scraper Does
- Why Choose This Scraper
- Input Parameters
- Example Inputs
- Output Schema
- How the 1000-Review Strategy Works
- Use Cases
- Limitations
- FAQ
What This Scraper Does
This actor scrapes Trustpilot's public review pages using a pure HTTP approach — no browser automation, no Puppeteer, no Playwright. It reads data directly from the structured JSON embedded in every Trustpilot page (__NEXT_DATA__), making it fast, reliable, and lightweight.
For each company you provide, the scraper collects:
- Company summary — TrustScore, star rating, total review count, star distribution, categories, contact details (email, phone, address), reply behaviour stats
- Individual reviews — full text, title, star rating, dates, author name and country, verification status, company reply
Why Choose This Scraper
| Feature | This Scraper | Most Competitors |
|---|---|---|
| Up to 1000 reviews per company | ✅ | ❌ (200 limit) |
| Language filter | ✅ | ❌ often broken |
| Date range filter | ✅ | ❌ often missing |
| Star rating filter | ✅ | ✅ |
| Verified reviews filter | ✅ | ❌ |
| Replies-only filter | ✅ | ❌ |
| Company contact info | ✅ | ❌ often empty |
| Reply stats (rate, avg days) | ✅ | ❌ |
| No browser required | ✅ fast & cheap | ❌ slow & expensive |
| Duplicate review protection | ✅ | ❌ |
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
companies | string[] | — | Company domains to scrape (e.g. booking.com, airbnb.com) |
startUrls | object[] | — | Full Trustpilot URLs (alternative to companies) |
maxReviewsPerCompany | integer | 200 | Max reviews per company. Up to 1000 using star-bucket strategy |
languages | string | "all" | Language filter: "all" or ISO 639-1 code ("en", "de", "fr", etc.) |
filterByStars | integer[] | null | Filter by star rating: e.g. [1, 2] for negative reviews only |
filterByDate | string | null | Time range: last30days, last3months, last6months, last12months |
sort | string | "recency" | Sort order: "recency" (newest first) or "relevance" |
verifiedOnly | boolean | false | Only return verified reviews |
withRepliesOnly | boolean | false | Only return reviews that have a company reply |
fetchCompanyInfo | boolean | true | Include company summary record in output |
Tip: You can use
companiesandstartUrlstogether — domains are deduplicated automatically.
Example Inputs
Basic — scrape one company
{"companies": ["booking.com"],"maxReviewsPerCompany": 200}
Multiple companies with language filter
{"companies": ["airbnb.com", "vrbo.com", "expedia.com"],"maxReviewsPerCompany": 100,"languages": "en"}
Negative reviews only — last 3 months
{"companies": ["booking.com"],"maxReviewsPerCompany": 500,"filterByStars": [1, 2],"filterByDate": "last3months"}
Maximum coverage — up to 1000 reviews
{"companies": ["booking.com"],"maxReviewsPerCompany": 1000,"languages": "all"}
Verified reviews with company replies
{"companies": ["amazon.com"],"maxReviewsPerCompany": 200,"verifiedOnly": true,"withRepliesOnly": true}
From Trustpilot URLs directly
{"startUrls": [{ "url": "https://www.trustpilot.com/review/booking.com" },{ "url": "https://www.trustpilot.com/review/airbnb.com" }],"maxReviewsPerCompany": 200}
Output Schema
Each run produces a dataset with two types of records, distinguished by the type field.
Company Record ("type": "company")
Pushed once per company, before its reviews.
{"type": "company","companyName": "Booking.com","companyDomain": "booking.com","trustScore": 1.8,"stars": 2,"totalReviews": 107822,"starDistribution": {"five": 21631,"four": 4715,"three": 2401,"two": 3724,"one": 75351},"categories": ["Travel Aggregator", "Hotel"],"websiteUrl": "https://www.booking.com","email": "customer.service@booking.com","phone": "+31 20 712 5600","address": "Herengracht 597","city": "Amsterdam","zipCode": "1017CE","country": "NL","replyPercentage": 0,"avgDaysToReply": 0,"isClaimed": true,"isCollectingReviews": true,"scrapedAt": "2026-04-06T12:00:00.000Z"}
Review Record ("type": "review")
One record per review.
{"type": "review","reviewId": "69d37ce72558148408486e98","companyName": "Booking.com","companyDomain": "booking.com","companyTrustScore": 1.8,"companyStars": 2,"title": "Paid €215.96 for emergency exit seats and never got them","text": "I booked emergency exit seats for extra legroom on my flight. When I arrived at the airport the seats had been changed without any notification...","rating": 1,"language": "en","publishedDate": "2026-04-06T11:29:11.000Z","experiencedDate": "2026-03-21T00:00:00.000Z","updatedDate": null,"authorName": "Sarah Mitchell","authorCountry": "GB","authorTotalReviews": 4,"authorIsVerified": false,"isVerified": false,"verificationLevel": "not-verified","hasReply": false,"replyText": null,"replyDate": null,"reviewSource": "organic","likes": 2,"scrapedAt": "2026-04-06T12:00:05.000Z"}
Full Field Reference
| Field | Type | Description |
|---|---|---|
type | string | "review" or "company" — use to filter dataset |
reviewId | string | Unique Trustpilot review ID |
companyName | string | Company display name |
companyDomain | string | Domain used to look up the company |
companyTrustScore | number | TrustScore (e.g. 4.2) |
companyStars | integer | Star rating 1–5 |
title | string | Review headline |
text | string | Full review body |
rating | integer | Star rating given by reviewer (1–5) |
language | string | Review language (ISO 639-1 code) |
publishedDate | string | When the review was posted (ISO 8601) |
experiencedDate | string | When the customer had the experience (ISO 8601) |
updatedDate | string|null | When the review was last edited |
authorName | string | Reviewer display name |
authorCountry | string | Reviewer country code (ISO 3166-1 alpha-2) |
authorTotalReviews | integer | Total reviews this author has written |
authorIsVerified | boolean | Whether the author is a verified Trustpilot user |
isVerified | boolean | Whether this review is verified |
verificationLevel | string | Verification type: "not-verified", "invited", "redirected", "verified" |
hasReply | boolean | Whether the company replied to this review |
replyText | string|null | Full company reply text |
replyDate | string|null | When the company replied (ISO 8601) |
reviewSource | string | How the review was collected (e.g. "organic", "BusinessGeneratedLink") |
likes | integer | Number of helpful votes |
scrapedAt | string | Timestamp when this record was collected |
How the 1000-Review Strategy Works
Trustpilot limits unauthenticated access to 10 pages × 20 reviews = 200 reviews per filter combination. To go beyond 200, this scraper uses a star-bucket strategy:
When maxReviewsPerCompany is greater than 200, the scraper runs separate passes for each star rating:
stars=1 → up to 200 reviewsstars=2 → up to 200 reviewsstars=3 → up to 200 reviewsstars=4 → up to 200 reviewsstars=5 → up to 200 reviews─────────────────────────────Total: up to 1000 unique reviews
Reviews are deduplicated by ID, so no review appears twice even if it shows up in multiple filter results.
When maxReviewsPerCompany is 200 or less, the scraper uses a single pass with no star filter — faster and more efficient.
Use Cases
Reputation management agencies Monitor your clients' TrustScores and review sentiment on a weekly or monthly basis. Run multiple domains in a single job and export to Google Sheets or a CRM.
Competitive intelligence Compare your company's reviews with competitors. Identify what customers love or complain about. Benchmark response rates and average reply times.
Negative review analysis
Filter for 1–2 star reviews in the last 30 days to get an instant pulse on current customer pain points. Use the filterByStars and filterByDate parameters together.
Sentiment analysis and NLP Collect large volumes of review text with structured metadata for training sentiment models, topic extraction, or LLM fine-tuning.
Investment and due diligence Screen companies by TrustScore and review velocity. Review counts and star distributions reveal product-market fit and customer satisfaction trends.
Lead generation for reputation services Find businesses with low TrustScores and no reply behaviour — prime candidates for reputation management pitches.
Limitations
200-review cap per star bucket Trustpilot enforces a hard authentication wall after 10 pages. The star-bucket strategy raises the practical limit to 1,000 reviews per company. Companies with 100,000+ reviews (e.g. Booking.com, Amazon) cannot be fully scraped without Trustpilot's paid API access.
Language filter defaults to "all"
By default the scraper retrieves reviews in all languages. Set languages: "en" to restrict to English only, which roughly halves the total review count for large international companies.
Single star filter at a time
Trustpilot's API only accepts one star value per request. When filterByStars: [1, 2] is set with maxReviewsPerCompany above 200, the scraper runs one pass per requested star rating and combines the results.
Review counts may differ from Trustpilot UI Trustpilot occasionally hides flagged or removed reviews from public pages. The total shown on the website may be slightly higher than what the scraper can access.
Rate limiting On high-volume runs, Trustpilot may temporarily rate-limit requests. The scraper handles this automatically with exponential backoff (10s → 30s → 90s) and random delays between pages.
FAQ
Do I need a Trustpilot account? No. All data collected by this scraper is publicly accessible on Trustpilot without login.
Can I scrape multiple companies in one run?
Yes. Add multiple entries to companies or startUrls. Each company is scraped sequentially with a pause between them to avoid rate limiting.
What format is the output?
JSON by default. You can export the dataset as CSV, XLSX, or XML from Apify's dataset view. Use the type field to filter company records vs review records in post-processing.
Why are some fields null?
Fields like email, phone, and replyText are null when the company has not filled in their Trustpilot profile or has not replied to the review. This is data from Trustpilot itself — the scraper collects whatever is publicly available.
How fast does it run?
A run with 200 reviews for one company typically completes in under 60 seconds. With maxReviewsPerCompany: 1000, expect 3–5 minutes per company depending on Trustpilot's response times.
Is this legal? This scraper only accesses publicly available data on Trustpilot — the same data visible to any visitor without logging in. Always ensure your use case complies with Trustpilot's Terms of Service and applicable data protection laws (GDPR, CCPA).
Supported Languages (examples)
en English · de German · fr French · es Spanish · it Italian · nl Dutch · pt Portuguese · sv Swedish · da Danish · nb Norwegian · fi Finnish · pl Polish · ru Russian · ja Japanese · zh Chinese · ar Arabic · tr Turkish · or use all for every language.
Built with ❤️ for marketers, analysts, and developers who need reliable review data at scale.