Trustpilot Reviews Scraper — Ratings, Replies & Sentiment avatar

Trustpilot Reviews Scraper — Ratings, Replies & Sentiment

Pricing

from $2.50 / 1,000 review scrapeds

Go to Apify Store
Trustpilot Reviews Scraper — Ratings, Replies & Sentiment

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 days ago

Last modified

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

FieldTypeDescription
companyIdentifiersarray of stringCompanies to scrape. Accepts domains, Trustpilot review URLs, or company names. One per line in the Apify input UI.
maxReviewsPerCompanyintegerMaximum number of reviews to scrape per company. Set to 0 to collect all available reviews. Default: 100.
filterStarsarray of stringFilter reviews by star rating. Choose any combination of 1 to 5, or leave empty for all ratings.
filterLanguagestringISO 639-1 language code such as en, de, fr, es, or nl. Leave empty for all languages.
filterDateRangestringReview date range: last30days, last3months, last6months, last12months, or empty for all time.
sortBystringSort order for reviews: recency for newest first or relevance for most helpful first.
onlyVerifiedbooleanLimits results to verified purchases or verified invitations when enabled.
onlyWithRepliesbooleanLimits results to reviews that have a company reply when enabled.
includeCompanyInfobooleanAdds 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.

FieldTypeDescription
reviewIdstring or nullTrustpilot's unique identifier for the review.
reviewUrlstring or nullDirect link to the individual review on Trustpilot.
titlestring or nullReview headline written by the reviewer.
textstring or nullFull review body text.
ratingintegerStar rating from 1 to 5.
publishedAtstring or nullISO 8601 publication timestamp.
updatedAtstring or nullISO 8601 timestamp for the last review update.
experienceDatestring or nullDate of the customer experience.
languagestring or nullISO 639-1 language code of the review text.
isVerifiedbooleanIndicates whether the review is verified.
verificationLevelstring or nullVerification method such as VERIFIED_ORDER.
reviewSourcestring or nullCollection source such as InvitationLink or OrganicReview.
usefulVotesintegerNumber of users who found the review helpful.
reviewerDisplayNamestring or nullReviewer display name shown on Trustpilot.
reviewerCountrystring or nullISO 3166-1 alpha-2 country code of the reviewer.
reviewerTotalReviewsinteger or nullTotal number of Trustpilot reviews written by the reviewer.
reviewerAvatarUrlstring or nullURL of the reviewer's avatar image.
reviewerIdstring or nullTrustpilot reviewer identifier.
hasCompanyReplybooleanIndicates whether the company posted a reply.
companyReplyTextstring or nullFull company reply text.
companyReplyDatestring or nullISO 8601 timestamp of the company reply.
companyNamestring or nullCompany display name on Trustpilot.
companyDomainstring or nullPrimary company domain on Trustpilot.
companyTrustScorenumber or nullTrustpilot trust score on a 1.0 to 5.0 scale.
companyTotalReviewsinteger or nullTotal number of reviews the company has received.
companyCategoriesarray of string or nullBusiness categories listed on Trustpilot.
companyUrlstringDirect Trustpilot URL for the company review page.
sentimentLabelstringpositive, neutral, or negative based on the rating.
scraped_atstringISO 8601 timestamp when the record was scraped.
source_urlstringTrustpilot 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.com with 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:

  • sentimentLabel is computed from the star rating.
  • isVerified and verificationLevel help separate verified purchase or invitation-based reviews.
  • hasCompanyReply, companyReplyText, and companyReplyDate support reply analysis.
  • companyTrustScore, companyTotalReviews, and companyCategories provide company-level context when includeCompanyInfo is 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.