Trustpilot Scraper — 200+ Reviews & Complaint Monitoring avatar

Trustpilot Scraper — 200+ Reviews & Complaint Monitoring

Pricing

Pay per usage

Go to Apify Store
Trustpilot Scraper — 200+ Reviews & Complaint Monitoring

Trustpilot Scraper — 200+ Reviews & Complaint Monitoring

Scrape full trustpilot.com review history per company — all languages, business data, reviewer data, replies, and transparency reports. Built-in complaint monitoring flags unanswered low-star reviews (riskLevel: "high") and measures response speed — no LLM cost.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

Black Falcon Data

Black Falcon Data

Maintained by Community

Actor stats

1

Bookmarked

53

Total users

34

Monthly active users

16 hours ago

Last modified

Share

What does Trustpilot Scraper do?

Trustpilot Reviews Scraper extracts the complete review history for any company on Trustpilot — not just the first 200 reviews shown on the public page. Get every review, in every language, across the entire history of a company, in one run.

No Trustpilot account needed. No cookies to paste. No API key. Just enter a company domain and run.

New to Apify? Sign up free and use the included $5 monthly platform credit to test this actor.

Key features

  • 🔓 Complete review history — get every review for a company, not just the latest 200. Works for businesses with thousands or tens of thousands of reviews.
  • 🌐 All languages — Trustpilot reviews span 50+ languages. Get them all, or filter to specific ISO codes (en, de, fr, …).
  • 🔎 Four modes in one actor — scrape reviews, search companies by keyword, browse a Trustpilot category, or fetch business data only.
  • 🏢 Company metadata included — TrustScore, stars, total reviews, categories, website, contact email/phone, claimed status, similar companies, and AI summary.
  • 📊 Transparency reports — reply rate, organic share, flagged-review counts, monthly distributions, verification status (one extra request per company).
  • 🎯 Rich filters — star ratings (1–5), language, date range (last 30 days / 3 / 6 / 12 months), topics, verified-only, replies-only, country of reviewer, keyword search within reviews.
  • ♻️ Incremental monitoring — track new and updated reviews across scheduled runs. Skip what you've already seen; emit only what changed.
  • 🚨 Complaint monitoring fields — flag unanswered low-star reviews with riskLevel: "high", filter complaints with isComplaint, and measure response speed with replyDelayDays.
  • 📦 Compact mode for LLM/MCP — strip the dataset to the fields AI agents actually need, ideal for RAG pipelines and MCP servers.
  • 🔔 Built-in notifications — Telegram, Discord, Slack, WhatsApp, generic webhooks. Get pinged on every new 1-star review.
  • 📤 Export anywhere — download as JSON, CSV, or Excel, stream via the Apify API, or pipe into Make, Zapier, Google Sheets, n8n, S3.

What data can you extract from trustpilot.com?

Each review record includes 35+ fields covering the review itself (reviewId, reviewUrl, rating, title, text, language, likes, dates, verification status, source), the reviewer (reviewerName, reviewerCountry, reviewerTotalReviews, reviewerIsVerified, reviewerImageUrl, reviewsOnSameDomain), the company's reply (replyText, replyDate, replyUpdatedDate), and rich company metadata (companyDomain, companyName, companyTrustScore, companyStars, companyTotalReviews, companyWebsite, companyIsClaimed, companyCategories, companyCity, companyCountry, companyContactEmail, companyContactPhone, companyResponseRate, companyResponseTime, per-star rating distribution, languageDistribution, similarCompanies, aiSummary). Optional transparency reports add reply rate, organic share, flagged-review counts, monthly distributions, and verification status. In standard mode all fields are always present — unavailable data is returned as null, never omitted. In compact mode only core fields are returned.

Input

The main inputs are a result limit. Additional filters and options are available in the input schema.

Key parameters:

  • mode — What to scrape. reviews = review data (default). searchCompanies = find companies by keyword. categories = browse a Trustpilot category. companyInfo = company profiles only (no reviews). (default: "reviews")
  • companyDomain — Company domain as used on Trustpilot, e.g. 'booking.com' or 'www.amazon.com'.
  • companyName — Company name to search for. Resolved automatically to the Trustpilot domain slug.
  • startUrls — List of Trustpilot review page URLs, e.g. https://www.trustpilot.com/review/booking.com
  • maxResults — Maximum reviews to return per company (0 = unlimited). Default: 200. Memory tiers: 1024 MB up to 1,000 results, 2048 MB up to 15,000, 4096 MB above that. (default: 200)
  • stars — Only return reviews with these star ratings. Leave empty for all ratings.
  • languages — Filter by review language ISO codes, e.g. ['en', 'de', 'fr']. Leave empty for all languages.
  • date — Only return reviews from this time period. (default: "")
  • lookbackDays — Rolling window: only return reviews published within the last N days. Overrides date range when set. Use with sort=recency for efficient early termination.
  • topics — Filter by Trustpilot topic categories. Leave empty for all topics. E.g. ["customer_service", "delivery_service"]
  • verified — Return only verified reviews. (default: false)
  • withReplies — Return only reviews that have a company reply. (default: false)
  • sort — Review sort order. recency (default) returns the newest reviews first — best for ongoing reputation monitoring and incremental polling. relevance returns Trustpilot's algorithmic top picks first — best for a quick brand sentiment snapshot. (default: "recency")
  • includeCompanyInfo — Include company metadata: trust score, total reviews, star breakdown, categories, website, contact, and AI summary. (default: true)
  • includeTransparency — Fetch the Trustpilot transparency report per company (+1 request). Adds a separate record with reply rate, organic share, flagged review counts, monthly distributions, and verification status. Auto-included in companyInfo mode. (default: false)
  • compact — Return core review fields only: reviewId, reviewUrl, rating, title, text, dates, reviewer, companyTrustScore. Ideal for AI pipelines and MCP integrations. Overridden by 'fields' if set. (default: false)
  • incrementalMode — Only return new and changed reviews compared to the previous run. Uses stateKey when provided, otherwise derives one from the target and filters. (default: false)
  • stateKey — Optional stable identifier for the tracked search universe. Leave empty to auto-derive a stable identifier from your search inputs — different keyword/location/filter combinations get isolated state automatically.
  • ...and 25 more parameters

Input examples

undefined — undefined

→ undefined

{
"companyDomain": "booking.com",
"maxResults": 0
}

undefined — undefined

→ undefined

{
"companyDomain": "stripe.com",
"stars": [
1
],
"date": "last30days",
"sort": "recency"
}

undefined — undefined

→ undefined

{
"mode": "searchCompanies",
"searchQuery": "car insurance",
"searchCountry": "US",
"maxResults": 50
}

undefined — undefined

→ undefined

{
"companyDomain": "booking.com",
"maxResults": 50,
"compact": true
}

undefined — undefined

→ undefined

{
"companyDomain": "booking.com",
"maxResults": 0,
"incrementalMode": true,
"stateKey": "booking-daily"
}

Output

Each run produces a dataset of structured listing records. Results can be downloaded as JSON, CSV, or Excel from the Dataset tab in Apify Console.

Example listing record

{
"type": "review",
"reviewId": "68362b480787ca52990267fc",
"reviewUrl": "https://www.trustpilot.com/reviews/68362b480787ca52990267fc",
"companyDomain": "booking.com",
"companyName": "Booking.com",
"rating": 1,
"title": "Opgehangen omdat de geen vervangend…",
"text": "Opgehangen omdat de geen vervangend hotel wilde zoeken na gecanceld accomodaties. ",
"language": "af",
"reviewSource": "Organic",
"likes": 0,
"publishedDate": "2025-05-27T23:14:48.000Z",
"experiencedDate": "2025-05-27T00:00:00.000Z",
"updatedDate": null,
"isVerified": false,
"verificationLevel": "not-verified",
"authorId": "5f05eec809a036394b2d2f7c",
"reviewerName": "Ronald",
"reviewerCountry": "NL",
"reviewerTotalReviews": 3,
"reviewerIsVerified": false,
"reviewerImageUrl": "",
"reviewsOnSameDomain": 1,
"replyText": null,
"replyDate": null,
"replyUpdatedDate": null,
"location": null,
"companyTrustScore": 1.8,
"companyStars": 2,
"companyTotalReviews": 107769,
"companyWebsite": "https://www.booking.com",
"companyIsClaimed": true,
"companyCategories": [
"Travel Aggregator",
"Hotel"
],
"companyCity": "Amsterdam",
"companyCountry": "NL",
"companyContactEmail": "customer.service@booking.com",
"companyContactPhone": "+31 20 712 5600",
"companyResponseRate": 0,
"companyResponseTime": "0 days",
"companyRating1Star": 75306,
"companyRating2Star": 3724,
"companyRating3Star": 2399,
"companyRating4Star": 4713,
"companyRating5Star": 21627,
"languageDistribution": [
{
"isoCode": "af",
"reviewCount": 3,
"displayName": "Afrikaans"
},
{
"isoCode": "ar",
"reviewCount": 71,
"displayName": "العربية"
},
{
"isoCode": "bg",
"reviewCount": 39,
"displayName": "български"
},
{
"isoCode": "bs",
"reviewCount": 4,
"displayName": "bosanski"
},
{
"isoCode": "ca",
"reviewCount": 39,
"displayName": "català"
},
{
"isoCode": "co",
"reviewCount": 2,
"displayName": "Corsican"
},
{
"isoCode": "cs",
"reviewCount": 90,
"displayName": "čeština"
},
{
"isoCode": "da",
"reviewCount": 3691,
"displayName": "dansk"
},
{
"isoCode": "de",
"reviewCount": 11101,
"displayName": "Deutsch"
},
{
"isoCode": "el",
"reviewCount": 84,
"displayName": "Ελληνικά"
},
{
"isoCode": "en",
"reviewCount": 51849,
"displayName": "English"
},
{
"isoCode": "es",
"reviewCount": 8134,
"displayName": "español"
},
{
"isoCode": "et",
"reviewCount": 13,
"displayName": "eesti"
},
{
"isoCode": "fi",
"reviewCount": 329,
"displayName": "suomi"
},
{
"isoCode": "fr",
"reviewCount": 9754,
"displayName": "français"
},
{
"isoCode": "fy",
"reviewCount": 1,
"displayName": "Frysk"
},
{
"isoCode": "gl",
"reviewCount": 9,
"displayName": "galego"
},
{
"isoCode": "ha",
"reviewCount": 1,
"displayName": "Hausa"
},
{
"isoCode": "he",
"reviewCount": 1,
"displayName": "עברית"
},
{
"isoCode": "hr",
"reviewCount": 33,
"displayName": "hrvatski"
},
{
"isoCode": "hu",
"reviewCount": 64,
"displayName": "magyar"
},
{
"isoCode": "ia",
"reviewCount": 1,
"displayName": "interlingua"
},
{
"isoCode": "id",
"reviewCount": 6,
"displayName": "Indonesia"
},
{
"isoCode": "is",
"reviewCount": 5,
"displayName": "íslenska"
},
{
"isoCode": "it",
"reviewCount": 7961,
"displayName": "italiano"
},
{
"isoCode": "iw",
"reviewCount": 5,
"displayName": "עברית"
},
{
"isoCode": "ja",
"reviewCount": 106,
"displayName": "日本語"
},
{
"isoCode": "kk",
"reviewCount": 3,
"displayName": "қазақ тілі"
},
{
"isoCode": "ko",
"reviewCount": 16,
"displayName": "한국어"
},
{
"isoCode": "lb",
"reviewCount": 1,
"displayName": "Lëtzebuergesch"
},
{
"isoCode": "ln",
"reviewCount": 1,
"displayName": "lingála"
},
{
"isoCode": "lt",
"reviewCount": 27,
"displayName": "lietuvių"
},
{
"isoCode": "lv",
"reviewCount": 17,
"displayName": "latviešu"
},
{
"isoCode": "ms",
"reviewCount": 5,
"displayName": "Melayu"
},
{
"isoCode": "nl",
"reviewCount": 4861,
"displayName": "Nederlands"
},
{
"isoCode": "no",
"reviewCount": 627,
"displayName": "norsk"
},
{
"isoCode": "pl",
"reviewCount": 1291,
"displayName": "polski"
},
{
"isoCode": "pt",
"reviewCount": 786,
"displayName": "português"
},
{
"isoCode": "ro",
"reviewCount": 155,
"displayName": "română"
},
{
"isoCode": "ru",
"reviewCount": 1940,
"displayName": "русский"
},
{
"isoCode": "sk",
"reviewCount": 31,
"displayName": "slovenčina"
},
{
"isoCode": "sl",
"reviewCount": 19,
"displayName": "slovenščina"
},
{
"isoCode": "sq",
"reviewCount": 3,
"displayName": "shqip"
},
{
"isoCode": "sr",
"reviewCount": 24,
"displayName": "српски"
},
{
"isoCode": "sv",
"reviewCount": 1159,
"displayName": "svenska"
},
{
"isoCode": "th",
"reviewCount": 8,
"displayName": "ไทย"
},
{
"isoCode": "tl",
"reviewCount": 1,
"displayName": "Filipino"
},
{
"isoCode": "tr",
"reviewCount": 47,
"displayName": "Türkçe"
},
{
"isoCode": "uk",
"reviewCount": 20,
"displayName": "українська"
},
{
"isoCode": "vi",
"reviewCount": 1,
"displayName": "Tiếng Việt"
},
{
"isoCode": "war",
"reviewCount": 1,
"displayName": "Waray"
},
{
"isoCode": "zh",
"reviewCount": 57,
"displayName": "中文"
},
{
"isoCode": "zh-hant",
"reviewCount": 1,
"displayName": "繁體中文"
},
{
"isoCode": "zh-tw",
"reviewCount": 2,
"displayName": "中文(台灣)"
}
],
"similarCompanies": [
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 175914,
"trustScore": 4.4,
"stars": 4.5
},
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 46918,
"trustScore": 2,
"stars": 2
},
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 148854,
"trustScore": 2.9,
"stars": 3
},
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 11493,
"trustScore": 1.2,
"stars": 1
},
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 76086,
"trustScore": 3,
"stars": 3
},
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 196129,
"trustScore": 4,
"stars": 4
},
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 11495,
"trustScore": 1.2,
"stars": 1
},
{
"displayName": "",
"identifyingName": "",
"numberOfReviews": 26456,
"trustScore": 3.1,
"stars": 3
}
],
"productReviews": null,
"aiSummary": "Most reviewers were unhappy with their experience overall. Many people were dissatisfied with the booking process, encountering issues such as unconfirmed reservations, issues with listing accuracy, a...",
"portalUrl": "https://www.trustpilot.com/review/booking.com",
"scrapedAt": "2026-04-05T13:44:58.386Z",
"source": "trustpilot.com",
"changeType": null
}

Incremental fields

When incremental: true, each record also carries:

  • changeType — one of NEW, UPDATED, UNCHANGED, REAPPEARED, EXPIRED.
  • firstSeenAt, lastSeenAt — ISO-8601 timestamps tracking the listing across runs.
  • isRepost, repostOfId, repostDetectedAt — populated when a new listing matches the tracked content of a previously expired one. Set skipReposts: true to drop detected reposts from the output.

How to scrape trustpilot.com

  1. Go to Trustpilot Scraper in Apify Console.
  2. Configure the input.
  3. Set maxResults to control how many results you need.
  4. Click Start and wait for the run to finish.
  5. Export the dataset as JSON, CSV, or Excel.

Use cases

  • Reputation monitoring — track new reviews daily, alert on every 1-star, watch your TrustScore evolve.
  • Unanswered complaint triage — filter riskLevel: "high" to find low-star reviews that still have no company reply.
  • Competitive intelligence — pull every review for a competitor, analyse complaint themes, benchmark response rates.
  • Lead generation — extract contact email + phone from every business in a Trustpilot category for cold outreach with built-in trust signals.
  • Sentiment-analysis datasets — millions of multi-language reviews with labeled rating, verification, and reply status.
  • Market research — compare TrustScore distributions across industries, identify under-served categories with high complaint volume.
  • AI agents & MCP servers — feed compact-mode reviews into an LLM pipeline without blowing up the context window.

How much does it cost to scrape trustpilot.com?

Trustpilot Scraper uses pay-per-event pricing. You pay a small fee when the run starts and then for each result that is actually produced.

  • Run start: $0.005 per run
  • Per result: $0.00069 per listing record

Example costs:

  • 10 results: $0.01
  • 100 results: $0.07
  • 500 results: $0.35

Example: recurring monitoring savings

These examples compare full re-scrapes with incremental runs at different churn rates. Churn is the share of listings that are new or whose tracked content changed since the previous run. Actual churn depends on your query breadth, source activity, and polling frequency — the scenarios below are examples, not predictions.

Example setup: 250 results per run, daily polling (30 runs/month). Event-pricing examples scale linearly with result count.

Churn rateFull re-scrape run costIncremental run costSavings vs full re-scrapeMonthly cost after baseline
5% — stable niche query$0.18$0.01$0.16 (92%)$0.41
15% — moderate broad query$0.18$0.03$0.15 (83%)$0.93
30% — high-volume aggregator$0.18$0.06$0.12 (68%)$1.70

Full re-scrape monthly cost at daily polling: $5.32. First month with incremental costs $0.57 / $1.07 / $1.82 for the 5% / 15% / 30% scenarios because the first run builds baseline state at full cost before incremental savings apply.

Platform usage (compute and proxies) is billed separately by Apify based on actual consumption. Incremental runs consume less on result processing, though fixed per-run overhead stays the same.

FAQ

How many results can I get from trustpilot.com?

The number of results depends on the search query and available listings on trustpilot.com. Use the maxResults parameter to control how many results are returned per run.

Does Trustpilot Scraper support recurring monitoring?

Yes. Enable incremental mode to only receive new or changed listings on subsequent runs. This is ideal for scheduled monitoring where you want to track changes over time without re-processing the full dataset.

Can I integrate Trustpilot Scraper with other apps?

Yes. Trustpilot Scraper works with Apify's integrations to connect with tools like Zapier, Make, Google Sheets, Slack, and more. You can also use webhooks to trigger actions when a run completes.

Can I use Trustpilot Scraper with the Apify API?

Yes. You can start runs, manage inputs, and retrieve results programmatically through the Apify API. Client libraries are available for JavaScript, Python, and other languages.

Can I use Trustpilot Scraper through an MCP Server?

Yes. Apify provides an MCP Server that lets AI assistants and agents call this actor directly. Use compact mode and descriptionMaxLength to keep payloads manageable for LLM context windows.

This actor extracts publicly available data from trustpilot.com. Web scraping of public information is generally considered legal, but you should always review the target site's terms of service and ensure your use case complies with applicable laws and regulations, including GDPR where relevant.

Your feedback

If you have questions, need a feature, or found a bug, please open an issue on the actor's page in Apify Console. Your feedback helps us improve.

You might also like

Getting started with Apify

New to Apify? Create a free account with $5 credit — no credit card required.

  1. Sign up — $5 platform credit included
  2. Open this actor and configure your input
  3. Click Start — export results as JSON, CSV, or Excel

Need more later? See Apify pricing.