SEO TOOLSLEAD GENERATION

Trustpilot Review Analyzer

Scrape Trustpilot reviews with sentiment analysis. Returns TrustScore, ratings, response rates, and keyword trends for any business. Ideal for competitor research and brand monitoring.

Try on Apify Store
$0.15per event
1
Users (30d)
43
Runs (30d)
96
Actively maintained
Maintenance Pulse
$0.15
Per event

Maintenance Pulse

96/100
Last Build
Today
Last Version
2d ago
Builds (30d)
11
Issue Response
5h avg

Cost Estimate

How many results do you need?

business-analyzeds
Estimated cost:$15.00

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
business-analyzedCharged per business analyzed. Includes multi-page Trustpilot crawling, review extraction, sentiment analysis, and rating distribution.$0.15

Example: 100 events = $15.00 · 1,000 events = $150.00

Documentation

Scrape and analyze Trustpilot reviews for any business — no API key needed. Get TrustScores, star ratings, sentiment analysis, response rates, keyword trends, and full review text. Trustpilot has no public API for review data, making this the easiest way to extract review intelligence at scale.

Why use Trustpilot Review Analyzer?

Trustpilot hosts over 200 million reviews for 900,000+ businesses, but offers no public API for accessing this data. Manually reading through reviews is impractical. This actor scrapes publicly visible review pages, extracts structured data from Trustpilot's embedded JSON, and runs keyword-based sentiment analysis — all in one automated pipeline. Feed in domain names and get back a complete analysis with individual review records, aggregate statistics, and actionable sentiment breakdowns.

Features

  • Scrape reviews from any business listed on Trustpilot by domain name or Trustpilot URL
  • Extract TrustScore, star ratings, total review count, and business categories
  • Full review details: rating, title, text, author, date, country, verification status
  • Built-in sentiment analysis with positive/negative keyword extraction
  • Calculate response rates (how often the company replies to reviews)
  • Rating distribution breakdown (percentage of 1-5 star reviews)
  • Analyze multiple businesses in a single run with domain deduplication
  • Export to JSON, CSV, Excel, or HTML

Use Cases

Competitor benchmarking

Compare TrustScores, response rates, and sentiment across 5-10 competitors in one run. Export to a spreadsheet and chart rating distributions side-by-side.

Brand monitoring

Schedule weekly runs to track how your company's reviews and ratings change over time. Pipe results to Google Sheets via the Apify integration for a live dashboard.

Market research

Analyze customer pain points and satisfaction drivers across an entire industry vertical. Use the top negative keywords to identify unmet needs.

Due diligence

Assess a company's reputation before partnerships, investments, or acquisitions. Look at verified review rate, response rate, and sentiment trends.

Lead generation

Identify businesses with poor TrustScores (under 3.0) as prospects for your reputation management, customer service, or review platform product.

Content strategy

Mine the top positive and negative keywords from reviews to inform SEO content, FAQ pages, and marketing copy that mirrors real customer language.

How to Use

  1. Click Try for free on this actor's page
  2. Enter one or more business domains (e.g., amazon.com, shopify.com) or Trustpilot URLs
  3. Set the maximum number of reviews to scrape per business (default: 100)
  4. Click Start and wait for the run to complete
  5. Download your results from the Dataset tab in JSON, CSV, or Excel format

You can enter domains in any format — the actor automatically normalizes them:

  • amazon.com
  • www.amazon.com
  • https://www.trustpilot.com/review/amazon.com

Input Parameters

ParameterTypeRequiredDefaultDescription
businessesstring[]YesBusiness domains or Trustpilot URLs to analyze (e.g., apify.com, zapier.com)
maxReviewsPerBusinessintegerNo100Maximum reviews to scrape per business (1–5,000). Each page has ~20 reviews
includeReviewTextbooleanNotrueInclude full review text in output. Disable to reduce dataset size
proxyConfigurationobjectNoProxy settings for requests. Recommended for large scrapes to avoid rate limiting

Input Examples

Compare two SaaS competitors:

{
  "businesses": ["hubspot.com", "salesforce.com"],
  "maxReviewsPerBusiness": 200,
  "includeReviewText": true
}

Quick score check for many businesses (minimal data):

{
  "businesses": ["amazon.com", "ebay.com", "etsy.com", "walmart.com", "target.com"],
  "maxReviewsPerBusiness": 20,
  "includeReviewText": false
}

Deep analysis with proxy:

{
  "businesses": ["apify.com"],
  "maxReviewsPerBusiness": 2000,
  "includeReviewText": true,
  "proxyConfiguration": { "useApifyProxy": true }
}

Input Tips

  • Start with 20-50 reviews to validate the output format works for your pipeline before scaling up.
  • Disable review text if you only need aggregate scores and sentiment — cuts dataset size by ~80%.
  • Enable proxy for runs over 500 reviews to avoid Trustpilot rate limiting.
  • Batch competitors together — domain deduplication ensures each domain is crawled only once even if entered multiple times.

Output Example

Each business produces one result object containing the business summary, aggregate statistics, sentiment analysis, and all scraped reviews:

{
  "domain": "apify.com",
  "url": "https://www.trustpilot.com/review/apify.com",
  "found": true,
  "businessName": "Apify",
  "trustScore": 4.7,
  "stars": 5,
  "totalReviews": 184,
  "categories": ["Software Company"],
  "websiteUrl": "https://apify.com",
  "ratingDistribution": { "star5": 78, "star4": 12, "star3": 4, "star2": 2, "star1": 4 },
  "ratingDistributionPercent": { "star5": 78.0, "star4": 12.0, "star3": 4.0, "star2": 2.0, "star1": 4.0 },
  "averageRating": 4.58,
  "responseRate": 65.0,
  "verifiedRate": 42.0,
  "sentiment": {
    "positive": 85,
    "negative": 10,
    "neutral": 5,
    "positivePercent": 85.0,
    "negativePercent": 10.0,
    "neutralPercent": 5.0,
    "topPositiveKeywords": [{"keyword": "easy", "count": 12}, {"keyword": "support", "count": 8}],
    "topNegativeKeywords": [{"keyword": "expensive", "count": 3}]
  },
  "reviewsScraped": 100,
  "reviews": [
    {
      "id": "abc123",
      "rating": 5,
      "title": "Great scraping platform",
      "text": "Easy to use and well documented...",
      "publishedDate": "2024-11-15T10:30:00Z",
      "experiencedDate": "2024-11-10T00:00:00Z",
      "author": "John D.",
      "authorCountry": "US",
      "authorReviewCount": 3,
      "isVerified": true,
      "hasCompanyReply": true,
      "companyReplyText": "Thanks for the review!",
      "language": "en"
    }
  ],
  "analyzedAt": "2024-12-01T14:00:00Z"
}

Output Fields

Business-Level Fields

FieldTypeDescription
domainstringNormalized business domain
urlstringFull Trustpilot profile URL
foundbooleanWhether the business exists on Trustpilot
businessNamestringDisplay name from Trustpilot
trustScorenumberTrustpilot's official TrustScore (0–5)
starsnumberStar rating (1–5)
totalReviewsnumberTotal review count on Trustpilot
categoriesstring[]Business categories assigned by Trustpilot
websiteUrlstringBusiness website URL from their Trustpilot profile
ratingDistributionobjectCount of 1–5 star reviews in scraped sample
ratingDistributionPercentobjectPercentage breakdown of star ratings
averageRatingnumberMean rating calculated from scraped reviews
responseRatenumberPercentage of reviews with company replies
verifiedRatenumberPercentage of verified reviews
reviewsScrapednumberNumber of reviews actually collected
analyzedAtstringISO 8601 timestamp of analysis

Sentiment Fields

FieldTypeDescription
sentiment.positivenumberCount of positive reviews
sentiment.negativenumberCount of negative reviews
sentiment.neutralnumberCount of neutral reviews
sentiment.positivePercentnumberPositive review percentage
sentiment.negativePercentnumberNegative review percentage
sentiment.neutralPercentnumberNeutral review percentage
sentiment.topPositiveKeywordsarrayTop 10 positive keywords with frequency counts
sentiment.topNegativeKeywordsarrayTop 10 negative keywords with frequency counts

Review-Level Fields

FieldTypeDescription
idstringTrustpilot review ID
ratingnumberStar rating (1–5)
titlestringReview headline
textstring/nullFull review body (null if includeReviewText is false)
publishedDatestringWhen the review was posted (ISO 8601)
experiencedDatestring/nullWhen the customer's experience occurred
authorstringReviewer's display name
authorCountrystring/nullReviewer's country code (e.g., "US", "GB")
authorReviewCountnumber/nullTotal reviews written by this author
isVerifiedbooleanWhether the review is verified by Trustpilot
hasCompanyReplybooleanWhether the company replied to this review
companyReplyTextstring/nullThe company's reply text
languagestring/nullReview language code

Programmatic Access (API)

Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("ryanclinton/trustpilot-review-analyzer").call(run_input={
    "businesses": ["hubspot.com", "salesforce.com"],
    "maxReviewsPerBusiness": 200,
    "includeReviewText": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['businessName']}: TrustScore {item['trustScore']}, "
          f"{item['sentiment']['positivePercent']}% positive, "
          f"response rate {item['responseRate']}%")

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("ryanclinton/trustpilot-review-analyzer").call({
  businesses: ["hubspot.com", "salesforce.com"],
  maxReviewsPerBusiness: 200,
  includeReviewText: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
  console.log(`${item.businessName}: TrustScore ${item.trustScore}`);
  console.log(`  Sentiment: ${item.sentiment?.positivePercent}% positive`);
  console.log(`  Response rate: ${item.responseRate}%`);
});

cURL

# Start the actor run
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~trustpilot-review-analyzer/runs?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "businesses": ["hubspot.com", "salesforce.com"],
    "maxReviewsPerBusiness": 200,
    "includeReviewText": true
  }'

# Fetch results (replace DATASET_ID from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"

How It Works

The actor uses a three-phase approach:

Phase 1: Page Crawling

A CheerioCrawler fetches Trustpilot review pages. For each business, the actor:

  1. Normalizes the input (strips www., protocol, or extracts domain from a Trustpilot URL)
  2. Constructs the Trustpilot URL: https://www.trustpilot.com/review/{domain}
  3. Crawls page 1, then enqueues additional pages based on maxReviewsPerBusiness (20 reviews per page)

Phase 2: Data Extraction

Each page's HTML contains a <script id="__NEXT_DATA__"> tag with Trustpilot's server-side rendered JSON. The actor parses this to extract:

  • Business metadata: display name, TrustScore, stars, total reviews, categories, website URL
  • Pagination info: total pages available from filters.pagination.totalPages
  • Review records: rating, title, text, dates, consumer info, verification status, company reply

This approach is more reliable than DOM scraping because the __NEXT_DATA__ JSON contains the complete structured data that Trustpilot's React frontend uses to render the page.

Phase 3: Analysis

After all pages are crawled, the actor computes aggregate statistics for each business:

  • Rating distribution: counts and percentages of 1–5 star reviews from the scraped sample
  • Average rating: mean rating from scraped reviews (may differ from TrustScore for small samples)
  • Response rate: percentage of reviews that received a company reply
  • Verified rate: percentage of reviews with Trustpilot verification
  • Sentiment analysis: reviews are classified as positive (4–5 stars), negative (1–2 stars), or neutral (3 stars with keyword tiebreaker). The top 10 positive and negative keywords are extracted by frequency.

Sentiment Classification

RatingClassificationMethod
4–5 starsPositiveRating-based (automatic)
1–2 starsNegativeRating-based (automatic)
3 starsDependsKeyword analysis of review text — counts positive vs. negative keyword matches, falls back to neutral on tie

The actor uses ~40 positive keywords (excellent, amazing, easy, recommend, etc.) and ~40 negative keywords (terrible, scam, slow, expensive, etc.) for the keyword-based analysis.

How Much Does It Cost?

The Apify Free plan gives you $5 in monthly credits. This actor uses approximately:

ScenarioReviewsEstimated Cost
1 business, 100 reviews100~$0.05
1 business, 500 reviews500~$0.10
10 businesses, 100 reviews each1,000~$0.50
50 businesses, 200 reviews each10,000~$3.00
PlanMonthly CreditsApproximate Businesses (at 100 reviews)
Free$5~100 businesses
Starter ($49/mo)$49~1,000 businesses

Cost depends on the number of review pages crawled and proxy usage. Disabling review text has no impact on cost (it only reduces dataset storage).

Tips

  • Start small: Test with 1-2 businesses and 20-50 reviews to verify the output format works for your workflow.
  • Use proxies for large scrapes: Trustpilot may rate-limit requests. Enable proxy configuration for runs over 500 reviews.
  • Domain format is flexible: Enter amazon.com, www.amazon.com, or the full Trustpilot URL — all work.
  • Reduce dataset size: Disable "Include Full Review Text" if you only need ratings and metadata.
  • Batch multiple businesses: Analyze competitors side-by-side by entering multiple domains in a single run. Duplicate domains are automatically deduplicated.
  • Schedule regular runs: Use Apify Schedules to track reputation changes over time. Compare TrustScores week-over-week.
  • Filter by country: The authorCountry field lets you segment reviews by geography for market-specific insights.

Combine with Other Actors

ActorHow to combine
Multi-Platform Review AnalyzerAggregate reviews from Trustpilot alongside G2, Capterra, and other platforms for a complete reputation picture
Brand Protection MonitorMonitor brand mentions across the web alongside Trustpilot review sentiment
SaaS Competitive IntelligenceCombine review data with pricing, tech stack, and traffic data for full competitive analysis
Website Contact ScraperFind contact information for businesses with poor reviews — potential leads for your service
Company Deep ResearchDeep-dive into a company's full online presence including but beyond reviews
HubSpot Lead PusherPush businesses with low TrustScores to HubSpot as leads for outreach

Limitations

  • No API key needed — but Trustpilot may change their page structure at any time, which could temporarily break extraction until the actor is updated.
  • 20 reviews per page — Trustpilot paginates at 20 reviews. Scraping 5,000 reviews requires 250 page loads.
  • Sentiment is keyword-based — not AI/NLP-powered. It's fast and reliable for aggregate trends but won't catch sarcasm, nuance, or non-English sentiment.
  • No historical data — only reviews currently visible on Trustpilot. Deleted or hidden reviews are not accessible.
  • Rate limiting — large scrapes (1,000+ pages) may be throttled by Trustpilot. Use proxy configuration to mitigate.
  • English-optimized sentiment — the keyword lists are English. Reviews in other languages are classified by rating only.

Responsible Use

  • This actor only accesses publicly visible review data on Trustpilot.
  • Reviewer names and countries are public on Trustpilot but may be considered personal data under GDPR and similar regulations.
  • Do not use scraped reviews for purposes that violate Trustpilot's Terms of Service.
  • For guidance on data protection compliance, consult legal counsel regarding your jurisdiction and use case.
  • See Apify's guide on web scraping legality for general information.

FAQ

Q: Does this actor need a Trustpilot API key? A: No. Trustpilot does not offer a public API for review data. This actor scrapes the publicly visible review pages and extracts structured data from embedded JSON.

Q: How many reviews can I scrape per business? A: Up to 5,000 per business. The default is 100. Trustpilot shows 20 reviews per page, so 5,000 reviews requires 250 page loads.

Q: Can I analyze businesses not on Trustpilot? A: If a business has no Trustpilot page, the result will show "found": false with null values for all business fields.

Q: What sentiment analysis method is used? A: The actor uses a dual approach. Reviews rated 4-5 stars are automatically classified as positive; 1-2 stars as negative. For 3-star reviews, keyword frequency analysis determines the classification using ~80 sentiment keywords.

Q: How is TrustScore different from average rating? A: TrustScore is Trustpilot's proprietary score (displayed on their site). The averageRating is the arithmetic mean of the reviews you actually scraped — they may differ since TrustScore uses Trustpilot's own weighting algorithm across all reviews.

Q: Is it legal to scrape Trustpilot reviews? A: This actor only accesses publicly visible review data. For personal data considerations, consult legal counsel regarding GDPR and local regulations. See Apify's guide on web scraping legality.

Integrations

Connect this actor to your workflow:

  • Zapier — trigger automated actions when reviews change
  • Make — build multi-step pipelines with review data
  • Google Sheets — export directly for team analysis
  • Slack — get notified when competitor scores change
  • Apify API — programmatic access for custom integrations
  • Webhooks — POST results to your endpoint on completion

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try Trustpilot Review Analyzer?

Start for free on Apify. No credit card required.

Open on Apify Store