Trustpilot Reviews Scraper — Ratings, Replies & Sentiment
Pricing
from $2.50 / 1,000 review scrapeds
Trustpilot Reviews Scraper — Ratings, Replies & Sentiment
Extract Trustpilot reviews in bulk — rating, text, reviewer, date, verified status, company reply, trust score, and sentiment label MCP-ready. $2.50/1K.
Pricing
from $2.50 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Trustpilot Reviews Scraper is an Apify Actor for analysts, builders, and AI agents that need structured Trustpilot review data from one or more companies. It accepts a company domain, a full Trustpilot review URL, or a company name, and returns one record per review. Each record can include the review text, star rating, reviewer details, publication dates, verification status, company reply, trust score, sentiment label, and source URL. The Actor is usable through Apify MCP and writes structured items to the default dataset.
Best fit and connected workflows
This Actor fits workflows that start with a company identifier and end with review-ready structured data:
- Brand monitoring for a single company or a list of companies
- Competitor research using domains, Trustpilot URLs, or company names
- Review analysis flows that group by rating, verified status, reply status, or sentiment
- AI agent workflows that summarize customer feedback or route reviews by topic
- Lead generation workflows that look at public company reputation signals
When you already have a Trustpilot page, pass the page URL directly. When you only have a company name or domain, the Actor resolves it to the matching Trustpilot review page and extracts the reviews from there.
Practical scenario
Maya, a customer insights analyst, starts with postmarkapp.com and wants recent verified reviews in English that include company replies. She sets maxReviewsPerCompany to 50, enables onlyVerified, and enables onlyWithReplies. The returned records include rating, reviewerDisplayName, publishedAt, companyReplyText, companyTrustScore, and sentimentLabel. Maya uses those fields to review the themes behind the feedback and then shares the reviewUrl links with her support team for follow-up.
Input fields
| Field | Type | Description |
|---|---|---|
companyIdentifiers | array of string | Companies to scrape. Accepts domains, Trustpilot review URLs, or company names. One per line in the Apify input UI. |
maxReviewsPerCompany | integer | Maximum number of reviews to scrape per company. Set to 0 to collect all available reviews. Default: 100. |
filterStars | array of string | Filter reviews by star rating. Choose any combination of 1 to 5, or leave empty for all ratings. |
filterLanguage | string | ISO 639-1 language code such as en, de, fr, es, or nl. Leave empty for all languages. |
filterDateRange | string | Review date range: last30days, last3months, last6months, last12months, or empty for all time. |
sortBy | string | Sort order for reviews: recency for newest first or relevance for most helpful first. |
onlyVerified | boolean | Limits results to verified purchases or verified invitations when enabled. |
onlyWithReplies | boolean | Limits results to reviews that have a company reply when enabled. |
includeCompanyInfo | boolean | Adds company metadata such as trust score, total review count, categories, and domain to each record. |
Focused JSON example
{"companyIdentifiers": ["postmarkapp.com","https://www.trustpilot.com/review/apple.com","Spotify"],"maxReviewsPerCompany": 25,"filterStars": ["4","5"],"filterLanguage": "en","filterDateRange": "last3months","sortBy": "recency","onlyVerified": true,"onlyWithReplies": false,"includeCompanyInfo": true}
Output fields
The Actor writes review records to the default dataset. Each item follows the live dataset contract and can be read back through the Apify API.
| Field | Type | Description |
|---|---|---|
reviewId | string or null | Trustpilot's unique identifier for the review. |
reviewUrl | string or null | Direct link to the individual review on Trustpilot. |
title | string or null | Review headline written by the reviewer. |
text | string or null | Full review body text. |
rating | integer | Star rating from 1 to 5. |
publishedAt | string or null | ISO 8601 publication timestamp. |
updatedAt | string or null | ISO 8601 timestamp for the last review update. |
experienceDate | string or null | Date of the customer experience. |
language | string or null | ISO 639-1 language code of the review text. |
isVerified | boolean | Indicates whether the review is verified. |
verificationLevel | string or null | Verification method such as VERIFIED_ORDER. |
reviewSource | string or null | Collection source such as InvitationLink or OrganicReview. |
usefulVotes | integer | Number of users who found the review helpful. |
reviewerDisplayName | string or null | Reviewer display name shown on Trustpilot. |
reviewerCountry | string or null | ISO 3166-1 alpha-2 country code of the reviewer. |
reviewerTotalReviews | integer or null | Total number of Trustpilot reviews written by the reviewer. |
reviewerAvatarUrl | string or null | URL of the reviewer's avatar image. |
reviewerId | string or null | Trustpilot reviewer identifier. |
hasCompanyReply | boolean | Indicates whether the company posted a reply. |
companyReplyText | string or null | Full company reply text. |
companyReplyDate | string or null | ISO 8601 timestamp of the company reply. |
companyName | string or null | Company display name on Trustpilot. |
companyDomain | string or null | Primary company domain on Trustpilot. |
companyTrustScore | number or null | Trustpilot trust score on a 1.0 to 5.0 scale. |
companyTotalReviews | integer or null | Total number of reviews the company has received. |
companyCategories | array of string or null | Business categories listed on Trustpilot. |
companyUrl | string | Direct Trustpilot URL for the company review page. |
sentimentLabel | string | positive, neutral, or negative based on the rating. |
scraped_at | string | ISO 8601 timestamp when the record was scraped. |
source_url | string | Trustpilot page URL used to produce the record. |
Illustrative JSON record
{"reviewId": "64a2f1c3e4b09d001a7b3e12","reviewUrl": "https://www.trustpilot.com/reviews/64a2f1c3e4b09d001a7b3e12","title": "Excellent customer service","text": "I had an issue with my order and the support team resolved it within 2 hours. Very impressed.","rating": 5,"publishedAt": "2025-11-14T09:21:00.000Z","updatedAt": null,"experienceDate": "2025-11-10T00:00:00.000Z","language": "en","isVerified": true,"verificationLevel": "VERIFIED_ORDER","reviewSource": "InvitationLink","usefulVotes": 3,"reviewerDisplayName": "Sarah M.","reviewerCountry": "US","reviewerTotalReviews": 12,"reviewerAvatarUrl": "https://user-images.trustpilot.com/64a2f1c3/73x73.png","reviewerId": "5e4b2a1c3d001a7b3e12","hasCompanyReply": true,"companyReplyText": "Thank you for your kind words! We're thrilled to hear you had a great experience.","companyReplyDate": "2025-11-15T10:00:00.000Z","companyName": "Postmark","companyDomain": "postmarkapp.com","companyTrustScore": 4.6,"companyTotalReviews": 2847,"companyCategories": ["Email Service Provider","Software Company"],"companyUrl": "https://www.trustpilot.com/review/postmarkapp.com","sentimentLabel": "positive","scraped_at": "2026-04-13T10:00:00.000Z","source_url": "https://www.trustpilot.com/review/postmarkapp.com?page=1"}
How it works
The Actor accepts one or more company identifiers and resolves each input to the correct Trustpilot review page. It then extracts review records in bulk and stores them in the default dataset. The live contract uses the ts-crawlee-cheerio template, sets 2048 MB as the default memory, and includes residential proxy plus session rotation in the changelog. The dataset overview view surfaces company name, rating, sentiment, review title, review text, published date, reviewer details, verification status, reply status, trust score, and review link.
Pricing
This Actor uses Pay per event pricing plus Apify platform usage. The live contract includes two charged events:
- Actor Start
- Review Scraped
The main billable unit is each review scraped. For example, scraping one thousand reviews means one thousand Review Scraped events, plus one Actor Start event for the run. For current pricing details, open the live Pricing tab on the Actor page.
Use with AI agents (MCP)
This Actor is an Apify Actor usable through Apify MCP. It returns structured Trustpilot review records that agents can inspect, summarize, classify, or route by metadata.
Actor identity: khadinakbar/trustpilot-reviews-scraper
Pull Trustpilot reviews for
postmarkapp.comwith recent sorting, verified reviews only, and company replies included. Return the review records, preserve the source URLs, and include the company metadata fields for provenance.
Output interpretation and scope guidance:
sentimentLabelis computed from the star rating.isVerifiedandverificationLevelhelp separate verified purchase or invitation-based reviews.hasCompanyReply,companyReplyText, andcompanyReplyDatesupport reply analysis.companyTrustScore,companyTotalReviews, andcompanyCategoriesprovide company-level context whenincludeCompanyInfois enabled.- Pagination is handled by the Actor, so an agent can request a company and receive multiple review records without modeling page flow.
- Cost guidance follows the same Pay per event structure as the Apify run, with each review scraped counted as one billed event.
Run with the Apify API
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/trustpilot-reviews-scraper').call({companyIdentifiers: ['postmarkapp.com'],maxReviewsPerCompany: 10,sortBy: 'recency',onlyVerified: true,});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(`Loaded ${dataset.items.length} review records`);console.log(dataset.items[0]);
Best results and outcome guidance
Use company domains, Trustpilot URLs, or company names as they appear in your source list. If your workflow focuses on customer sentiment, rating, sentimentLabel, and hasCompanyReply are useful first-pass fields. If your workflow needs reviewer context, add reviewerCountry, reviewerTotalReviews, and isVerified. If you are comparing company-level reputation, keep includeCompanyInfo enabled so each record includes companyTrustScore, companyTotalReviews, and companyCategories.
Design note
I found that the dataset contract requires rating, isVerified, hasCompanyReply, sentimentLabel, scraped_at, and source_url in every record, which makes those fields the stable core of each persisted item.
FAQ
How should I route input if I only have a company name?
Use companyIdentifiers with the company name. The Actor resolves the name to the matching Trustpilot page.
Can I combine multiple company identifiers in one run?
Yes. Put one domain, Trustpilot URL, or company name per line in companyIdentifiers.
Which fields are most useful for reply analysis?
hasCompanyReply, companyReplyText, companyReplyDate, rating, and sentimentLabel work well together.
How can I focus on recent reviews?
Set sortBy to recency and use filterDateRange such as last30days or last3months.
How can I keep the output compact?
Set includeCompanyInfo to false when you only need review content and reviewer-level fields.
Focused standalone workflow
This Actor is designed as a focused standalone workflow.
Responsible use
Use this Actor for lawful research, monitoring, analysis, and automation involving publicly available Trustpilot review pages. Follow applicable laws, Trustpilot terms, and data protection requirements for your use case. Keep provenance fields such as reviewUrl, companyUrl, and source_url available so downstream users can trace each record back to its source.