Trustpilot Reviews Scraper avatar

Trustpilot Reviews Scraper

Pricing

from $20.00 / 1,000 results

Go to Apify Store
Trustpilot Reviews Scraper

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

Yuliia Kulakova

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

19 hours ago

Last modified

Categories

Share

Trustpilot Reviews Scraper

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

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

FeatureThis ScraperMost 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

ParameterTypeDefaultDescription
companiesstring[]Company domains to scrape (e.g. booking.com, airbnb.com)
startUrlsobject[]Full Trustpilot URLs (alternative to companies)
maxReviewsPerCompanyinteger200Max reviews per company. Up to 1000 using star-bucket strategy
languagesstring"all"Language filter: "all" or ISO 639-1 code ("en", "de", "fr", etc.)
filterByStarsinteger[]nullFilter by star rating: e.g. [1, 2] for negative reviews only
filterByDatestringnullTime range: last30days, last3months, last6months, last12months
sortstring"recency"Sort order: "recency" (newest first) or "relevance"
verifiedOnlybooleanfalseOnly return verified reviews
withRepliesOnlybooleanfalseOnly return reviews that have a company reply
fetchCompanyInfobooleantrueInclude company summary record in output

Tip: You can use companies and startUrls together — 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

FieldTypeDescription
typestring"review" or "company" — use to filter dataset
reviewIdstringUnique Trustpilot review ID
companyNamestringCompany display name
companyDomainstringDomain used to look up the company
companyTrustScorenumberTrustScore (e.g. 4.2)
companyStarsintegerStar rating 1–5
titlestringReview headline
textstringFull review body
ratingintegerStar rating given by reviewer (1–5)
languagestringReview language (ISO 639-1 code)
publishedDatestringWhen the review was posted (ISO 8601)
experiencedDatestringWhen the customer had the experience (ISO 8601)
updatedDatestring|nullWhen the review was last edited
authorNamestringReviewer display name
authorCountrystringReviewer country code (ISO 3166-1 alpha-2)
authorTotalReviewsintegerTotal reviews this author has written
authorIsVerifiedbooleanWhether the author is a verified Trustpilot user
isVerifiedbooleanWhether this review is verified
verificationLevelstringVerification type: "not-verified", "invited", "redirected", "verified"
hasReplybooleanWhether the company replied to this review
replyTextstring|nullFull company reply text
replyDatestring|nullWhen the company replied (ISO 8601)
reviewSourcestringHow the review was collected (e.g. "organic", "BusinessGeneratedLink")
likesintegerNumber of helpful votes
scrapedAtstringTimestamp 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 reviews
stars=2 → up to 200 reviews
stars=3 → up to 200 reviews
stars=4 → up to 200 reviews
stars=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.