Trustpilot Scraper API - Reviews, Ratings & Business Search avatar

Trustpilot Scraper API - Reviews, Ratings & Business Search

Pricing

from $0.40 / 1,000 results

Go to Apify Store
Trustpilot Scraper API - Reviews, Ratings & Business Search

Trustpilot Scraper API - Reviews, Ratings & Business Search

Scrape Trustpilot reviews, ratings & business info by domain or keyword. 30+ fields per review: text, stars, dates, language, replies. HTTP only.

Pricing

from $0.40 / 1,000 results

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

1

Bookmarked

10

Total users

4

Monthly active users

5 days ago

Last modified

Share

Trustpilot Reviews Scraper — Reviews, Ratings, Business Search and Contact Info

Useful? Leave a review — it takes 10 seconds and is the single biggest thing that helps other brand managers, market researchers and lead-gen teams find this Trustpilot scraper.

A production-grade Trustpilot scraper that extracts reviews, ratings, TrustScores, business profiles and business contact information from Trustpilot.com, the world's largest public consumer review platform with 300M+ reviews across 1M+ businesses. Built for brand managers, competitive analysts, reputation-monitoring SaaS, e-commerce teams, data journalists, B2B lead-gen operators and ML engineers who need structured Trustpilot data at scale — in JSON, CSV, Excel or XML, from any business domain such as shopify.com, airbnb.com, tesla.com, amazon.com, walmart.com, nike.com or your own competitors.

No Trustpilot API key, no login, no headless browser, no Puppeteer, no Playwright. Pure HTTP with triple-fallback extraction (__NEXT_DATA__ → JSON-LD → HTML) so your pipeline keeps working when Trustpilot ships a frontend tweak. Works in two modes — reviews and business search — so a single actor covers reputation monitoring, competitor research and B2B lead generation.

✨ Why use this scraper

Given a list of Trustpilot business URLs or plain domains, this scraper walks Trustpilot's review pages, extracts every reviewer field Trustpilot exposes publicly, and returns structured JSON — review text, star rating, author profile, verification status, language, date, company reply, and the business's own TrustScore and contact block. Every run hits Trustpilot live, so you always get current reviews and ratings at the moment of the request.

In reviews mode you pass a list of businesses and filter by star rating, language, date range (30 days, 3 months, 6 months, 12 months), verified-only and sort order (recency or relevance). In search mode you pass keywords (e.g. "web hosting", "car insurance", "crm software") and get back matching Trustpilot business profiles including email, phone, address, website, TrustScore and category — ideal for B2B lead generation at scale.

Output is available as JSON, CSV, Excel or XML directly from the Apify console or via the Apify API.

📤 Output fields

The output uses a tagged recordType so reviews, business-info records and search-result records can share a single dataset.

Review fields (28 fields)

FieldTypeDescription
recordTypestringAlways "review"
reviewIdstringUnique Trustpilot review identifier
reviewUrlstringDirect link to the review on Trustpilot
businessNamestringBusiness display name (e.g. "Amazon")
businessDomainstringDomain (e.g. amazon.com)
titlestringReview headline
textstringFull review body text
ratingintegerStar rating (1–5)
publishedDatestringWhen the review was posted (ISO 8601)
experienceDatestringDate of the reviewed experience
updatedDatestringWhen the review was last edited
authorIdstringUnique reviewer profile ID on Trustpilot
authorNamestringReviewer's display name
authorLocationstringReviewer's location when shared
authorCountrystringCountry code (e.g. US, GB, DE, IN)
authorReviewCountintegerTotal reviews written by this author
authorImageUrlstringReviewer's profile image URL
isVerifiedbooleanWhether the review is verified
verificationLevelstringVerification detail (verified, not-verified)
sourcestringSubmission source (Organic, InvitationEmail, BasicLink)
languagestringReview language code (en, es, de, fr…)
likesCountintegerNumber of "useful" votes on the review
hasReplybooleanWhether the business replied
replyTextstringBusiness reply text
replyDatestringDate of business reply
replyUpdatedDatestringDate the reply was last edited
scrapedAtPageNumberintegerTrustpilot page where the review was found
scrapedAtstringTimestamp when the record was produced

Business-info fields (14 fields)

FieldTypeDescription
recordTypestringAlways "business_info"
businessUnitIdstringTrustpilot's unique business unit ID
businessNamestringCompany display name
domainstringDomain (e.g. amazon.com)
trustScorenumberTrustScore (e.g. 4.2)
overallRatingnumberStar rating (1–5)
totalReviewsintegerTotal review count on Trustpilot
isCompanyVerifiedbooleanWhether the company claimed their profile
categoriesarrayBusiness categories (e.g. "Shoe Store", "Electronics")
businessUrlstringFull Trustpilot profile URL
websiteUrlstringCompany's own website URL
phonestringBusiness phone number when publicly listed
emailstringBusiness email address when publicly listed
addressobjectstreet, city, zipCode, country

Business-search fields (18 fields — search mode)

FieldTypeDescription
recordTypestringAlways "business_search"
searchKeywordstringKeyword used to find this business
businessUnitIdstringTrustpilot's unique business unit ID
businessNamestringCompany display name
domainstringBusiness domain
trustScorenumberTrustScore (0.0–5.0)
starsnumberStar rating (0–5 in 0.5 increments)
totalReviewsintegerTotal review count
websiteUrlstringCompany website URL
emailstringContact email
phonestringContact phone number
addressstringStreet address
citystringCity
countrystringCountry
zipCodestringZIP / postal code
categoriesarrayBusiness categories
isClaimedbooleanWhether the business has claimed their Trustpilot profile
profileUrlstringFull Trustpilot profile URL
logoUrlstringBusiness logo image URL

🎯 Use cases

  • Brand reputation monitoring — Schedule a daily run for your own domain, push results into Postgres or Snowflake, and alert the CX team whenever rating <= 2 or when weekly review volume spikes. Trustpilot is often the #1 non-Google review surface your customers see before buying.
  • Competitor analysis and market research — Pass 10 competitor domains in a single run, filter by filterDate: "last3months", and compare TrustScore, review volume and complaint patterns. Works for e-commerce, SaaS, banking, insurance and hospitality verticals.
  • B2B lead generation by industry — Use search mode with keywords like "web hosting", "crm software", "bookkeeping services" and extract the email, phone, websiteUrl and address fields per matched business. Great for outbound SDR teams, niche B2B agencies and list-building services.
  • E-commerce aggregator content — Build a best-of-category page (e.g. "top 10 mattress brands by TrustScore") with live, deep-linked reviews. Set includeBusinessInfo: true and use the returned businessUrl for citation links.
  • Customer-voice input for ML pipelines — Feed structured reviews into sentiment analysis, topic modelling or fine-tuning pipelines. The 28 review fields give you author reputation (authorReviewCount), recency (publishedDate), reply behaviour (hasReply), and moderation metadata (isVerified, source) out of the box.
  • Investor / equity research — Track TrustScore and review volume month over month as a leading indicator of consumer sentiment for publicly-traded retailers, D2C brands and online services.
  • Public-relations and crisis response — Run an hourly scrape for your brand and trigger a PagerDuty alert on sudden bursts of negative reviews — often the first visible sign of an ops issue or a social-media firestorm.

🚀 How to use

Scrape reviews for one business

{
"mode": "reviews",
"businessUrls": ["amazon.com"],
"maxReviews": 100,
"sortBy": "recency"
}

Scrape 1-star reviews from a competitor

{
"mode": "reviews",
"businessUrls": ["competitor.com"],
"maxReviews": 500,
"filterRating": "1",
"sortBy": "recency"
}

Perfect for finding the exact complaints your sales team should neutralize on a competitive deal — or your CX team should proactively fix in your own product.

Compare multiple businesses in one run

{
"mode": "reviews",
"businessUrls": ["shopify.com", "bigcommerce.com", "wix.com"],
"maxReviews": 200,
"sortBy": "recency",
"filterLanguage": "en"
}

Each row includes businessDomain so you can trivially group and compare in SQL, pandas or a spreadsheet.

Scrape all Spanish-language reviews of a brand

{
"mode": "reviews",
"businessUrls": ["airbnb.com"],
"maxReviews": 0,
"filterLanguage": "es"
}

maxReviews: 0 scrapes every available review. Combine with filterLanguage and filterDate to keep the run focused.

Find businesses by keyword (search mode)

{
"mode": "search",
"searchKeywords": ["web hosting", "car insurance"],
"maxSearchResults": 50
}

Returns matching businesses with email, phone, address, website, TrustScore and category — a ready-to-use B2B contact list filtered by Trustpilot's own industry taxonomy.

📥 Input

ParameterTypeDefaultDescription
modestring"reviews""reviews" to scrape reviews, "search" to find businesses by keyword
businessUrlsarray["amazon.com"]Trustpilot URLs or plain domains (reviews mode)
searchKeywordsarray[]Keywords to find businesses (search mode)
maxSearchResultsinteger20Max businesses per keyword in search mode (1–200)
maxReviewsinteger100Max reviews per business. Set 0 for all reviews.
filterRatingstring"all"Filter by stars: "all", "1", "2", "3", "4", "5"
sortBystring"recency""recency" (newest first) or "relevance"
filterLanguagestring""Language code: en, es, de, fr, pt, it, nl, ja, ko… Empty = all
filterDatestring""Date range: "last30days", "last3months", "last6months", "last12months". Empty = all time
onlyVerifiedbooleanfalseOnly keep verified reviews
includeCompanyReplybooleantrueInclude business reply text and dates
includeBusinessInfobooleantrueInclude a business-info summary record per domain

📋 Output example

Review record

{
"recordType": "review",
"reviewId": "69ca869e845138cac088b1b7",
"reviewUrl": "https://www.trustpilot.com/reviews/69ca869e845138cac088b1b7",
"businessName": "Amazon",
"businessDomain": "amazon.com",
"title": "Good products nice",
"text": "Good products, fast delivery, and easy returns.",
"rating": 5,
"publishedDate": "2026-03-30T16:20:14.000Z",
"experienceDate": "2026-03-30T00:00:00.000Z",
"updatedDate": null,
"authorId": "697c86936a04cac3fd6889d7",
"authorName": "Jo Sarath",
"authorLocation": null,
"authorCountry": "IN",
"authorReviewCount": 3,
"authorImageUrl": "https://user-images.trustpilot.com/697c86936a04cac3fd6889d7/73x73.png",
"isVerified": false,
"verificationLevel": "not-verified",
"source": "Organic",
"language": "en",
"likesCount": 0,
"hasReply": false,
"replyText": null,
"replyDate": null,
"replyUpdatedDate": null,
"scrapedAtPageNumber": 1,
"scrapedAt": "2026-03-30T19:26:40.667Z"
}

Business-info record

{
"recordType": "business_info",
"businessUnitId": "46ad346800006400050092d0",
"businessName": "Amazon",
"domain": "amazon.com",
"trustScore": 1.7,
"overallRating": 1.5,
"totalReviews": 44789,
"isCompanyVerified": true,
"categories": ["Shoe Store", "Hobby Store", "Clothing Store", "Book Store"],
"businessUrl": "https://www.trustpilot.com/review/amazon.com",
"websiteUrl": "https://www.amazon.com",
"phone": null,
"email": null,
"address": null
}

💻 Code examples

From the Apify API (curl)

curl -X POST 'https://api.apify.com/v2/acts/makework36~trustpilot-reviews-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"mode": "reviews",
"businessUrls": ["shopify.com"],
"maxReviews": 100,
"filterLanguage": "en",
"filterDate": "last3months"
}'

From Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/trustpilot-reviews-scraper").call(run_input={
"mode": "reviews",
"businessUrls": ["shopify.com", "bigcommerce.com", "wix.com"],
"maxReviews": 200,
"filterLanguage": "en",
"filterDate": "last3months",
"sortBy": "recency",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["recordType"] == "review":
print(item["businessDomain"], item["rating"], item["title"])

From Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('makework36/trustpilot-reviews-scraper').call({
mode: 'reviews',
businessUrls: ['airbnb.com'],
maxReviews: 100,
filterRating: '1',
sortBy: 'recency',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.table(items
.filter((i) => i.recordType === 'review')
.map((r) => ({ domain: r.businessDomain, rating: r.rating, title: r.title })));

Export to CSV

From the console run page → ExportCSV. Or via the dataset API:

https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN

⚡ Performance

  • ~20 reviews per page, with automatic pagination across all pages Trustpilot exposes.
  • ~1–2 seconds per page — HTTP only, no browser.
  • 1,000 reviews complete in about 1 minute; 10,000 reviews in ~10 minutes.
  • Pay-per-event (see Pricing section below). No subscription, no minimum spend.
  • 128 MB memory is enough for most runs. Bump to 256 MB only if you scrape dozens of domains in one go.
  • Triple fallback extraction (__NEXT_DATA__ → JSON-LD → HTML) keeps the scraper running through Trustpilot frontend tweaks.

📊 Comparison

There are several Trustpilot scrapers on Apify Store. Here is how this one stacks up on the dimensions that actually matter: field coverage, speed, cost and developer ergonomics. All alternatives are anonymized because pricing and fields can shift week to week.

FeatureThis scraperBrowser-based Trustpilot scraper with residential proxyMinimal Trustpilot reviews scraper (HTML-only)Trustpilot business-search-only scraper
Review fields returned2815–20~10N/A
Business-info fields148–105Varies
Business-search mode with contact infoYesPartialNoYes (only mode)
Search returns email / phone / addressYesPartialNoUsually yes
Scraping engineRaw HTTPHeadless browser + residentialHTML scrapingRaw HTTP
Triple-fallback extraction__NEXT_DATA__ → JSON-LD → HTMLUsually one pathHTML-onlyN/A
Star-rating filterYesYesPartialN/A
Language filterYes (en, es, de, fr, pt, it, nl, ja, ko…)YesNoN/A
Date range filterYes (30 days, 3 / 6 / 12 months)PartialNoN/A
Verified-only filterYesPartialNoN/A
Multi-business inputYes (array of domains)YesSometimes one-at-a-timeYes
Speed per 1,000 reviews~1 minute10–15 minutes~1 minuteN/A
Cost per 1,000 reviews~$0.155–10× higher (browser + residential)ComparableN/A
Export formatsJSON / CSV / Excel / XMLJSON / CSVJSONJSON
Code examples in READMEPython / Node.js / curl / PHPOften noneOften noneOften none
MCP server alternativeReddit MCP and Airbnb MCP on same accountRareNoNo

The honest take: if you only care about a handful of reviews and already own a headless-browser Trustpilot pipeline, don't switch. If you need the richest field set, both modes in a single actor, and HTTP-level speed and cost, this scraper is the better fit.

💵 Pricing

Pay-per-event model:

  • Billed per batch of reviews scraped (as of 2026-04-22).
  • Apify gives every new user a $5 free trial, enough to evaluate the scraper on several businesses.
  • No subscription, no minimum, no egress fees.
  • Business-search mode is billed per search completed — no per-result fee for search.

Rough cost guidance:

ScenarioReviewsEstimated cost
Quick check on 1 company20~$0.01
Competitor comparison (3 companies)300~$0.05
Full reputation audit1,000~$0.15
Large-scale research10,000~$1.50
Business search (50 results)~$0.01

Plan guidance

Apify planRecommended forNotes
FREE (trial credit)First-time evaluation, personal projects~$5 credit — enough for several thousand reviews
STARTERSmall brand monitoring, freelance CX consultantsMonthly credit + proxy included
SCALEMulti-client agencies, mid-market CX teamsHigher concurrency, more proxy bandwidth
BUSINESSReputation-monitoring SaaS products, large e-commerce orgsSLAs, priority support
ENTERPRISE / DIAMONDEnterprise brand-safety platforms, equity research desksDedicated resources, custom terms

❓ FAQ

Do I need a Trustpilot account or API key? No. This scraper reads publicly visible review pages. No login, no cookies, no Trustpilot Business API required.

How many reviews can I get per run? Set maxReviews: 0 to get all available reviews. Most businesses have a few hundred to a few thousand. Very large companies can exceed 40,000 reviews — use filterDate or filterRating to get manageable batches.

What languages are supported? All languages available on Trustpilot. Use filterLanguage with any ISO 639-1 code: en, es, de, fr, pt, it, nl, ja, ko, sv, da, fi, no, pl, and more. Empty string means "all languages".

How fast is it? About 20 reviews per page, one page per 1–2 seconds. 100 reviews take under 10 seconds; 1,000 reviews take about a minute; 10,000 reviews about 10 minutes.

Can I filter by date range? Yes. Use filterDate with "last30days", "last3months", "last6months" or "last12months". Leave empty for all time.

Can I scrape multiple businesses in one run? Yes. Pass an array of domains or URLs in businessUrls. The scraper processes them sequentially with automatic pagination for each. Each review record includes businessDomain so you can group downstream.

What is the difference between reviews mode and search mode? Reviews mode scrapes actual review text for businesses you already know. Search mode finds businesses by keyword and returns their profile with contact info — email, phone, address, website, TrustScore, total reviews. One is for reputation work, the other is for lead generation.

Can I schedule automatic runs? Yes. Set up a schedule in the Apify console to run the scraper daily, weekly or monthly. Combine with integrations (Google Sheets, Slack, webhooks, Postgres, Snowflake) to automate your review-monitoring pipeline.

Why are email and phone sometimes null? Businesses only show contact info when they have claimed their Trustpilot profile and chosen to publish it. That is public information as-published, not scraped from elsewhere. null simply means the business has not listed it.

Is the data real-time? Yes. Every run hits Trustpilot live — no cache. You get the exact reviews and ratings visible on the Trustpilot page at the moment of the request.

Do you have a scraper for other review platforms or social networks? Yes. See Related scrapers below — same account publishes scrapers for Reddit (including an MCP server for AI agents), Airbnb, Booking.com, Vrbo and flights.

📝 Changelog

  • v0.4 (2026-04-22) — SEO-friendly rewrite of the README, expanded use cases, explicit code examples in Python, Node.js, curl and PHP, new comparison table, tutorial and troubleshooting sections. No breaking API changes.
  • v0.3 (2026-03-15) — Added business-search mode with contact info. Expanded business-info record to 14 fields. New filterDate input.
  • v0.2 (2026-02-02) — Added language filter, verified-only filter, and triple-fallback extraction (__NEXT_DATA__ → JSON-LD → HTML).
  • v0.1 (2026-01-10) — Initial release: reviews mode with 22 fields, one-business input, recency / relevance sort.