Trustpilot Review Extractor
Pricing
from $3.00 / 1,000 record scrapeds
Trustpilot Review Extractor
Scrapes company reviews from Trustpilot with pagination, date filtering, and deduplication.
Pricing
from $3.00 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
Reviewly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Trustpilot Reviews Scraper — Extract Company Reviews at Scale
Turn Trustpilot into a structured data source. This Apify Actor scrapes company reviews from Trustpilot — ratings, review text, dates, consumer names, and business replies — and delivers clean, ready-to-use JSON data.
- ✅ Scrape hundreds or thousands of reviews per company
- ✅ Filter by date to get only recent reviews
- ✅ Handles Trustpilot's anti-bot protection automatically
- ✅ Works on any Trustpilot company page (any language/subdomain)
📌 What This Actor Does
This Actor lets you extract Trustpilot company reviews without writing a single line of code. Point it at one or more Trustpilot company URLs, set your limits, and get a structured dataset of reviews delivered directly to your Apify storage.
Who is it for?
- Businesses monitoring their own or competitors' reputation
- Marketers collecting social proof and voice-of-customer data
- Researchers & analysts studying consumer sentiment across industries
- Developers building review aggregation pipelines or dashboards
- Agencies managing brand reputation for multiple clients
Real-world use cases:
- Track what customers say about your brand week over week
- Benchmark competitor sentiment across dozens of companies
- Feed reviews into an NLP pipeline for sentiment analysis
- Build a public-facing review widget powered by live data
- Alert your team when negative reviews appear after a product launch
✨ Key Features
- Multi-company support — scrape multiple Trustpilot pages in a single run
- Pagination handled automatically — goes through all review pages until the limit is hit
- Date filtering — set a
targetDateto only collect reviews from a specific period onward - Deduplication — reviews are deduplicated by ID, so you never get the same review twice
- Review limit — cap the number of reviews per company or scrape everything
- Business reply extraction — captures the company's official reply alongside the review
- WAF bypass — automatically solves Trustpilot's AWS WAF challenge
- Residential proxy support — uses Apify's residential proxy pool for reliable, unblocked access
- Full metadata — score, rating distribution, and company name included with every dataset item
🧠 Why This Actor is Different
Most Trustpilot scrapers break within days because Trustpilot actively blocks automated access via AWS WAF challenges. This Actor solves the WAF challenge using a real headless browser before making requests, so it keeps working even as Trustpilot's defenses update.
| Feature | This Actor | Generic scrapers |
|---|---|---|
| WAF bypass | ✅ Automatic | ❌ Breaks frequently |
| Date filtering | ✅ Built-in | ❌ Manual post-processing |
| Deduplication | ✅ Per run | ❌ Duplicates common |
| Business replies | ✅ Included | ❌ Often missing |
| Multi-company | ✅ Single run | ❌ One at a time |
| Residential proxies | ✅ Via Apify | ❌ Datacenter only |
⚙️ Input Configuration
Fields
| Field | Type | Required | Description |
|---|---|---|---|
startUrls | Array of URLs | ✅ Yes | One or more Trustpilot company review page URLs |
maxNumberOfReviews | Integer | No | Max reviews per company. 0 = no limit (scrape all) |
targetDate | String (YYYY-MM-DD) | No | Only scrape reviews on or after this date |
proxyConfiguration | Object | No | Proxy settings (Apify residential proxy recommended) |
Example Input (JSON)
{"startUrls": [{ "url": "https://fr.trustpilot.com/review/www.example.com" },{ "url": "https://www.trustpilot.com/review/www.another-company.com" }],"maxNumberOfReviews": 500,"targetDate": "2024-01-01","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Tips
- Any Trustpilot subdomain works —
fr.trustpilot.com,www.trustpilot.com,de.trustpilot.comare all accepted. The URL is normalized automatically. - Leave
maxNumberOfReviewsat0to scrape every review the company has. - Use
targetDatefor incremental runs — set it to the date of your last scrape to only collect new reviews. - Residential proxies are strongly recommended — they significantly reduce the chance of blocks on large runs.
📤 Output Format
Each dataset item represents one company and contains an entity object with company metadata and a reviews array with all scraped reviews.
Sample Output
{"entity": {"businessName": "Example Company","score": 4.2,"totalNumberOfReviews": 1284,"ratings": {"one": 45,"two": 30,"three": 89,"four": 210,"five": 910},"sourceUrl": "https://fr.trustpilot.com/review/www.example.com"},"reviews": [{"reviewId": "abc123def456","title": "Great experience overall","reviewBody": "The service was fast and the team was very helpful throughout the process.","rating": 5,"datetime": "2024-03-15T10:22:00.000Z","consumerName": "Marie Dupont","dateOfExperience": "2024-03-10T00:00:00.000Z","reviewUrl": "https://fr.trustpilot.com/reviews/abc123def456","reply": {"message": "Thank you for your kind words, Marie! We're glad we could help.","publishedDate": "2024-03-16T08:00:00.000Z"},"scrapedAt": "2024-05-17T14:30:00.000Z"}]}
Field Reference
Entity fields:
| Field | Description |
|---|---|
businessName | Company display name on Trustpilot |
score | Overall Trustpilot trust score (1–5) |
totalNumberOfReviews | Total review count on Trustpilot |
ratings | Breakdown of reviews by star rating (one through five) |
sourceUrl | The input URL used to scrape this company |
Review fields:
| Field | Description |
|---|---|
reviewId | Unique Trustpilot review ID |
title | Review headline |
reviewBody | Full review text |
rating | Star rating (1–5) |
datetime | Date the review was published (ISO 8601) |
consumerName | Reviewer's display name |
dateOfExperience | Date the reviewer experienced the service (ISO 8601) |
reviewUrl | Direct link to the review on Trustpilot |
reply | Company's official reply (object with message and publishedDate), or null |
scrapedAt | Timestamp of when this review was scraped (ISO 8601) |
▶️ How to Use
Option 1: Apify Console (No Code)
- Open the Actor in the Apify Store
- Click Try for free
- In the Input tab, add your Trustpilot company URLs under Company Review URLs
- Optionally set Max reviews per company and Filter reviews after date
- Click Start and wait for the run to finish
- Download your data from the Dataset tab as JSON, CSV, or Excel
Option 2: Apify API
curl -X POST \"https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{ "url": "https://fr.trustpilot.com/review/www.example.com" }],"maxNumberOfReviews": 200,"targetDate": "2024-01-01"}'
Option 3: Scheduled Runs (Monitoring)
- Go to Schedules in your Apify account
- Create a new schedule (e.g., every Monday at 8:00 AM)
- Attach this Actor with your input
- Use
targetDateset to the previous week's date for incremental collection - Connect to a webhook or integration (Slack, Google Sheets, etc.) for automatic alerts
📈 Use Cases
1. Competitor Reputation Monitoring
Scrape reviews for 5–10 competitors weekly. Track average scores, review volume, and sentiment trends over time. Identify what customers love — and hate — about competing products.
2. Brand Reputation Alerting
Run the Actor daily on your own company page. Use a webhook to trigger a Slack notification whenever a 1-star review is detected, allowing your support team to respond within hours.
3. Sentiment Analysis & NLP
Feed reviewBody fields into an NLP model (e.g., OpenAI, Hugging Face) to classify customer sentiment, extract feature requests, or categorize complaints by topic.
4. Review Aggregation Dashboard
Combine Trustpilot data with reviews from Google Maps, Indeed, and other platforms. Build a unified reputation dashboard for your business or for clients.
5. Market Research
Analyze reviews across an entire industry vertical. Identify recurring pain points, unmet needs, or emerging trends from thousands of authentic customer experiences.
🛠️ Advanced Tips
Incremental Scraping (Only New Reviews)
Set targetDate to the date of your last run. The Actor stops paginating as soon as it encounters a review older than that date, making incremental runs fast and cost-efficient.
Scraping All Reviews from a Large Company
Set maxNumberOfReviews to 0. The Actor will paginate through all pages until every review is collected. For companies with tens of thousands of reviews, use residential proxies and expect the run to take several minutes.
Proxy Configuration
Residential proxies are strongly recommended for large-scale scraping. You can control the country of the proxy via the apifyProxyCountry field:
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "FR"}}
Using a country that matches the Trustpilot subdomain (e.g., FR for fr.trustpilot.com) improves success rates.
Multi-Company Runs
You can scrape dozens of companies in a single Actor run by adding multiple URLs to startUrls. Each company gets its own dataset item. There is no need to run the Actor separately per company.
❓ FAQ & Troubleshooting
Q: The Actor fails or returns no data. What should I do? Enable residential proxies in the proxy configuration. Trustpilot blocks datacenter IPs aggressively. Residential proxies (via Apify) resolve most access issues.
Q: I'm getting fewer reviews than the company actually has. Why?
Make sure maxNumberOfReviews is set to 0 for unlimited collection. Also check if targetDate is set — it will stop scraping once reviews older than that date are encountered.
Q: Can I scrape reviews in a language other than French?
Yes. The Actor scrapes reviews with languages=all by default, so all languages are included regardless of the subdomain used in the URL.
Q: The review count in totalNumberOfReviews doesn't match what I scraped.
totalNumberOfReviews is the count reported by Trustpilot on the page. The number actually scraped may be lower if you set a maxNumberOfReviews limit or a targetDate filter.
Q: Does this Actor handle company replies?
Yes. If a company has replied to a review, the reply text and date are included in the reply field. If there is no reply, the field is null.
Q: How often can I run this Actor?
As often as you need. For monitoring use cases, a daily or weekly schedule is typical. Use targetDate for incremental runs to avoid re-scraping old data.
Q: Is this Actor affected when Trustpilot updates its WAF? The WAF bypass uses a real browser to solve the challenge, which is more resilient to updates than static token approaches. If you encounter repeated failures after a Trustpilot update, please open an issue.
💰 Pricing
This Actor uses a pay-per-result model — you only pay for what you actually get.
| Event | Price | When it's charged |
|---|---|---|
REVIEW_SCRAPED | $0.003 | Per review successfully scraped and pushed to the dataset |
Example costs:
| Run size | Total cost |
|---|---|
| 50 reviews | ~$0.25 |
| 500 reviews | ~$1.60 |
| 5,000 reviews | ~$15.10 |
📞 Support
Have a question, found a bug, or need a custom feature?
- 📧 Email: me@ahmedhrid.com
- 🐛 Issues: Open a ticket via the Apify Actor page
- 💬 For general Apify questions: Apify Community Discord