Trustpilot API
The Trustpilot API returns company reviews, TrustScore and profile data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary company/reviews endpoint returns a business's domain, name, TrustScore, star rating, total and last-12-months review counts and the full rating distribution — alongside the individual review text. You can also fetch company/details, browse a category, and list the top, newest or recently-reviewed companies in any category. It is the managed alternative to scraping Trustpilot for reputation monitoring, competitor benchmarking and review analysis — no login, no proxies, no captcha handling. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, company/reviews, on .
{
"method": "POST",
"url": "https://api.reefapi.com/trustpilot/v1/company/reviews",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"company": "amazon.com",
"maxReviews": 40
}
}{
"ok": true,
"meta": {
"api": "trustpilot",
"endpoint": "company/reviews",
"mode": "live",
"latency_ms": 7330.5,
"record_count": 40,
"bytes": 57414,
"cache_hit": false,
"summary": {
"companies": 1,
"succeeded": 1,
"not_found": 0,
"blocked": 0,
"failed": 0,
"success_rate_pct": 100,
"total_reviews": 40,
"avg_completeness_pct": 0.1,
"error_breakdown": {},
"retries_used": 0
}
},
"data": {
"results": [
{
"company": {
"domain": "www.amazon.com",
"business_unit_id": "46ad[redacted-phone]d0",
"name": "Amazon",
"trust_score": 1.6,
"stars": 1.5,
"number_of_reviews": 47606,
"number_of_reviews_last_12_months": 8645,
"rating_distribution": {
"one": "[trimmed-depth]",
"two": "[trimmed-depth]",
"three": "[trimmed-depth]",
"four": "[trimmed-depth]",
"five": "[trimmed-depth]",
"total": "[trimmed-depth]"
},
"categories": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
],
"is_claimed": true,
"is_closed": false,
"is_temporarily_closed": false,
"is_collecting_reviews": false,
"claimed_date": "[redacted-phone]T19:08:43.000Z",
"reply_behavior": {
"reply_percentage": "[trimmed-depth]",
"average_days_to_reply": "[trimmed-depth]",
"negative_reviews_with_replies": "[trimmed-depth]",
"total_negative_reviews": "[trimmed-depth]",
"last_reply_to_negative": "[trimmed-depth]"
},
"verification": {
"verified_payment_method": "[trimmed-depth]",
"verified_user_identity": "[trimmed-depth]",
"verified_by_google": "[trimmed-depth]"
},
"locations_count": 0,
"website_url": "https://www.amazon.com",
"website_title": "www.amazon.com",
"profile_image_url": "//s3-eu-west-1.amazonaws.com/tpd/screenshots/46ad[redacted-phone]d0/198x149.png",
"contact_email": null,
"contact_phone": null,
"contact_address": null,
"contact_city": null,
"contact_country": "GB",
"contact_zip": null,
"rankings": [],
"breadcrumb": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
],
"topics": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
],
"description": null,
"ai_summary": null
},
"reviews": [
{
"review_id": "[trimmed-depth]",
"review_url": "[trimmed-depth]",
"company_domain": "[trimmed-depth]",
"company_name": "[trimmed-depth]",
"rating": "[trimmed-depth]",
"title": "[trimmed-depth]",
"text": "[trimmed-depth]",
"language": "[trimmed-depth]",
"published_date": "[trimmed-depth]",
"experience_date": "[trimmed-depth]",
"updated_date": "[trimmed-depth]",
"is_verified": "[trimmed-depth]",
"verification_level": "[trimmed-depth]",
"likes": "[trimmed-depth]",
"source": "[trimmed-depth]",
"reviewer_name": "[trimmed-depth]",
"reviewer_country": "[trimmed-depth]",
"reviewer_id": "[trimmed-depth]",
"reviewer_review_count": "[trimmed-depth]",
"reply_text": "[trimmed-depth]",
"reply_published_date": "[trimmed-depth]",
"scraped_via_filter": "[trimmed-depth]",
"scraped_at_page": "[trimmed-depth]",
"is_pending": "[trimmed-depth]",
"is_flagged": "[trimmed-depth]",
"reviewer_local_review_count": "[trimmed-depth]"
},
{
"review_id": "[trimmed-depth]",
"review_url": "[trimmed-depth]",
"company_domain": "[trimmed-depth]",
"company_name": "[trimmed-depth]",
"rating": "[trimmed-depth]",
"title": "[trimmed-depth]",
"text": "[trimmed-depth]",
"language": "[trimmed-depth]",
"published_date": "[trimmed-depth]",
"experience_date": "[trimmed-depth]",
"updated_date": "[trimmed-depth]",
"is_verified": "[trimmed-depth]",
"verification_level": "[trimmed-depth]",
"likes": "[trimmed-depth]",
"source": "[trimmed-depth]",
"reviewer_name": "[trimmed-depth]",
"reviewer_country": "[trimmed-depth]",
"reviewer_id": "[trimmed-depth]",
"reviewer_review_count": "[trimmed-depth]",
"reply_text": "[trimmed-depth]",
"reply_published_date": "[trimmed-depth]",
"scraped_via_filter": "[trimmed-depth]",
"scraped_at_page": "[trimmed-depth]",
"is_pending": "[trimmed-depth]",
"is_flagged": "[trimmed-depth]",
"reviewer_local_review_count": "[trimmed-depth]"
},
{
"review_id": "[trimmed-depth]",
"review_url": "[trimmed-depth]",
"company_domain": "[trimmed-depth]",
"company_name": "[trimmed-depth]",
"rating": "[trimmed-depth]",
"title": "[trimmed-depth]",
"text": "[trimmed-depth]",
"language": "[trimmed-depth]",
"published_date": "[trimmed-depth]",
"experience_date": "[trimmed-depth]",
"updated_date": "[trimmed-depth]",
"is_verified": "[trimmed-depth]",
"verification_level": "[trimmed-depth]",
"likes": "[trimmed-depth]",
"source": "[trimmed-depth]",
"reviewer_name": "[trimmed-depth]",
"reviewer_country": "[trimmed-depth]",
"reviewer_id": "[trimmed-depth]",
"reviewer_review_count": "[trimmed-depth]",
"reply_text": "[trimmed-depth]",
"reply_published_date": "[trimmed-depth]",
"scraped_via_filter": "[trimmed-depth]",
"scraped_at_page": "[trimmed-depth]",
"is_pending": "[trimmed-depth]",
"is_flagged": "[trimmed-depth]",
"reviewer_local_review_count": "[trimmed-depth]"
}
],
"scraped_count": 40,
"total_reviews": 47606,
"completeness_pct": 0.1,
"status": "PARTIAL",
"attempts": 1,
"notes": "Limited by maxReviews=40; 47606 reviews exist. Raise maxReviews (up to 200) for more."
}
],
"summary": {
"companies": 1,
"succeeded": 1,
"not_found": 0,
"blocked": 0,
"failed": 0,
"success_rate_pct": 100,
"total_reviews": 40,
"avg_completeness_pct": 0.1,
"error_breakdown": {},
"retries_used": 0
}
}
}What the Trustpilot API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| company/reviews | Get a company's Trustpilot reviews and its full profile from trustpilot.com — TrustScore, star rating, total review count, 5-to-1-star rating distribution, business categories, and every review with rating, title, text, date, verified status, likes and the company's reply. Newest first; optionally filter by star rating. | Support teams call company/reviews to get a company's Trustpilot reviews and its full profile from trustpilot.com. | company, maxReviews, includeCompany, sort, date_posted, ... |
| company/details | The full Trustpilot company profile WITHOUT reviews (cheaper than company/reviews when you only need the listing) → TrustScore, star rating, total reviews (and last-12-months), 5-to-1-star distribution, category rankings (e.g. #2 of 26 in Bank), contact info (address, phone, website, email), how the business replies to reviews (reply rate + average days), business verification, claimed/closed status, what customers talk about most (AI topic summaries), the AI review summary and the company description. By company domain. | Reputation platforms call company/details to get the full Trustpilot company profile WITHOUT reviews (cheaper than company/reviews when you on…. | company, locale |
| category/browse | List the companies in a Trustpilot category (20/page) → each company's name, domain, TrustScore, review count and location. Filter by country, minimum TrustScore and claimed status, and sort by recently-reviewed. Also returns the category's size and subcategories, plus the newest companies and the recently-reviewed companies in that category — all in one call. | Market researchers call category/browse to list the companies in a Trustpilot category (20/page) → each company's name, domain, TrustSco…. | categoryId, page, cursor, locale, sort, ... |
| category/companies | List the companies in a Trustpilot category (20/page), ranked → each company's name, domain, TrustScore, review count, categories and location. Filter by country, minimum TrustScore and claimed status. Paginate with page. | B2B review analysts call category/companies to list the companies in a Trustpilot category (20/page), ranked → each company's name, domain,…. | categoryId, page, locale, sort, country, ... |
| category/recently-reviewed | The companies in a Trustpilot category that were reviewed most recently → name, domain, TrustScore, review count and location. | Support teams call category/recently-reviewed to get the companies in a Trustpilot category that were reviewed most recently → name, domain, Trust…. | categoryId, locale |
| category/newest | The newest companies added to a Trustpilot category → name, domain, TrustScore, review count and location. | Reputation platforms call category/newest to get the newest companies added to a Trustpilot category → name, domain, TrustScore, review count…. | categoryId, locale |
| category/details | Details of a Trustpilot category → its display name, the number of businesses in it, and its subcategories. | Market researchers call category/details to get details of a Trustpilot category → its display name, the number of businesses in it, and its…. | categoryId, locale |
| category/search | Search Trustpilot categories by keyword → matching categories with their id and display name (feed a categoryId into category/companies). | B2B review analysts call category/search to search Trustpilot categories by keyword → matching categories with their id and display name…. | query, locale |
| company/search | Search Trustpilot for companies by name (10 matches/page) → each match's name, domain, TrustScore, star rating, review count, categories and location. Filter by minimum TrustScore and minimum review count. Also returns matching categories. | Support teams call company/search to search Trustpilot for companies by name (10 matches/page) → each match's name, domain, TrustS…. | query, page, cursor, min_rating, min_review_count, ... |
| consumer/details | A Trustpilot consumer's public profile → display name, country, number of reviews written, and review statistics. By consumer id. | Reputation platforms call consumer/details to get a Trustpilot consumer's public profile → display name, country, number of reviews written, an…. | consumer_id, locale |
| consumer/reviews | Every review a Trustpilot consumer has written across all companies → each review's company, rating, title, text and date. Paginate with page. | Market researchers call consumer/reviews to get every review a Trustpilot consumer has written across all companies → each review's company,…. | consumer_id, page, cursor, locale |
| reviewer/profile | Alias of consumer/details + consumer/reviews: a reviewer's profile AND every review they have written. By consumer id. | B2B review analysts call reviewer/profile to get alias of consumer/details + consumer/reviews. | consumer_id, page, cursor, locale |
Call company/reviews from your stack
curl -X POST https://api.reefapi.com/trustpilot/v1/company/reviews \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"company":"amazon.com","maxReviews":40}'import requests
r = requests.post(
"https://api.reefapi.com/trustpilot/v1/company/reviews",
headers={"x-api-key": REEF_KEY},
json={
"company": "amazon.com",
"maxReviews": 40
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/trustpilot/v1/company/reviews", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"company": "amazon.com",
"maxReviews": 40
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.trustpilot.company/reviews with {"company":"amazon.com","maxReviews":40}.Who uses this API and why
- Support and reputation teams call company/reviews to monitor new reviews and TrustScore changes for their own domain.
- Market researchers use category/companies to benchmark every competitor's rating in a category.
- Review-aggregation platforms pull company/details to show a live TrustScore without maintaining a scraper.
Questions developers ask before integrating
What is the Trustpilot API?
Trustpilot API is a ReefAPI endpoint group for company reviews, ratings and profiles. It returns live JSON through POST requests under /trustpilot/v1.
Is the Trustpilot API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Trustpilot calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Trustpilot login or account?
No login to Trustpilot is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Trustpilot data?
The page example is captured from a live company/reviews call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Trustpilot API use?
Trustpilot actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Trustpilot from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call trustpilot actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Trustpilot API a Trustpilot scraper?
It is the managed alternative to a DIY Trustpilot scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same company reviews, ratings and profiles back as clean JSON.
Why does my Trustpilot scraper keep getting blocked?
Most Trustpilot scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.