Trustpilot Review Theme Miner
Pricing
Pay per usage
Trustpilot Review Theme Miner
Extracts public Trustpilot reviews and derives complaint and praise themes.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Brian Keefe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Production-oriented Apify Actor that reads public Trustpilot company review pages, extracts available review fields, and derives complaint themes, praise themes, sentiment, urgency, competitor mentions, product mentions, rating distributions, date distributions, and representative quotes.
Public-data posture
- Trustpilot-first only.
- Uses public company review pages only.
- Does not require login.
- Does not use private APIs, anti-bot bypasses, or hidden endpoints.
- Gracefully reports public-access failures such as
403,429, and network errors in output source evidence.
Input
The actor accepts either companyProfileUrls, domains, or both. Runtime validation enforces that at least one entry is provided.
{"companyProfileUrls": ["https://www.trustpilot.com/review/example.com"],"domains": ["example.org"],"maxReviews": 25,"ratings": [1, 2, 4, 5],"dateFrom": "2024-01-01","dateTo": "2024-12-31","includeRawReviews": true,"maxQuotesPerTheme": 2}
Input fields
companyProfileUrls: array of Trustpilot company review profile URLs.domains: array of bare domains, converted tohttps://www.trustpilot.com/review/<domain>.maxReviews: maximum reviews to include per company, capped at500.ratings: allowed star ratings from1to5.dateFrom: inclusive ISO date lower bound.dateTo: inclusive ISO date upper bound.includeRawReviews: whentrue, includes the extracted raw review records in the final dataset item.maxQuotesPerTheme: number of quotes kept per derived theme.
Output
Each dataset item contains:
input: normalized target domain and Trustpilot profile URL.company: detected company name and canonical profile URL.source: public-data evidence, page fetch statuses, retries, and stop reason.summary: review counts and applied filters.analysis.sentiment: positive, neutral, negative counts and average rating.analysis.complaintThemes: negative-rating themes with evidence and representative quotes.analysis.praiseThemes: positive-rating themes with evidence and representative quotes.analysis.urgencySignals: urgent complaint evidence.analysis.competitorMentions: mentions extracted from phrases likevs,versus, orcompared to.analysis.productMentions: recurring product or experience terms.analysis.ratingDistribution: counts for ratings1through5.analysis.dateDistribution: monthly review counts inYYYY-MMform.analysis.representativeQuotes: overall positive and negative quote samples.reviews: included only whenincludeRawReviewsistrue.
See examples/sample-input.json and examples/sample-output.json.
Extraction notes
- The parser prioritizes public Trustpilot review-card HTML and JSON-LD review nodes when present.
- Extracted review fields include title, body, rating, date, reviewer metadata when available, and the source URL.
- Pagination is attempted via
?page=<n>URLs while reviews remain and public pages continue to return content.
Limitations
- Trustpilot can rate-limit or block public access. The actor surfaces those events in
source.pageFetchesand stops cleanly. - Public page structures can change. The parser is intentionally narrow and relies on public review cards and public JSON-LD.
- Theme derivation is heuristic. It is deterministic and maintainable, but not a substitute for a bespoke NLP model.
- Competitor and product mention extraction is pattern-based and may miss implicit references.
Local usage
Install dependencies:
$npm install
Run the deterministic smoke test:
$npm test
Run locally with Apify input storage or environment-provided input:
$npm start
Publish
With the Apify CLI authenticated:
$apify push