Practitioner guide · 2026

Reading Trustpilot Properly: Invited Reviews, Replies and the TrustScore Myth

There is no public reviews API. So here is what the review object really holds, why the TrustScore is not an average, and the one flag that tells you whether a 4.7 was earned or engineered.

Open the Trustpilot Reviews Actor →
Short version: Trustpilot's official API only returns reviews for domains you verified, so for any competitor or market work you scrape the public pages. When you do, split every review on the invited flag, capture the business reply object (it is half the story), and stop trying to recompute the TrustScore as a mean — it is time-weighted and Bayesian on purpose.

Why the official API does not help you here

Trustpilot does publish APIs, and that fools people into thinking the data is one key away. It is not. The Business API is part of a paid Trustpilot plan and is scoped to the domains your account has verified ownership of — you can read and reply to your own reviews, send invitations, and pull your own TrustScore history. What you cannot do through any official endpoint is read a competitor's reviews, or sweep a whole category of companies in your market. That is exactly the data most teams want, and the only way to it is the public review pages at trustpilot.com/review/<domain>.

So the "Trustpilot API" you end up using for research is a scraper: it loads those public pages, walks the pagination, and returns JSON. The upside is you can point it at any company. The thing to internalise is that the page carries more structure than the star rating, and most of the value is in the fields people ignore.

The review object, field by field

A Trustpilot review is not just stars and text. These are the fields that change what conclusions you can draw.

FieldExampleWhy it matters
reviewId6627a1f0...Stable key. Dedupe and incrementally sync on this, never on text.
stars51–5. The headline; feeds the TrustScore but is not it.
invited / source"invited"Whether the company solicited this review. The most important filter on the page.
verifiedtrueTrustpilot confirmed a real purchase or interaction behind it.
reply{ text, repliedAt }The business response. Whether and how fast a company replies is a reputation signal in itself.
experienceDate"2026-05-12"When the customer interaction happened, distinct from when they wrote about it.
publishedDate"2026-05-20"Drives time-decay weighting; use it to trend sentiment.
reviewerCountry"GB"Isolate a market, or spot a suspicious flood from one geography.
numberOfReviews1How many reviews the author has ever written. A wall of single-review accounts is a fake-review tell.

Invited vs organic: the split that exposes engineered ratings

This is the heart of honest Trustpilot analysis. Companies on a paid plan can send automated invitations after every purchase, which surfaces a self-selected, mostly-happy population. Organic reviews — written by someone who went to Trustpilot of their own accord — skew more negative and more emotional, because people self-mobilise when something goes wrong.

Invited reviews

Volume-driven, recent, positive. A company pushing a 4.8 on the back of 9,000 invited reviews looks very different once you filter them out.

Organic reviews

Lower volume, harsher, the real complaint signal. This is where you find the failure modes a product team can act on.

The practical move: compute two scores in your own pipeline — one over invited, one over organic — and look at the gap. A small gap means the rating is broadly representative. A large gap (say invited 4.6, organic 3.1) means the public score is being floated by invitations, which is exactly the thing you want to know before you benchmark yourself against it or cite it in a pitch.

The business reply is half the dataset

Most scrapers and most analysts throw the reply object away, which is a mistake. For reputation work, whether and how a company answers its 1-star reviews is often more telling than the reviews themselves. A brand that replies to 80% of negatives within 48 hours with a real resolution reads completely differently from one that copy-pastes "please email support@" or ignores them. Capture reply.text and reply.repliedAt, derive a reply-rate and a median reply latency on the negative bucket, and you have a service-quality metric no star average gives you.

Pulling a competitor's negatives in one call

Pagination, the cookie wall, and rate limiting are all hidden behind the Actor. A run that grabs recent low-star reviews for a competitor looks like this:

curl -X POST "https://api.apify.com/v2/acts/renzomacar~trustpilot-reviews/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "companyDomains": ["competitor.com"],
    "stars": [1, 2],
    "sortBy": "recency",
    "maxReviews": 400,
    "language": "all"
  }'

Cap maxReviews on purpose. A well-known brand can carry tens of thousands of reviews, and for a complaint analysis the most recent few hundred per star bucket already show the pattern. Pulling everything just burns credits and earns you a rate-limit response.

Rate limits and the cookie wall. Trustpilot is lighter on anti-bot defences than Amazon or Instagram, but it is not open season. Hammer the paginated review feed from a single datacenter IP and you will start getting 429s and consent-wall interstitials that return zero reviews while still looking like a successful page load. Two consequences: throttle to a polite request rate, and validate that each page actually contained reviews rather than a consent shell — an empty page mid-pagination is usually a soft block, not the end of the data.

Sentiment, but keep experienceDate attached

You can run the deduped review text through any sentiment model, but Trustpilot gives you a field Amazon does not: experienceDate separate from publishedDate. That lets you align complaints to when the bad thing happened, not when someone got around to writing about it. If a shipping change in March produced a spike of 1-star experiences, you will see it cleanly on experienceDate even though the reviews trickled in across April. Trend on experience date for root-cause work, and on published date when you are modelling how the live TrustScore will move.

Why your computed average will not match the badge

Expect a mismatch and do not chase it. The displayed TrustScore is time-weighted (recent reviews dominate), Bayesian (a handful of 5-star reviews is pulled toward the mean until volume justifies the score), and it folds in review frequency. A naive mean of scraped stars ignores all three. Use the raw stars for distribution and trend analysis, and treat the TrustScore as a separate, vendor-computed number you can capture but should not try to reverse-engineer from a single page.

Skip the pagination and the cookie wall

Our maintained Trustpilot Reviews Actor walks the pagination, survives the consent wall, and returns deduped reviews with the invited flag, verified flag and the full business reply already parsed. Free Apify credits to start.

Run the Trustpilot Reviews Actor → Or get done-for-you leads

Monitoring your own brand vs mining competitors

The two jobs need different cadences. Monitoring your own listing is an incremental, high-frequency pull — fetch only reviews newer than your last publishedDate high-water mark, alert on any new 1- or 2-star, and watch reply latency. Mining a competitor or a whole category is a deeper, less frequent sweep where you care about the full distribution, the invited/organic split, and language patterns across rivals. Do not run a nightly full re-scrape of a 40,000-review competitor; sync incrementally and you stay cheap, fast, and well under the rate limit.

Disclosure: links to Apify on this page are affiliate links, marked rel="sponsored". If you create a paid account through them we may earn a commission at no extra cost to you. We recommend Apify because we build and ship Actors on it ourselves, including the Trustpilot Reviews Actor linked above.