Trustpilot Reviews API — Customer Ratings, Text & Author
Send a business domain, Trustpilot review URL, or company website URL and this source returns customer reviews for that business: rating, text and author, per reviewer.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "trustpilot_business_reviews",
"business": "hubspot.com",
"max_items": 2,
"business_found": true,
"partial": false,
"human": "# Trustpilot business reviews\n\n- **Business:** hubspot.com\n- **Max items:** 2\n- **Records returned:** 2\n- **Proxy traffic:** 1.08 MB",
"machine": {
"total_items": 2,
"reviews": [
{
"id": "6aab93ec9c591d1f56ba1c6e",
"url": "https://www.trustpilot.com/reviews/6aab93ec9c591d1f56ba1c6e",
"title": "HubSpot - Expensive, Clunky and No Longer Fit for Purpose",
"text": "Our experience with HubSpot has been appalling.\n\nThey are incredibly quick to sell and upsell, make promises about functionality, encourage you to spend even more money customising the platform to suit your business, and then make unilateral changes that interfere with those very customisations and workflows.\n\nA CRM is supposed to make a business more efficient. HubSpot's changes have done the opp",
"rating": 1,
"written_date": "2026-09-17T09:17:00.000Z",
"experienced_date": "2026-09-17T00:00:00.000Z",
"is_unprompted": true,
"is_verified": false,
"useful_count": 0,
"language": "en",
"author": {
"id": "67caafa0c7a2ca2a17330776",
"name": "Scott McPhillips",
"country": "AU",
"review_count": 2,
"image": "https://user-images.trustpilot.com/67caafa0c7a2ca2a17330776/73x73.png",
"url": "https://www.trustpilot.com/users/67caafa0c7a2ca2a17330776"
},
"business_reply": null
},
{
"id": "6aa976bc521222c71dff1b6d",
"url": "https://www.trustpilot.com/reviews/6aa976bc521222c71dff1b6d",
"title": "Fire HubSpot.",
"text": "I missed cancelling components of my contract by a week, and it auto-renewed, and the customer service rep refused to adjust my contract and is forcing me to pay hundreds of dollars a month for things I don't use or want.\n\nI didn't ask for auto-renewal, I miss a deadline by a week and suddenly they decide I owe them several thousand dollars?\n\nLets be honest, nobody reads automated reminder emails ",
"rating": 1,
"written_date": "2026-09-15T18:47:56.000Z",
"experienced_date": "2026-09-14T00:00:00.000Z",
"is_unprompted": true,
"is_verified": false,
"useful_count": 0,
"language": "en",
"author": {
"id": "66fda755084cca311f24a95d",
"name": "Charles Dejager",
"country": "US",
"review_count": 2,
"image": null,
"url": "https://www.trustpilot.com/users/66fda755084cca311f24a95d"
},
"business_reply": null
}
],
"proxy_traffic_bytes": 1129643
},
"total_points": 2
}- You send
- A business domain, Trustpilot URL, or company website URL
- You get back
- Reviews with rating, text and author
- Coverage
- Trustpilot businesses with a public review listing.
- Price
- 1 point per returned result, up to 300 per request — $1 per 1,000
- Billed per record actually returned, capped by max_items. A business with no reviews costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Reading reviews by hand | Open the page, click through pages of reviews | Free, and very slow past a handful | Nobody reads hundreds of reviews this way |
| Building a scraper | Write it, host it, repair it when the layout moves | Engineering time | A maintenance commitment for something that isn't your product |
| NeuralVerge | One request per business | $1 per 1,000, misses not billed | Reviews are self-selected — strong opinions in both directions are over-represented |
What you get back
Every field in the response shown above.
| Field | Type | Description |
|---|---|---|
partial | boolean | True if the scrape hit its time budget and stopped early — re-run with a smaller max_items for a complete result. |
business_found | boolean | Whether the business resolved on Trustpilot at all. |
total_items | number | How many reviews came back. |
reviews | array | The reviews, as Trustpilot orders them. |
reviews[].id | string | Trustpilot's internal review ID. |
reviews[].url | string | Direct URL to this review. |
reviews[].title | string | Review headline, when the reviewer gave one. |
reviews[].text | string | Full review text. |
reviews[].rating | number | Rating given by the reviewer. |
reviews[].written_date | string | When the review was written. |
reviews[].experienced_date | string | When the reviewer says the experience happened. |
reviews[].is_unprompted | boolean | Whether the review was left without an invitation from the business. |
reviews[].is_verified | boolean | Whether Trustpilot marks the review as a verified order/experience. |
reviews[].useful_count | number | How many people marked the review as useful. |
reviews[].language | string | Language code of the review text. |
reviews[].author | object | Reviewer details: id, name, country, review_count, image and profile url. |
reviews[].business_reply | object | null | The business's reply to this review, when there is one. |
proxy_traffic_bytes | number | Size of the raw page data collected to build this result. |
How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
This endpoint is synchronous: the call blocks until the scrape completes and returns the reviews directly. business is required; max_items is optional (1-300, default 25). If a scrape hits its time budget before finishing, the response comes back with partial: true and whatever it collected so far — re-run with a smaller max_items for a complete result.
curl -X POST https://api.neuralverge.ai/functions/v1/run-trustpilot-reviews \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "business": "hubspot.com", "max_items": 25 }'What teams use it for
Where this field shows up in an actual workflow.
Mine the exact language customers use about a company's service.
Track how a competitor's review sentiment shifts over time.
See how companies in your space handle complaints in public.
Pull enough reviews to run real analysis instead of reading the first page.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Trustpilot businesses with a public review listing.
Read at request time.
This source returns publicly visible review information, stamped with the domain/URL it was read from and a session id you can trace.
- —Reviews are self-selected and skew towards strong opinions in both directions.
- —Businesses can influence how many reviews they collect, so volume isn't a neutral signal.
- —Businesses with few reviews return a thin, less representative sample.
Questions, answered
Yes — every Data Source endpoint, including this one, is synchronous: the scrape runs inside the request and the result comes back in the same response, no polling. If a scrape hits its time budget before finishing, the response comes back with partial: true and whatever records it collected so far — re-run with a smaller max_items to get a complete result instead of a partial one.
Related sources
Try trustpilot reviews on your own data
One request format across every source in the catalog.