The unofficial Trustpilot API — 96 fields per call

693 words ~3 min read Updated 2026-08-24

A Trustpilot API would make this easy. There isn't one. The data has to come off the page—and come off it again whenever the layout shifts.

Here is what our own Trustpilot Actor returns, how much it costs, and where its limits are.

Calling it as an API

Start a run and wait for the dataset with a single call:

curl -X POST "https://api.apify.com/v2/acts/blackfalcondata~trustpilot-reviews-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
 -H 'Content-Type: application/json' \
 -d '{"mode": "..."}'

The Python version looks like this:

from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("blackfalcondata~trustpilot-reviews-scraper").call(run_input={"mode": "..."})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
 print(item)

What comes back

Each record contains 96 fields, organized into a few groups:

Here are the first fields from one row in a real dataset:

{
 "type": "review",
 "reviewId": "6a8926222f1eaac04b00d656",
 "reviewUrl": "https://www.trustpilot.com/reviews/6a8926222f1eaac04b00d656",
 "companyDomain": "booking.com",
 "companyName": "Booking.com",
 "rating": 1,
 "title": "If I could give this 0 stars I will...",
 "text": "If I could give this 0 stars I will their customers service are no help ! They hung up ...",
 "contentHash": "daee232d1b320f4bcf66ca6de253044d03187163509dbe984041eddf04b0f57c",
 "language": "en",
 "reviewSource": "Organic",
 "likes": 1,
 "publishedDate": "2026-08-22T06:31:30.000Z",
 "experiencedDate": "2026-08-21T00:00:00.000Z"
}

What you give it

There are 51 input options, including mode, companyDomain, companyDomains, companyName, startUrls, searchQuery, searchCountry, searchMaxPages, categoryUrl, maxResults, and more. Filters run server-side. You pay for the records you request instead of collecting a larger dataset and filtering it afterwards.

What it costs

Pricing is pay per event, with no subscription:

These figures come from a measured run, not an estimate:

The honest caveats

Questions people ask

Is there an official Trustpilot API?

No. Trustpilot publishes this data on its pages but does not provide a public API for it. That is why every option here involves reading those pages.

How do I authenticate?

Use an Apify API token, passed as ?token= or an Authorization: Bearer header. The token belongs to you, not us. It is the only credential involved, and you do not need a separate account on the source site.

How long does one call take?

The measured run returned 25 records in 15.4 seconds. Because run-sync-get-dataset-items holds the connection open for the entire run, large jobs should start the run first and then poll the dataset.

Can I page through results?

Runs are bounded by searchMaxPages, not by paging through responses. You request a number of records and receive one dataset. To read that dataset in chunks, use the dataset endpoint's offset and limit parameters.

What format does it return?

JSON is the default. By changing the format parameter, the same dataset endpoint can also serve CSV, XLSX and JSONL from the run. There is no separate export step.

Try it

the Trustpilot API endpoint we maintain runs on Apify, and the endpoint above is the entire integration. New accounts receive $5 of free platform credit each month—enough to cover a real run of this size several times over.

Disclosure: we build and maintain this Actor, and the link above is an affiliate link.

Further reading

Also published on