Trustpilot Negative Reviews Scraper - 1 & 2 Star
Pricing
from $2.00 / 1,000 reviews
Trustpilot Negative Reviews Scraper - 1 & 2 Star
Collect only the 1 and 2 star reviews for any company on Trustpilot, with the full complaint text, the date, the reviewer's country, and whether the company replied and what it said. Filtering by rating also reaches deeper history than an unfiltered scrape. Pay per review.
Pricing
from $2.00 / 1,000 reviews
Rating
0.0
(0)
Developer
Blackcube
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
| Trustpilot Review Intelligence Suite • 11 Actors, one codebase, one review billed once | ||
| Trustpilot Reviews Scraper All Languages & Replies | Trustpilot Review Monitoring New Reviews Only | Brand Reputation Monitoring Scraper Trustpilot |
| Trustpilot Competitor Analysis Scraper Rivals | Trustpilot Data Export Reviews to CSV & JSON | Trustpilot Star Rating Scraper TrustScore API |
| Customer Feedback Scraper Trustpilot Reviews | Trustpilot Email Scraper Company Contacts | Trustpilot Leads Scraper Company Data & B2B |
| Trustpilot Negative Reviews Scraper ➤ You are here | Trustpilot Verified Reviews Scraper Genuine | |
More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · App Store & Google Play Reviews Suite · Etsy Research Suite · YouTube Comments Intelligence Suite · Telegram Channel Intelligence Suite · Business Reviews Suite · Google Trends Suite · Amazon Product Data Suite · Polymarket Order Book · Nordic Marketplaces Suite · Google Sheets Suite · TikTok Suite · Snapchat Suite · LinkedIn Public Data Suite · Instagram Suite · Contact Validation Suite · Google Maps Suite · X / Twitter
Collect only the 1 and 2 star reviews for any company on Trustpilot, with the full complaint text, the date, the reviewer's country, and whether the company replied and what it said. Filtering by rating also reaches deeper history than an unfiltered scrape. Pay per review.
Why this one
It tells you what it could not reach. Trustpilot serves at most 200 reviews for any one search — page 11 comes back empty. This Actor works around that by splitting a company's history into separate searches by star rating and by language, then walking each one, so a large company yields far more than 200. Where a slice still holds more than 200, the run says so by name in a coverage row instead of quietly returning a partial answer. None of the four leading Trustpilot Actors we benchmarked emits any completeness signal at all.
It reads every language, not just English. Trustpilot's own pages default to English. On one measured company that is 30,081 of 45,738 reviews — a scraper that leaves the default alone silently drops a third of the corpus, and you cannot tell from the output. This one asks for all languages by default and reports the exact review count per language.
A schedule does not re-bill you for history. Turn on change tracking and the Actor remembers the review ids it has delivered, so a re-run does not charge again for a review it already delivered. There is no run-start fee, and a run that finds nothing new bills each company at most once: as the company profile if you keep that on, otherwise as a company checked ($0.006 on Gold, less than a profile).
Nothing in it expires. No bundled token, no API key, no credential that lapses and takes the Actor down until someone redeploys it.
You can cap the bill. A per-company cap, a whole-run cap, and a hard dollar ceiling. Failed lookups, filtered-out reviews, companies with no Trustpilot profile and the coverage report are all free.
What people use it for
- Track what customers say about you and your competitors. Put a list of brands on a daily schedule and get only the reviews you have not had yet, with the complaint text and whatever the company replied.
- Build the evidence for a pitch or an audit. Pull the 1 and 2 star reviews for a prospect, with the exact share of complaints they answer and how many days they take, straight from Trustpilot's own numbers.
- Feed a sentiment or topic model. Export the review text with the star rating, language, country and date attached, in every language the company has reviews in rather than English only.
- Qualify B2B leads. Get TrustScore, review volume and trend, category, country, published contact details and claimed status for a list of domains, without paying for review text you do not want.
Getting started
Paste one or more Trustpilot company pages — or just their domains — into Companies, set how many reviews you want per company, and run it. This listing starts already configured for complaints only - 1 and 2 star, with the company's reply; every other option is still available.
Recipes
Every reachable review for one company
{"companyUrls": ["https://www.trustpilot.com/review/www.currys.co.uk"],"maxReviewsPerCompany": 0}
Just the complaints, with the company's answer
{"companyUrls": ["www.currys.co.uk"],"ratings": ["1", "2"],"maxReviewsPerCompany": 500}
A daily watch over several brands, delivering only reviews you have not had yet
{"companyUrls": ["www.currys.co.uk", "www.argos.co.uk", "www.johnlewis.com"],"onlyNewSinceLastRun": true,"stateLabel": "uk-retail","maxReviewsPerCompany": 200}
Only reviews that mention a word you care about
{"companyUrls": ["www.currys.co.uk"],"searchTerm": "refund","maxReviewsPerCompany": 300}
Trustpilot applies this one itself, so you are billed for matching reviews rather than filtering afterwards.
Company data only, no review text
{"companyUrls": ["www.currys.co.uk", "monzo.com", "www.tesco.com"],"companyProfilesOnly": true}
One request per company. TrustScore, the full star spread, contact details, claimed status and reply behaviour — and no review charges at all.
Input reference
| Field | What it does |
|---|---|
companyUrls | Trustpilot company pages or plain domains. www.trustpilot.com/review/x.com, uk.trustpilot.com/review/x.com and x.com all work |
maxReviewsPerCompany | per-company cap; 0 means as much as the Actor can reach |
maxReviews | ceiling across the whole run |
includeCompanyProfile | add the company intelligence row (charged separately) |
companyProfilesOnly | company rows only, no reviews and no review charges |
ratings | keep only these star ratings; also makes deep history cheaper to reach |
languages | ISO codes such as en, de, fr; empty means all languages |
reviewsSince / publishedBefore | date window |
searchTerm | only reviews mentioning this word — applied by Trustpilot, so you are not billed for the rest |
sort | newest first, or Trustpilot's own relevance order |
onlyVerified / onlyWithReplies | keep only verified reviews, or only answered ones |
onlyNewSinceLastRun + stateLabel | change tracking for scheduled runs |
maxCostUsd | hard spending ceiling for the run |
What you get
Each review row:
| Field | What it is |
|---|---|
rating | 1 to 5 stars |
title, text | the review as written |
publishedDate, experiencedDate | when it was posted, and when the experience happened |
language | ISO code of the review's own language |
isVerified, verificationLevel, verificationSource | Trustpilot's verification state, read from the review's label rather than a raw flag |
isFiltered, isPending, hasUnhandledReports | whether Trustpilot has filtered, held or received reports about this review |
reviewerName, reviewerCountry, reviewerTotalReviews | who wrote it and how active they are |
reviewerReviewsOfThisCompany | how many times this person has reviewed this company |
hasReply, replyText, replyPublishedDate | the company's public answer |
locationName, locationId | the branch, for multi-location businesses |
usefulCount | how many people found it useful |
companyName, companyDomain, companyTrustScore, companyReviewCount | flat columns so a spreadsheet needs no joins |
reviewUrl, reviewId | a stable link and a stable id |
Each company row:
| Field | What it is |
|---|---|
trustScore, stars | the headline score |
reviewCount, reviewCountLast12Months | volume, and how much of it is recent |
ratingOne … ratingFive | the exact star distribution |
languageBreakdown | every language with its exact review count |
replyPercentage, averageDaysToReply | what share of negative reviews the company answers, and how fast |
negativeReviewsWithReplies, totalNegativeReviews, lastReplyToNegativeReview | the numbers behind that |
contactEmail, contactPhone, contactAddress, contactCity, contactZipCode | the contact details the company publishes on its profile |
primaryCategory, categories, countryCode | how Trustpilot classifies it |
isClaimed, claimedDate, isClosed, isTemporarilyClosed | profile status |
verifiedByGoogle, verifiedPaymentMethod, verifiedUserIdentity, hasConsumerAlert | trust signals |
similarCompanies | companies Trustpilot lists alongside this one, with their scores |
And one free coverage row per company:
| Field | What it is |
|---|---|
reviewsReturned | what you got |
writtenReviewsTotal | how many reviews with text exist |
reviewsTotal | Trustpilot's headline count, which also counts star-only ratings that carry no text and that no listing page serves |
saturatedCells | the searches that hit the 200 ceiling, named |
unreachableEstimate | written reviews not returned |
stoppedBecause | why the run stopped for this company |
Run it on a schedule
This is built to be put on a cron. Set onlyNewSinceLastRun to true and give stateLabel a name —
for example uk-retail — and reuse that exact label on every run. The Actor keeps the ids of the last
500,000 reviews it handed you under that label, so a scheduled run does not charge again for any of them.
A re-run reads each search newest first and stops at the first page on which every review your filters keep
is one an earlier run handed you; on a quiet day that is usually the first page. Until it reaches such a
page, every review it reads that you have not had and your filters keep is delivered and billed, up to your
caps, older ones included. Trustpilot's pages hold 20 reviews and shift down as new ones arrive, so that page
can need up to about two pages (39 reviews) in that search that earlier runs handed you; where they handed
you fewer (a low per-company or whole-run cap does that), the run reads on into older history you never had,
up to your caps. What a run cut short (by its
timeout, your dollar ceiling, an abort, or a page Trustpilot would not serve) delivered does not count as
reached: the next run reads on past it. If more new reviews arrive between two runs than your per-company
or whole-run cap allows, the run stops at the cap and a later run may never reach the rest, so set the
caps above a day's volume. Each star rating or language you filter on is its own search, and one that no
earlier run reached is read up to the cap. To backfill history, run once without change tracking: that run
delivers and bills every review it reaches, including ones you already have. There is no run-start fee,
and a run that finds nothing new bills each company at most once: the company profile if you keep that
on, otherwise one company check.
In Apify, open the Actor, choose Schedules, and add one — 0 7 * * * runs it every day at
07:00 UTC. Point reviewsSince at your last run instead if you would rather bound it by date.
Pricing
| Charged for | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| 1,000 reviews | $4.00 | $3.36 | $2.56 | $2.00 | $2.00 | $2.00 |
| 1,000 company profiles | $16.00 | $13.50 | $10.30 | $8.00 | $8.00 | $8.00 |
The Store card shows the Gold tier. So 1,000 reviews is $2.00 on Gold, and a company profile is $8.00 per 1,000.
There is no charge for starting a run, and these are always free:
- companies with no Trustpilot profile, and companies whose page could not be read
- reviews excluded by your own filters
- the per-company coverage report
- every diagnostic row explaining why an input returned nothing
A company whose read finished (to its end, or caught up with your last tracked run) but that billed no review and no profile (nothing new since that run, or every review removed by your filters) is billed once as a company checked: $0.006 on Gold, less than a company profile. A company whose read was cut short (by the run's timeout, an abort, your dollar ceiling, or a page Trustpilot would not serve) is never billed a check.
Notes and limits
- Unofficial. Not affiliated with, endorsed by, or connected to Trustpilot A/S. "Trustpilot" is used only to say which public website this Actor reads.
- Public data only. It reads pages any visitor can open. It does not log in, and it collects no private or login-gated data.
- Personal data. Reviews carry the display name and country the reviewer chose to publish. If you process them for people in the EU/UK, that is personal data and the GDPR applies to what you do with it — you are the controller of your copy.
- Reviews with no text. Trustpilot's headline review count includes star-only ratings, which no listing page serves. Every run reports written reviews and star-only ratings as separate numbers so the gap is never a mystery.
- There is a browser in the pipeline. Trustpilot fronts its pages with a browser check. This Actor solves it the way it is meant to be solved — with a real browser — once per run, and then reuses that one session for every page and every company. Where Trustpilot also serves plain HTTP, it switches to that automatically because it is far faster. It never claims to be browserless, and it never needs an API key or a token you have to supply.
Support
Something wrong, or a field you need? Open an issue on the Actor's issues tab and it gets looked at.
The full-featured version of this engine is Trustpilot Reviews Scraper - All Languages & Replies.
Use it from n8n, MCP, the API or a schedule
Built to be called by a workflow, not only from the Store form. The Actor is vonsensey/trustpilot-negative-reviews-scraper-api; every snippet below sends {}, which runs the defaults shown on the form — replace it with your own input.
n8n
Install the Apify community node (@apify/n8n-nodes-apify under Settings → Community Nodes, or search "Apify" on n8n Cloud). Add Apify → Run Actor with Actor vonsensey/trustpilot-negative-reviews-scraper-api and your input JSON, then Apify → Get Dataset Items on the run's defaultDatasetId and pipe the rows anywhere. For scheduled runs, the On new Apify Event trigger fires when a run of this Actor finishes.
MCP (Claude, Cursor, VS Code, any MCP client)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=vonsensey/trustpilot-negative-reviews-scraper-api","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
Your agent then calls vonsensey/trustpilot-negative-reviews-scraper-api as a tool with the same input the form takes and reads the dataset back.
REST API (one call, rows in the response)
curl -X POST "https://api.apify.com/v2/acts/vonsensey~trustpilot-negative-reviews-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d '{}'
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vonsensey/trustpilot-negative-reviews-scraper-api").call(run_input={})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('vonsensey/trustpilot-negative-reviews-scraper-api').call({});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Make, Zapier, LangChain, CrewAI
The Apify app in Make and Zapier has a Run an Actor module: pick vonsensey/trustpilot-negative-reviews-scraper-api. In LangChain and CrewAI the Apify tool wrappers take the same Actor id. A daily schedule needs nothing but the Console: Schedules → Create → this Actor → cron, and the dataset fills on its own.
Run it without configuring anything — Scrape negative Trustpilot reviews, a ready-made example you can start as-is or copy.
Use cases
- Track what customers say about you and your rivals. Put a brand list on a daily schedule and get only the reviews you have not had yet, with the complaint text and the company's answer.
- Build the evidence for a pitch or an audit. Pull a prospect's 1 and 2 star reviews alongside the exact share of complaints they answer and how many days they take, from Trustpilot's own numbers.
- Feed a sentiment or topic model. Review text with star rating, language, country and date attached — in every language the company has reviews in, not English only.
- Qualify B2B leads. TrustScore, review volume and trend, category, country, published contact details and claimed status for a list of domains, without paying for review text you do not need.
FAQ
How do I export Trustpilot reviews to CSV or Excel?
Run it, then open the run's Storage tab and pick CSV, Excel or JSON. The dataset ships with a reviews view, a company view and a coverage view, so the export already has sensible columns.
Can I get more than 200 reviews from Trustpilot?
Yes. Trustpilot itself serves at most 200 results for any single search, so this splits a company's history into separate searches by star rating and language and walks each one. Where a slice still holds more than 200, the run names that slice in a free coverage row, so you always know whether you have the whole picture.
Does it return reviews in every language?
Yes, by default. Trustpilot's pages show English first, so scrapers that do not override that return English only — on one measured company that is 30,081 of 45,738 reviews. Every company row lists each language with its exact count.
Will a daily schedule bill me for the same reviews twice?
No, with change tracking on. The Actor remembers the review ids it has already delivered under your tracking label (the last 500,000) and skips them, so no review in that memory is charged twice. There is no run-start fee either; a run that finds nothing new bills each company at most once (the company profile if it is on, otherwise a company check where the listing prices one) — see Pricing.
Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.