Trustpilot API endpoint
Returns one page of Trustpilot reviews for a business slug such as `openai.com`, with filters for star rating, verified reviews, reviews with a company reply, language and text search. Each review has its rating, title, body, author name, country and review count, dates, and any company reply; the response also carries the business summary and pagination totals.
/trustpilot/business/{slug}/reviewsPath parameters:
slug: required. Trustpilot business slug. Example: openai.com.Query parameters:
page: optional. 1-based page number; defaults to 1. Example: 1. Minimum: 1.stars: optional. Filter by star rating from 1 to 5. Example: 1. Minimum: 1. Maximum: 5.verified: optional. Filter to verified reviews.replied: optional. Filter to reviews with business replies.language: optional. Review language code used by Trustpilot. Example: en.q: optional. Text search within reviews. Example: refund.date_from: optional. Date range start in YYYY-MM-DD; currently rejected by upstream. Example: 2026-03-01.date_to: optional. Date range end in YYYY-MM-DD; currently rejected by upstream. Example: 2026-03-30.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| author_name | 20 | |
| author_country | 20 | |
| author_review_count | 20 | 1 to 43, median 3 |
| rating | 20 | 1 to 5, median 1 |
| title | 20 | |
| body | 20 | median 420 characters |
| published_at_text | 20 | 2026-10-04 to 2026-10-13 |
| experienced_at_text | 20 | 2026-09-28 to 2026-10-13 |
| invited | 20 | true in 0 of 20 |
| verified | 20 | true in 0 of 20 |
| labels | 20 | |
| updated_at_text | 1 | 2026-10-07 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug (path) | string | Yes | Trustpilot business slug | openai.com | |
| page | integer | No | 1 | 1-based page number; defaults to 1 Minimum: 1. | 1 |
| stars | integer | No | Filter by star rating from 1 to 5 Minimum: 1. Maximum: 5. | 1 | |
| verified | boolean | No | Filter to verified reviews | ||
| replied | boolean | No | Filter to reviews with business replies | ||
| language | string | No | Review language code used by Trustpilot | en | |
| q | string | No | Text search within reviews | refund | |
| date_from | string | No | Date range start in YYYY-MM-DD; currently rejected by upstream | 2026-03-01 | |
| date_to | string | No | Date range end in YYYY-MM-DD; currently rejected by upstream | 2026-03-30 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/trustpilot/business/openai.com/reviews?page=1&verified=true&replied=true&language=en&q=coffee" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"business": {
"slug": "openai.com",
"name": "OpenAI"
},
"pagination": {
"page": 1,
"has_next_page": true,
"total_reviews": 1200
},
"items": []
}
}Request schema
No body schema
Response schema
#/definitions/trustpilot.businessReviewsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | trustpilot.BusinessReviewsResponse | No | ||||
| data.applied_filters | object | No | Filters that were applied to the reviews. Omitted when no filter was used. | |||
| data.applied_filters.language | string | No | en | Review language code that was applied, in lowercase. | ||
| data.applied_filters.query | string | No | refund | Text search that was applied to the review content. | ||
| data.applied_filters.replied | boolean | No | Whether only reviews with a business reply were requested. | |||
| data.applied_filters.stars | integer | No | 1 | Star rating, from 1 to 5, that reviews were filtered to. | ||
| data.applied_filters.verified | boolean | No | Whether only verified reviews were requested. | |||
| data.business | object | No | Summary of the business the reviews belong to. | |||
| data.business.claimed | boolean | No | false | Whether the business has claimed its Trustpilot profile. | ||
| data.business.name | string | No | OpenAI | Display name of the business on Trustpilot. | ||
| data.business.rating | number | No | 1.5 | Star rating shown on the business profile, out of 5. | ||
| data.business.review_count | integer | No | 984 | Total number of reviews the business has on Trustpilot. | ||
| data.business.slug | string | No | openai.com | Business slug used in the Trustpilot profile URL, usually the website domain. | ||
| data.business.trust_score | number | No | 1.3 | Trustpilot TrustScore of the business, as a decimal number. | ||
| data.business.trustpilot_url | string | No | https://www.trustpilot.com/review/openai.com | URL of the business profile on Trustpilot. | ||
| data.business.website_url | string | No | https://openai.com | Website address of the business. | ||
| data.items | array | No | Reviews on this page, as listed on the business's Trustpilot page. | |||
| data.items[].author_country | string | No | GB | Country code of the reviewer, such as `GB`. | ||
| data.items[].author_name | string | No | Summit | Name of the reviewer as shown on the review. | ||
| data.items[].author_review_count | integer | No | 1 | Number of reviews the reviewer has written on Trustpilot. | ||
| data.items[].body | string | No | Full text of the review. | |||
| data.items[].company_reply | object | No | Reply the business posted to the review. Omitted when there is none. | |||
| data.items[].company_reply.message | string | No | Text of the business's reply. | |||
| data.items[].company_reply.published_at_text | string | No | Time the reply was published, in ISO 8601 UTC. | |||
| data.items[].company_reply.updated_at_text | string | No | Time the reply was last updated, in ISO 8601 UTC. | |||
| data.items[].experienced_at_text | string | No | Date of the experience the review describes, in ISO 8601 UTC. | |||
| data.items[].id | string | No | 69b2e2443283f179ac73d3ce | Trustpilot id of the review. | ||
| data.items[].invited | boolean | No | false | Whether the reviewer was invited by the business to write the review. | ||
| data.items[].labels | object | No | Labels Trustpilot attaches to the review, such as source and verification. | |||
| data.items[].labels.filtered | boolean | No | false | Whether the review is marked as filtered on Trustpilot. | ||
| data.items[].labels.merged | string | No | Merge label shown on the review, such as `merged`. | |||
| data.items[].labels.pending | boolean | No | false | Whether the review is still pending. | ||
| data.items[].labels.review_source | string | No | Organic | How the review was collected, as Trustpilot labels it, such as `Organic` or `Invited`. | ||
| data.items[].labels.verification_level | string | No | not-verified | Verification level of the review, such as `verified` or `not-verified`. | ||
| data.items[].labels.verification_source | string | No | invitation | How the review was verified, such as `email` or `invitation`. | ||
| data.items[].published_at_text | string | No | Time the review was published, in ISO 8601 UTC. | |||
| data.items[].rating | integer | No | 1 | Star rating the reviewer gave, from 1 to 5. | ||
| data.items[].title | string | No | Headline of the review. | |||
| data.items[].updated_at_text | string | No | Time the review was last updated, in ISO 8601 UTC. | |||
| data.items[].verified | boolean | No | false | Whether Trustpilot marks the review as verified. | ||
| data.pagination | object | No | Paging details for the reviews. | |||
| data.pagination.has_next_page | boolean | No | true | Whether another page of reviews follows this one. | ||
| data.pagination.next_page | integer | No | 2 | Number of the next page. Omitted on the last page. | ||
| data.pagination.page | integer | No | 1 | Page number returned. | ||
| data.pagination.per_page | integer | No | 20 | Number of reviews per page. | ||
| data.pagination.total_pages | integer | No | 50 | Total number of pages of reviews. | ||
| data.pagination.total_reviews | integer | No | 984 | Total number of reviews available for the business. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid path/query parameters | #/definitions/app.Response |
| 404 | Business not found | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
| 503 | Trustpilot upstream request failed | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/trustpilot/business/openai.com/reviews?page=1&verified=true&replied=true&language=en&q=coffee" \
-H "x-api-key: $CRAWLORA_API_KEY"