How to Scrape Trustpilot Reviews by Company Domain (Python Guide)
Trustpilot has no public API for review data. Learn how to pull business reviews, star ratings, trust scores, and business replies from any Trustpilot company page using Python.
The actor referenced in this article. Pay only for results delivered.
Trustpilot is one of the most trusted review platforms globally, with 260 million reviews across 800,000 businesses. Getting that data programmatically for competitor analysis or brand monitoring is straightforward once you know the approach.
Try it live: Trustpilot Reviews Scraper, 10 Fields, Replies, No Login. Pay only for results delivered, no result no charge.
What is available
Every Trustpilot business profile contains:
- TrustScore (1-5) and star distribution
- Total review count and verified review count
- Per-review data: reviewer name, star rating, title, body, date, date of experience, and the business reply if one exists
All reviews are publicly visible without creating a Trustpilot account.
Using the Apify actor
import apify_client
client = apify_client.ApifyClient('YOUR_APIFY_TOKEN')
run_input = {
"domain": "shopify.com", # company domain
"maxReviews": 500,
"filterByStars": None, # None = all, or [1, 2] for negative reviews
"sortBy": "recency",
}
run = client.actor('themineworks/trustpilot-reviews').call(run_input=run_input)
for review in client.dataset(run['defaultDatasetId']).iterate_items():
print(f"{'★' * review['stars']} — {review['title']}")
print(f" {review['body'][:100]}...")
print(f" — {review['reviewer_name']}, {review['date']}")
if review.get('business_reply'):
print(f" Reply: {review['business_reply'][:80]}...")
Competitor sentiment analysis
Compare how customers describe you vs. competitors:
companies = ['your-company.com', 'competitor-a.com', 'competitor-b.com']
all_reviews = {}
for domain in companies:
run = client.actor('themineworks/trustpilot-reviews').call(run_input={
"domain": domain,
"maxReviews": 200,
})
all_reviews[domain] = list(client.dataset(run['defaultDatasetId']).iterate_items())
avg = sum(r['stars'] for r in all_reviews[domain]) / len(all_reviews[domain])
print(f"{domain}: {avg:.2f} avg ({len(all_reviews[domain])} reviews)")
Negative review monitoring
Pull only 1 and 2-star reviews for complaint pattern analysis:
run_input = {
"domain": "your-company.com",
"filterByStars": [1, 2],
"maxReviews": 500,
"sortBy": "recency",
}
Tracking review velocity
Schedule weekly runs to track how review volume and score changes over time, a leading indicator of product or support quality shifts:
from datetime import datetime
import json
run_date = datetime.now().strftime('%Y-%m-%d')
results = list(client.dataset(run['defaultDatasetId']).iterate_items())
summary = {
"date": run_date,
"total_reviews": len(results),
"avg_rating": sum(r['stars'] for r in results) / len(results),
"trust_score": results[0].get('trust_score') if results else None,
}
print(summary)
Building a review training dataset
Trustpilot reviews with star ratings are a clean sentiment dataset for fine-tuning classifiers:
import csv
with open('trustpilot_training.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['text', 'stars', 'sentiment'])
writer.writeheader()
for r in results:
sentiment = 'positive' if r['stars'] >= 4 else 'negative' if r['stars'] <= 2 else 'neutral'
writer.writerow({'text': r['body'], 'stars': r['stars'], 'sentiment': sentiment})
Pricing
Pay per review returned. Zero charge on empty searches.
Explore the scraper referenced in this article: inputs, outputs, and pricing, then run it on Apify.
Frequently asked questions
Does Trustpilot have a public API for reviews? +
Trustpilot has a Business API but it is only available to businesses managing their own profiles. Public review data for any company requires scraping.
Can I scrape Trustpilot without creating an account? +
Yes. Review data on Trustpilot company pages is publicly visible without login. The scraper accesses it without any account or credentials.
What is a Trustpilot TrustScore? +
The TrustScore is a 1-5 rating calculated from all reviews using a Bayesian weighted average that accounts for review recency, volume, and verification status.
GitHub Repo Intelligence: Vet Any Dependency Before You Add It
Pull stars, forks, contributors, commit recency, latest release and full README for any public GitHub repo in one call. No token required, MCP-ready for agents doing dependency checks.
Bilibili Scraper: Video, Creator and Search Data in Python
Pull Bilibili videos by keyword, URL or creator ID: titles, view and like counts, duration, author stats. Plain HTTP, no cookies, no login required.
SEEK Jobs Scraper: Australian Job Listings in Python
How to pull SEEK.com.au job listings by keyword, location, work type and salary band in Python: title, company, salary range, apply link, no login or API key.