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 per result delivered. Failed and empty results are never charged.
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. Failed and empty results are never charged.
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.
I Validated a Business Idea in 48 Hours by Mining 1-Star Reviews
Asking friends if they like your idea is not validation. The real signal is what people already pay for and still hate. Here is the exact flow: demand, unprompted complaints, funded incumbents, and the 1-star review clusters that become your product spec, run entirely from Claude via MCP.
Trustpilot Business Search: Discover Companies by Category with TrustScore Data
Search Trustpilot by category or keyword in Python to build company lists with TrustScore, review count and verification status, no login required.
Compare an App's App Store Reviews Across Countries
Read one app's App Store reviews in many countries in one run with App Store Reviews Scraper, then compare ratings and top complaints country by country.
Airbnb Scraper: Listing Prices, Ratings, and Availability Without the API
Airbnb has no public listings API. Here's how to pull nightly price, rating, superhost status and coordinates from Airbnb search results using Python.