Trustpilot Scraper: Reviews, Company Search & Contacts
Pricing
from $1.80 / 1,000 business scrapeds
Trustpilot Scraper: Reviews, Company Search & Contacts
Find companies on Trustpilot by keyword with emails, phones, addresses and TrustScore, or scrape reviews with ratings, dates and company replies. Filter by stars, language, verified or replied. Pay only for results. Export JSON, CSV or Excel.
Pricing
from $1.80 / 1,000 business scrapeds
Rating
5.0
(1)
Developer
Automation Lab
Maintained by CommunityActor stats
2
Bookmarked
226
Total users
32
Monthly active users
0.25 hours
Issues response
21 hours ago
Last modified
Categories
Features
Share
Trustpilot Scraper
Find companies on Trustpilot by keyword with emails, phones, addresses and TrustScore, or scrape Trustpilot reviews with ratings, dates, verification and company replies โ all in structured JSON, CSV, or Excel.
Diagnostic reporting
Failed operations send sanitized diagnostic input, exceptions, and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL query strings are removed; reports are retained for 30 days.
What does Trustpilot Scraper do?
Trustpilot Scraper extracts data from Trustpilot โ the world's largest consumer review platform with 300M+ reviews.
It works in two modes:
- Reviews mode โ scrape customer reviews for any business on Trustpilot. Get review text, star ratings (1-5), dates, author info, verification status, and company replies. Filter by star rating, language, verified reviews, reviews with a company reply, or an inclusive publication-date window, and sort by recency or relevance.
- Search mode โ find businesses by keyword for lead lists and market research. Get trust scores, review counts, websites, categories, and the emails, phone numbers and addresses that companies publish on Trustpilot.
Hybrid Playwright + HTTP extraction โ a browser opens the first page and handles anti-bot checks, then lightweight HTTP requests fetch additional pages. No API key is needed. The Actor uses 1024 MB memory and pay-per-result pricing.
Pair price monitoring with reputation monitoring
Use marketplace/product scrapers such as Amazon Scraper and Walmart Scraper to track prices and product signals, then run Trustpilot Scraper to monitor seller or brand reputation alongside that price data. Marketplace price movements show what changed; Trustpilot fields such as rating, text, publishedDate, isVerified, hasReply, replyText, and replyDate explain whether customers are raising quality, shipping, support, or trust concerns.
Trustpilot Scraper is the brand-reputation layer of an e-commerce monitoring bundle โ it does not scrape marketplace product prices itself.
Who is it for?
๐ข Brand managers and reputation teams
- Monitor your company's Trustpilot reviews daily
- Track star rating trends and review sentiment over time
- Get notified when negative reviews appear
๐ Market researchers and analysts
- Compare trust scores across competitors in your industry
- Analyze review distributions to find market gaps
- Study consumer sentiment patterns across categories
๐ผ Sales and business development teams
- Find companies by category with contact info (emails, phones, websites)
- Qualify leads by trust score and review volume
- Research potential partners before outreach
๐ค Data scientists and AI teams
- Build sentiment analysis datasets from real consumer reviews
- Train NLP models on verified vs. unverified review patterns
- Analyze reviewer behavior and review authenticity signals
๐ Competitive intelligence professionals
- Benchmark your trust score against competitors
- Track competitor review velocity and response rates
- Identify common complaints in competitor reviews
Why use this scraper?
- โก Efficient hybrid scraping โ Playwright loads the first page, then HTTP pagination retrieves up to 20 reviews per page using 1024 MB memory
- ๐ฐ Pay per result โ no monthly subscription. Pay only for reviews/businesses you actually scrape
- ๐ฆ 25+ fields per review โ title, text, rating, dates, author info, verification, company replies, likes
- ๐ข Rich business data โ trust score, stars, review count, website, email, phone, address, categories
- ๐ Search and discover โ find businesses by keyword across all Trustpilot categories
- ๐ Incremental date windows โ return only reviews published on, after, or before ISO date bounds
- ๐ Pagination built-in โ fetches every page Trustpilot shows without logging in (10 pages per listing), and continues through separate star-rating listings to go past the usual 200-review limit
- ๐ Multiple export formats โ JSON, CSV, Excel, XML via Apify API
- ๐ API + integrations โ connect to Google Sheets, Slack, Zapier, Make, webhooks
- ๐ Language, verified and reply filters โ each applied by Trustpilot itself, so filtered runs return full pages of matches
- ๐งพ Pay only for results โ a domain without a Trustpilot profile or a run with bad input costs nothing
- ๐ก๏ธ No API key needed โ works with Trustpilot's public pages, no authentication required
What data can you extract?
โญ Review data (25+ fields)
| Field | Description |
|---|---|
reviewId | Unique review identifier |
reviewUrl | Direct link to the review |
title | Review headline |
text | Full review text |
rating | Star rating (1-5) |
publishedDate | When the review was posted (ISO 8601) |
experienceDate | Date of the customer experience |
updatedDate | Last update date (if edited) |
authorName | Reviewer's display name |
authorLocation | Reviewer's location |
authorCountry | Reviewer's country code |
authorReviewCount | Total reviews by this author on Trustpilot |
authorImageUrl | Reviewer's profile image |
isVerified | Whether the review is verified |
verificationLevel | Verification status detail |
source | Review source (Organic, Invitation) |
language | Review language code |
likesCount | Number of "useful" votes |
hasReply | Whether the business replied |
replyText | Business reply text |
replyDate | Date of business reply |
businessName | Name of the reviewed business |
businessDomain | Domain of the reviewed business |
๐ข Business data (18+ fields)
| Field | Description |
|---|---|
businessId | Unique business identifier |
name | Business display name |
domain | Business domain (e.g., stripe.com) |
trustScore | Trustpilot trust score (0.0-5.0) |
stars | Star rating (0-5 in 0.5 increments) |
numberOfReviews | Total review count |
website | Business website URL |
email | Contact email |
phone | Contact phone |
address | Street address |
city | City |
country | Country |
zipCode | ZIP/postal code |
categories | Business categories (comma-separated) |
isClaimed | Whether the business has claimed their profile |
profileUrl | Trustpilot profile link |
logoUrl | Business logo/screenshot URL |
isPartial | true when the row comes from a page Trustpilot served without its full data (see Partial data) |
How much does it cost to scrape Trustpilot reviews?
This Actor uses pay-per-event pricing โ you pay only for what you scrape. No monthly Actor subscription is required. The one-time run-start charge is $0.001, taken only when the run delivers its first result, and each review or business result uses tiered pricing based on your Apify plan:
| Apify plan tier | Price per result |
|---|---|
| Free | $0.00345 |
| Bronze | $0.00300 |
| Silver | $0.00234 |
| Gold | $0.00180 |
| Platinum | $0.00120 |
| Diamond | $0.00084 |
Worked examples (Bronze tier, including the $0.001 start charge)
| Scenario | Results | Duration | Approximate charge |
|---|---|---|---|
| 20 reviews for 1 business | 21 | ~3s | $0.064 |
| 100 reviews for 1 business | 101 | ~8s | $0.304 |
| 200 reviews for 1 business | 201 | ~50s | $0.604 |
| Search for 30 businesses | 30 | ~13s | $0.091 |
Check the live Pricing tab for the authoritative price for your plan. Any platform credits included with your Apify account may offset these Actor charges.
How to scrape Trustpilot reviews
- Go to Trustpilot Scraper on Apify Store and click Try for free
- Select Reviews mode (default)
- Enter a business domain (e.g.,
www.amazon.com) or full Trustpilot URL - Optionally filter by star rating, publication date, or change sort order
- Set your max results limit (start with 20 to test); this limit counts matching reviews per business URL
- Click Start and wait for the run to complete
- Download your data in JSON, CSV, Excel, or connect via API
Search for businesses:
{"mode": "search","searchQueries": ["car insurance", "web hosting"],"maxResults": 50}
Scrape 1-star reviews only:
{"mode": "reviews","businessUrls": ["stripe.com", "paypal.com"],"reviewStars": 1,"reviewSort": "recency","maxResults": 100}
Collect reviews published during an incremental window:
{"mode": "reviews","businessUrls": ["www.amazon.com"],"reviewSort": "recency","publishedDateFrom": "2026-08-01","publishedDateTo": "2026-08-31T23:59:59Z","maxResults": 100}
Date bounds are inclusive. A date without a time uses the full UTC day (publishedDateFrom starts at 00:00:00.000 and publishedDateTo ends at 23:59:59.999). Reviews with missing or unparseable publication dates cannot match a bounded window. A valid window with no matching reviews still returns the business record rather than reporting an extraction failure.
What input parameters does Trustpilot Scraper accept?
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | reviews | Scraping mode: reviews or search |
businessUrls | string[] | โ | Business domains or Trustpilot URLs (reviews mode) |
reviewSort | string | recency | Sort reviews: recency or relevance |
reviewStars | integer | โ | Filter by star rating (1-5). Omit for all ratings |
languages | string[] | โ | Two-letter review languages such as ["en", "de"], or ["all"] for every language. maxResults is split evenly, and a language with too few reviews passes its share to the others. A code Trustpilot does not filter by is skipped and named in the status. Omit for Trustpilot's default view, usually English |
verifiedOnly | boolean | false | Only reviews Trustpilot marks as verified |
repliesOnly | boolean | false | Only reviews the company replied to |
publishedDateFrom | string | โ | Inclusive ISO date/date-time lower bound (reviews mode) |
publishedDateTo | string | โ | Inclusive ISO date/date-time upper bound (reviews mode) |
searchQueries | string[] | โ | Search keywords (search mode) |
maxResults | integer | 100 | Max reviews or businesses per query/URL. In Reviews mode each company also returns one business profile row, charged as one result |
An explicit domain search that Trustpilot redirects to a readable business profile returns that profile as one business result (not review rows). Only actual matching profile data is accepted; this does not add a search or profile-creation fallback to reviews mode.
A search query with a verified zero-match Trustpilot response succeeds with zero result rows and no business-result charge. An unavailable or unrecognizable search page still fails rather than being reported as an empty result.
In reviews mode, provide at least one domain (for example stripe.com) or Trustpilot review URL in businessUrls; a company name alone (for example stripe) is not a domain. In search mode, provide at least one nonblank searchQueries entry. Fields from the other mode are ignored. For API callers or schedules that omit all usable targets, the run finishes without dataset rows or charges, explains why in its status message, and writes INPUT_DIAGNOSTIC in its default key-value store with status: "invalid_input", mode, and reason. Correct the input and rerun. Access or extraction errors still fail the run.
Reviews require an existing readable Trustpilot profile. When the source explicitly identifies a profile as unavailable (a not-found page, or a profile Trustpilot removed for breaking its guidelines), the Actor skips retries and residential fallback for that target only and writes TARGET_DIAGNOSTICS in the run's default key-value store: { "mode": "reviews", "targets": [{ "status": "target_not_found", "domain": "example.com", "reason": "..." }] }. Diagnostics are not dataset rows and are not charged. Mixed batches retain useful results from available profiles. If all requested profiles are confirmed unavailable, the run succeeds with zero rows, no charge, and a status message that says so, so checking a list of domains one by one is safe. An HTTP 403/404 alone is not sufficient for this classification, and ambiguous or blocked pages retain bounded retries and honest failure semantics. The Actor does not create or register profiles.
Partial data
Occasionally Trustpilot serves a review page without its full page data, even after a retry with a fresh session. The Actor then returns what the page still shows from its server-rendered schema.org data and marks those rows isPartial: true; the run's status message says so and a DATA_QUALITY record in the default key-value store lists the affected profiles and fields. Unknown values are never guessed: on partial rows businessId, stars, isClaimed, isVerified and an unconfirmed likesCount are null, verificationLevel and source are empty, and categories holds the primary category only. Only rows from the affected first page are partial; later pages are complete. Rerun for complete data.
Output examples
Review output
{"type": "review","reviewId": "69b9dc68a4efd1d63401b289","reviewUrl": "https://www.trustpilot.com/reviews/69b9dc68a4efd1d63401b289","businessName": "Amazon","businessDomain": "www.amazon.com","title": "Excellent customer service","text": "Had an issue with my order and customer support resolved it within minutes...","rating": 5,"publishedDate": "2026-03-15T10:30:00.000Z","experienceDate": "2026-03-14T00:00:00.000Z","updatedDate": null,"authorName": "Jane Doe","authorLocation": "London, GB","authorCountry": "GB","authorReviewCount": 12,"authorImageUrl": "https://user-images.trustpilot.com/abc123/73x73.png","isVerified": true,"verificationLevel": "verified","source": "Invitation","language": "en","likesCount": 3,"hasReply": true,"replyText": "Thank you for your kind words, Jane!","replyDate": "2026-03-16T08:00:00.000Z","scrapedAt": "2026-03-18T12:00:00.000Z"}
Business search output
{"type": "business","businessId": "50489e6800006400051ae0d6","name": "Stripe","domain": "stripe.com","trustScore": 1.8,"stars": 2,"numberOfReviews": 16895,"website": "https://stripe.com","email": "https://support.stripe.com/contact","phone": null,"address": "510 Townsend Street","city": "San Francisco","country": "United States","zipCode": "94103","categories": "Payment Service","isClaimed": true,"profileUrl": "https://www.trustpilot.com/review/stripe.com","logoUrl": "//s3-eu-west-1.amazonaws.com/tpd/logos/50489e68.../0x0.png","scrapedAt": "2026-03-18T12:00:00.000Z"}
How do I get the best results?
- ๐ฏ Use domain names โ enter
stripe.comorwww.amazon.cominstead of full Trustpilot URLs - ๐ Filter by stars โ use
reviewStars: 1to find only negative reviews for competitor analysis - ๐ Sort by recency โ default sort gets the newest reviews first and can stop once pages are older than
publishedDateFrom - ๐
Use date windows for scheduled runs โ set inclusive
publishedDateFrom/publishedDateTobounds to avoid exporting an unchanged review history - ๐ข Start small โ test with
maxResults: 20before scaling up to thousands - ๐ Combine modes โ use search to discover businesses, then reviews to deep-dive into specific ones
- โฐ Schedule runs โ set up daily or weekly scrapes to track review trends over time
- ๐ฐ Cost optimization โ Trustpilot shows 20 reviews per page, so costs scale linearly with pages fetched
How to monitor Trustpilot reviews for your business
Trustpilot Scraper is ideal for setting up automated review monitoring โ so you always know what customers are saying, without checking manually.
Step-by-step setup:
- Open Trustpilot Scraper in Apify Console
- Enter your business domain (e.g.,
yourcompany.com) in Reviews mode - Set
reviewSort: recencyto get the newest reviews first - Set
publishedDateFromto the start of the period you need (and optionallypublishedDateTo) so only that publication window is returned - Set
maxResults: 20-50to keep each run fast and cheap - Enable Scheduled runs โ daily or weekly depending on your review volume
- Connect to Slack or Discord via integrations to get instant alerts on new reviews
- Optionally filter by
reviewStars: 1in a second scheduled run to catch negative reviews immediately
Pro tip: Run two scheduled scrapers in parallel โ one for all new reviews (for the full picture) and one filtered to 1-star only (for urgent reputation management). Example calculation: a one-result Bronze-tier run is about $0.004 ($0.001 start + $0.003 result).
Track competitors too: Set up the same monitoring for 2-3 competitor domains. Getting a side-by-side daily feed of your reviews vs. theirs reveals patterns in what customers value โ and where you're outperforming or falling behind.
How to export Trustpilot reviews to CSV
Exporting Trustpilot reviews to CSV takes under a minute:
From Apify Console (no code needed):
- Run the scraper with your target business domain
- Open the Dataset tab when the run finishes
- Click Export โ choose CSV
- Open in Excel, Google Sheets, or any BI tool
Via API (for automation):
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN" \--output trustpilot-reviews.csv
Auto-export to Google Sheets: Connect the scraper to Google Sheets via Apify's native integration. Every run automatically appends new rows to your spreadsheet โ no manual downloads, no copy-pasting.
Exported CSV columns include: reviewId, title, text, rating, publishedDate, authorName, authorLocation, isVerified, hasReply, replyText, businessName, and more.
This makes Trustpilot data immediately usable in pivot tables, sentiment dashboards, or CRM imports.
Integrations
Connect Trustpilot Scraper to your existing tools:
- ๐ Trustpilot Scraper โ Google Sheets โ export reviews to a spreadsheet for sentiment analysis and charting
- ๐ Trustpilot Scraper โ Slack/Discord โ get alerted when new 1-star reviews appear for your brand
- โก Trustpilot Scraper โ Zapier/Make โ trigger CRM updates when a high-value lead is found via search mode
- ๐ง Trustpilot Scraper โ Email โ receive weekly digest of competitor review summaries
- ๐ Webhooks โ push results directly to your API endpoint for real-time processing
- ๐ Scheduled runs โ monitor review trends with automatic daily/weekly scraping
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/trustpilot-scraper').call({mode: 'reviews',businessUrls: ['stripe.com'],reviewSort: 'recency',publishedDateFrom: '2026-08-01',publishedDateTo: '2026-08-31',maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("automation-lab/trustpilot-scraper").call(run_input={"mode": "reviews","businessUrls": ["stripe.com"],"maxResults": 100,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/automation-lab~trustpilot-scraper/runs" \-X POST \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "reviews", "businessUrls": ["stripe.com"], "maxResults": 100}'
Use with AI agents via MCP
Trustpilot Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client โ this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/trustpilot-scraper"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/trustpilot-scraper"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Scrape the latest 50 reviews for stripe.com on Trustpilot (use automation-lab/trustpilot-scraper)"
- "Search Trustpilot for 'car insurance' companies and find the ones with the best trust scores"
- "Compare Amazon and eBay Trustpilot ratings โ scrape 100 reviews from each and summarize the sentiment"
Learn more in the Apify MCP documentation.
Is it legal to scrape Trustpilot?
Scraping publicly available data from Trustpilot is generally legal. This actor only accesses public pages that any visitor can see without logging in.
Important:
- Respect Trustpilot's Terms of Service
- Comply with GDPR, CCPA, and other data protection regulations
- Use scraped data responsibly โ do not republish reviews as your own
- Consider the ethical implications of large-scale data collection
For more information, see Apify's guidance on web scraping legality.
FAQ
How fast is this scraper? Runtime depends on Trustpilot response times and anti-bot checks. A recent 20-review cloud run completed in about 38 seconds. Larger runs use HTTP pagination after the initial Playwright page, so they avoid launching a browser for every page.
How much does it cost to scrape 10,000 reviews?
At the current per-result rates, the Actor charge is about $34.50 on the Free tier or $30.00 on the Bronze tier, plus any additional result such as the business record. Higher Apify plan tiers have lower per-result prices; check the live Pricing tab for the authoritative rate. One company usually yields at most about 1,000 reviews per language on the default newest-first sort, because Trustpilot shows 10 pages per listing without a login; reach 10,000 by scraping several companies or adding languages.
Can I scrape reviews for any business on Trustpilot?
Yes โ any business that has a Trustpilot profile. Enter their domain name (e.g., stripe.com) or full Trustpilot URL.
Does this need a Trustpilot API key or account? No. The scraper extracts data from Trustpilot's public pages โ no authentication needed.
Why are some reviews missing the authorLocation field?
Not all Trustpilot reviewers share their location. When the reviewer hasn't set a location, this field returns null. The authorCountry field is more commonly available.
Why do I get fewer results than expected?
Trustpilot may have fewer total reviews for that business than your maxResults, or fewer it shows without logging in: 10 pages per listing, so about 200 reviews with a star filter and about 1,000 per language without one on the default newest-first sort. The run's status message gives the count delivered against your limit and the reason it stopped. The scraper stops when it reaches either your limit or the last available page. Check the numberOfReviews field on the business profile to see the total.
Related actors
- Google Maps Reviews Scraper โ extract reviews and ratings from Google Maps business listings
- TripAdvisor Scraper โ scrape reviews, ratings, and business details from TripAdvisor
- Google Maps Lead Finder โ find businesses with reviews and contact details on Google Maps
- Apple App Store Scraper โ scrape app reviews and ratings from the App Store
- Amazon Scraper โ extract product data and reviews from Amazon