trustpilot · reviews
Trustpilot reviews (latest, via review widgets). GET /v1/trustpilot/reviews accepts your x-api-key header. Costs 1 credit per successful fresh call; failures and opt-in cache hits (cache_max_age) are free. Native path: GET /api/v1/web/trustpilot/reviews. Same request parameters and JSON shape as the reference API, so you can switch by changing the base URL.
Request parameters
Up to 100 latest reviews (rating, title, text, date, verification, company reply, reviewer display name) from Trustpilot's public review-widget data. Only businesses whose Trustpilot plan includes review TrustBoxes publish this; others return 503 SOURCE_ACCESS_RESTRICTED (no charge). No deeper pagination; slice with stars/languages.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | No | Company domain or Trustpilot URL (e.g. www.amazon.com or https://www.trustpilot.com/review/www.amazon.com). Provide this or business_unit_id. |
business_unit_id | string | No | Trustpilot business unit id (24 hex chars). Skips the domain lookup. |
limit | integer | No | Reviews to return (default 20, max 100). Range: 1–100. |
stars | string | No | Star filter, comma list (default 1,2,3,4,5). |
languages | string | No | "all" (default) or comma list of ISO 639-1 codes. |
locale | string | No | Widget locale (default en-US). |
freshness | string | No | 24h (default), 1h, 7d, or live. Accepted cache hits are free; live forces refresh except simultaneous requests may share newly fetched data. |
Code examples
Set SIGNALSHELF_BASE_URL and SIGNALSHELF_API_KEY on your server.
curl "$SIGNALSHELF_BASE_URL/v1/trustpilot/reviews?" \
-H "x-api-key: $SIGNALSHELF_API_KEY"const response = await fetch(process.env.SIGNALSHELF_BASE_URL + "/v1/trustpilot/reviews?", {
headers: { 'x-api-key': process.env.SIGNALSHELF_API_KEY },
});
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data, body.meta);import os, requests
response = requests.get(
os.environ['SIGNALSHELF_BASE_URL'] + "/v1/trustpilot/reviews?",
headers={'x-api-key': os.environ['SIGNALSHELF_API_KEY']},
timeout=30,
)
response.raise_for_status()
print(response.json())Response and pagination
The response contains data and meta. data includes platform, resource, sample:false, provider, and the public source payload. Lists return data.items; individual resources return data.data.
Author feeds include data.next_cursor. Return it unchanged in cursor for the next page. Feed entries can include reposts. Single-post lookups resolve the handle to a DID first. Deleted or moderated posts may be unavailable.
meta includes event_id, mode, cache, credits_charged, fetched_at, age_seconds, and duration_ms. A fresh successful result costs one credit; accepted cached results and failures cost zero.
Availability and failures
Implementation is not a continuous availability guarantee. Source rate limits, retention, deleted content, restrictions, and regional availability apply. This is an independent SignalShelf contract, not a drop-in competitor response format.
400: invalid parameters. 401: missing/revoked key. 402: insufficient credits. 404: missing public resource. 429: SignalShelf throttle. 502/503: upstream failure or rate limit, with credit restored.