Trustpilot Reviews Reputation & Competitor Monitor avatar

Trustpilot Reviews Reputation & Competitor Monitor

Pricing

from $2.50 / 1,000 analyzed review or business summaries

Go to Apify Store
Trustpilot Reviews Reputation & Competitor Monitor

Trustpilot Reviews Reputation & Competitor Monitor

⭐ Monitor public Trustpilot reviews, compare competitors, detect reputation changes, surface urgent issues, and export evidence-based response priorities.

Pricing

from $2.50 / 1,000 analyzed review or business summaries

Rating

0.0

(0)

Developer

Daniel S.

Daniel S.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

⭐ Trustpilot Reviews Reputation & Competitor Monitor

Monitor public Trustpilot reviews, compare competitors, detect reputation changes, and turn customer feedback into an actionable response queue.

This standalone Apify Actor reads public Trustpilot review pages with a cost-efficient hybrid fetcher: lightweight HTTP first, then a managed Playwright browser only when Trustpilot presents a JavaScript challenge. It does not use a paid API or another Apify Actor.

🚀 What you get

  • ⭐ Business TrustScore, public review count, and rating distribution
  • 💬 Structured review-level records without reviewer profile data
  • 📈 Observed 30-day review velocity
  • 📣 Public business response rate
  • 🚨 Negative-review rate and urgent issue detection
  • 🧠 Deterministic sentiment and topic classification
  • 🏆 Competitor reputation leaderboard
  • 🔄 Changes versus the previous run
  • 🔎 Evidence links and response priorities
  • 📊 Apify Dataset views for leaderboard, urgent issues, reviews, and all data
  • 📄 Professional HTML and JSON reputation reports
  • 🗄️ Historical state stored in a named key-value store
  • 🌐 Retry, exponential backoff, and optional Apify/custom proxy support
  • 🛡️ Automatic browser fallback for Trustpilot WAF challenges

Who should use it?

  • Reputation management agencies
  • Customer-experience and support leaders
  • Competitive intelligence teams
  • SaaS, e-commerce, travel, fintech, and marketplace operators
  • Consultants preparing account reviews
  • Automation teams sending reputation alerts to Slack, email, Make, Zapier, or n8n

Quick start

Use a business domain:

{
"businesses": ["www.airbnb.com"],
"maxReviewsPerBusiness": 100,
"ratings": ["1", "2", "3", "4", "5"],
"competitorComparison": false,
"includeReviewText": true,
"topicKeywords": ["refund", "cancellation", "customer support"],
"historyKey": "airbnb-reputation-watch",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Or compare several public Trustpilot profiles:

{
"businesses": [
"https://www.trustpilot.com/review/www.airbnb.com",
"www.booking.com",
"www.vrbo.com"
],
"maxReviewsPerBusiness": 100,
"competitorComparison": true,
"includeReviewText": true,
"historyKey": "travel-platform-reputation"
}

The first business is treated as the primary brand in the input, while all businesses are evaluated by the same deterministic method.

Input

FieldTypeDefaultDescription
businessesstring[]required1–20 domains or full Trustpilot /review/ URLs
maxReviewsPerBusinessinteger100Maximum matching review records per business, up to 1,000
dateFromYYYY-MM-DDemptyInclusive lower publication-date filter
dateToYYYY-MM-DDemptyInclusive upper publication-date filter
ratingsstring[]["1","2","3","4","5"]Star ratings to export; numeric API values are also normalized at runtime
competitorComparisonbooleantrueBuild a cross-business leaderboard
includeReviewTextbooleantrueInclude public review titles, bodies, and business response text
topicKeywordsstring[]emptyAdditional business-specific phrases to detect
historyKeystringtrustpilot-reputation-monitorNamed KVS identifier reused across scheduled runs
proxyConfigurationobjectResidential proxyApify Proxy or custom proxy settings; direct mode remains available
requestTimeoutSecsinteger30Per-request timeout
maxConcurrencyinteger2Concurrent business profiles, maximum 5

Filtering behavior

Pages are requested newest first. Rating and date filters control the review rows exported to the Dataset. Business summary metrics use the recent reviews sampled while the Actor scans for matching results. The report clearly labels these values as sampled metrics.

When dateFrom is supplied, scanning stops after the crawler reaches reviews older than that date. A page safety limit prevents unexpectedly large runs.

Output design

The default Dataset contains two record types:

summary

One business-level row per successfully processed profile:

{
"recordType": "summary",
"businessDomain": "example.com",
"businessName": "Example Co",
"businessRating": 3.8,
"businessReviewCount": 1234,
"reviewsCollected": 100,
"reviewVelocity30d": 42,
"responseRate": 68,
"negativeReviewRate": 21,
"reputationScore": 72,
"competitorRank": 2,
"urgentIssueCount": 4,
"topTopics": [
{
"topic": "customer support",
"count": 18,
"negativeCount": 11
}
],
"changes": {
"hasPreviousRun": true,
"ratingDelta": -0.1,
"reviewCountDelta": 42,
"negativeRateDelta": 3.2,
"newReviewCount": 42
}
}

review

One evidence-level row per filtered public review:

{
"recordType": "review",
"businessDomain": "example.com",
"rating": 1,
"reviewTitle": "Refund never arrived",
"reviewText": "Customer support ignored my request...",
"publishedAt": "2026-07-20T10:00:00.000Z",
"hasBusinessResponse": false,
"sentiment": "negative",
"sentimentScore": -100,
"topics": ["customer support", "refund"],
"isUrgent": true,
"urgencyReasons": [
"Recent 1–2 star review has no public business response"
],
"reviewUrl": "https://www.trustpilot.com/reviews/..."
}

Reviewer names, avatars, countries, profile URLs, and reviewer activity are deliberately not collected.

Dataset views

  • 🏆 Competitor leaderboard: scores, ranks, changes, and priorities
  • 🚨 Urgent issues: low-star evidence needing action
  • 💬 Review intelligence: filtered, analyzed review rows
  • All structured data: complete API-friendly output

The default key-value store also contains:

  • REPUTATION_REPORT.json
  • REPUTATION_REPORT.html

Reputation score

reputationScore is deterministic and bounded from 0 to 100:

  • 55%: public business rating, or sampled average when unavailable
  • 20%: inverse sampled negative-review rate
  • 15%: sampled public response rate
  • 10%: urgent-issue penalty

It is a prioritization metric, not a statement of fact about a company and not a prediction of future performance.

Sentiment, topics, and urgency

No external AI API is required. Sentiment starts from the star rating and is adjusted by a small documented positive/negative vocabulary.

Built-in topics cover:

  • customer support
  • delivery and shipping
  • refunds
  • billing and payments
  • cancellations
  • product/service quality
  • security and fraud
  • account access
  • bookings
  • communication
  • website and app
  • staff
  • pricing

Custom topicKeywords are matched case-insensitively and added to the same output.

A review can become urgent when it is a recent unanswered 1–2 star review, a very recent one-star review, or contains critical language such as fraud, safety, identity theft, or data breach. Every flag includes evidence and an explicit reason.

Historical monitoring

Use the same historyKey every time:

{
"businesses": ["example.com", "competitor.com"],
"historyKey": "weekly-category-monitor"
}

The Actor opens a named key-value store and saves a compact REPUTATION_STATE_V1 snapshot. The next run calculates:

  • rating change
  • total review-count change
  • negative-rate change in percentage points
  • response-rate change in percentage points
  • observed 30-day velocity change
  • new review IDs in the current sample
  • newly added urgent-issue count

For reliable comparisons, keep the same businesses, filters, review cap, and history key.

Scheduling and alerts

  1. Save the Actor input as an Apify Task.
  2. Schedule it daily or weekly.
  3. Keep historyKey unchanged.
  4. Connect the Dataset or JSON report to Make, Zapier, n8n, a webhook, email, or a CRM.
  5. Trigger an alert when isUrgent is true, ratingDelta is negative, or negativeRateDelta exceeds your threshold.

Run locally

Requirements: Node.js 20 or newer.

npm install
export APIFY_LOCAL_STORAGE_DIR=./storage
npx --yes apify-cli run --purge --input-file examples/input-smoke.json

Alternatively, place the input in storage/key_value_stores/default/INPUT.json and run:

$npm start

Run offline tests:

$npm test

Run a real one-page smoke check:

$npm run smoke -- https://www.trustpilot.com/review/www.airbnb.com

Trustpilot commonly rejects datacenter IPs. To execute the same live smoke test through your Apify account:

APIFY_TOKEN=your_token \
SMOKE_USE_APIFY_PROXY=true \
SMOKE_PROXY_GROUPS=RESIDENTIAL \
npm run smoke -- https://www.trustpilot.com/review/www.airbnb.com

You can instead set SMOKE_PROXY_URL to a full custom proxy URL.

API example

curl "https://api.apify.com/v2/acts/YOUR_USERNAME~trustpilot-reputation-intelligence/runs?token=$APIFY_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"businesses": ["www.airbnb.com", "www.booking.com"],
"maxReviewsPerBusiness": 100,
"competitorComparison": true,
"historyKey": "travel-weekly"
}'

Pricing

The launch price uses predictable pay-per-event billing:

  • apify-actor-start: $0.00005 once per run
  • apify-default-dataset-item: $0.0025 per exported summary or review row

That equals $2.50 per 1,000 exported Dataset records, plus the negligible run-start event. A business with 20 matching reviews normally produces 21 records and costs about $0.05255. Failed requests and reviews removed by filters do not create paid Dataset items.

See PRICING.md for examples, margin guardrails, and the exact Apify configuration.

Reliability and responsible use

  • Only pages and review data intentionally exposed on public Trustpilot profiles are requested.
  • The Actor first uses lightweight HTTP. If Trustpilot serves its normal JavaScript challenge instead of the public page, it retries that same public URL in its own managed Playwright browser.
  • It does not log in, call private or paid APIs, depend on another Actor, solve CAPTCHAs, or attempt to circumvent access controls.
  • Requests use conservative concurrency, retries, and exponential backoff.
  • Apify Proxy is supported but optional. Direct and datacenter IPs may be rejected; a suitable proxy can improve reliability but cannot guarantee access.
  • Public website markup can change. Parser fixtures cover the supported HTML contract, and the live smoke script detects major markup changes.
  • Review velocity and rates are based on the sampled reviews available within the configured cap.
  • Use the Actor in accordance with applicable laws, Trustpilot's terms, and your legitimate business purpose.
  • This Actor is independent and is not affiliated with, endorsed by, or sponsored by Trustpilot.

Project structure

.actor/ Actor definition, input/output/dataset schemas, Dockerfile
src/input.js Input validation and URL normalization
src/fetch.js Hybrid HTTP/Playwright fetcher, retry, backoff, proxy support
src/parser.js Cheerio parser for server-rendered review pages
src/analysis.js Topics, sentiment, urgency, score, leaderboard, historical diff
src/history.js Named KVS state
src/output.js Dataset-friendly records
src/report.js JSON and HTML reports
src/main.js Apify orchestration
test/ Sanitized fixtures and offline tests
scripts/smoke.mjs Live one-page parser smoke test
examples/ Example inputs and outputs

License and trademarks

Private commercial project. Trustpilot and associated marks belong to their respective owners and are used descriptively to identify the public source being monitored.