To get Trustpilot reviews programmatically, use Scavio's Trustpilot API. POST /api/v1/trustpilot/reviews with a business's domain returns its 20 newest reviews with rating, title, full text, language, publish and experience dates, verification and the business reply, and takes filters for star rating, language, date range, topic and text. total_filtered tells you how many reviews match before you page. Every call costs 2 credits, about $0.004 on the Growth plan billed yearly, and needs no Trustpilot account.
Trustpilot's own API module is an add-on for Trustpilot for Business users and returns your own business's reviews, so it is the wrong tool for a competitor, a client or a prospect. The steps below use PODS Moving & Storage, captured on October 27, 2026.
Step 1: Find the business's domain
Trustpilot keys every business by its website domain. If you do not know it, search:
curl -s https://api.scavio.dev/api/v1/trustpilot/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "pods moving", "page_size": 5}'This returned 997 matches in 0.9 seconds. The first row, as captured (ids, categories, logo and part of the address trimmed):
{
"name": "PODS Moving & Storage",
"domain": "pods.com",
"profile_url": "https://www.trustpilot.com/review/pods.com",
"trust_score": 4.1,
"stars": 4,
"review_count": 14430,
"website": "https://www.pods.com/",
"email": "[email protected]",
"phone": "(877) 770-7637",
"address": {
"city": "Clearwater",
"postcode": "33762",
"country_code": "US"
},
"verified": true
}Search matches loosely: the other four rows for "pods moving" included a vape pod shop. When you already know the domain, skip this step.
Step 2: Pull the newest reviews
curl -s https://api.scavio.dev/api/v1/trustpilot/reviews \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "pods.com"}'The response opens with the paging state (ids trimmed):
{
"name": "PODS Moving & Storage",
"domain": "pods.com",
"page": 1,
"per_page": 20,
"max_page": 10,
"total_filtered": 14342,
"total_pages": 718,
"count": 20
}Then reviews[] holds 20 reviews, newest first. They ran from October 23 to October 26, 2026, and 15 of the 20 were 5-star. total_pages is 718 but max_page is 10: Trustpilot serves 10 pages per filter combination, which is why the next step matters.
Step 3: Filter to the reviews you need
Most jobs want a slice, not the newest 200 of everything. Ask for English 1- and 2-star reviews from the last 3 months:
curl -s https://api.scavio.dev/api/v1/trustpilot/reviews \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "pods.com", "stars": [1, 2], "language": "en", "date_range": "last3months"}'total_filtered came back as 225, a little over the 200 that one filter combination serves, so to read all of it you would split it into a 1-star call and a 2-star call. The same call with last12months returned 790. One review from the page, as captured (reviewer details and the reply trimmed):
{
"review_id": "6adabf3ad1962c8ab3e1863f",
"url": "https://www.trustpilot.com/reviews/6adabf3ad1962c8ab3e1863f",
"rating": 1,
"title": "Completely mis leading contract",
"text": "Completely mis leading contract, terrible level of communication. No visible invoices. Changing the pay based on fuel prices. ...",
"language": "en",
"source": "FileUploadInvitation",
"verified": true,
"verification_level": "invited",
"published_at": "2026-10-23T03:58:18.000Z",
"experienced_at": "2026-10-09T00:00:00.000Z",
"consumer": { "country_code": "US", "review_count": 2 },
"reply": {
"text": "... We strive to be transparent with our pricing by outlining all charges in your order confirmation. ...",
"published_at": "2026-10-23T14:53:14.000Z"
}
}PODS replied 11 hours after the review went up. Of the 20 reviews on this page, 19 had a reply; the one without had been posted the evening before we called. Other filters: search for reviews containing a word, topics with ids from the business profile, verified_only, with_replies and sort by relevance.
Step 4: Page through, and slice past 200
Send page from 2 up to max_page. When a slice holds more than 200 reviews, split it: one call per star rating, per language or per date range, then deduplicate on review_id. Exporting Trustpilot reviews past the 200 limit has the full script and how far slicing reaches on a large brand.
Step 5: Add the business context
curl -s https://api.scavio.dev/api/v1/trustpilot/business \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "pods.com"}'The profile puts reviews in context in one call. For PODS, trimmed:
{
"trust_score": 4.1,
"review_count": 14430,
"review_count_last_12_months": 4075,
"rating_distribution": { "1": 2153, "2": 589, "3": 728, "4": 1142, "5": 9818 },
"claimed": true,
"reply_behavior": {
"reply_rate": 99.7,
"avg_days_to_reply": 0.03,
"negative_reviews": 780,
"negative_reviews_replied": 778,
"last_reply_to_negative_at": "2026-10-23T14:53:14.000Z"
}
}It also returns review counts per language, Trustpilot's AI summary and its topics (delivery_service, service, staff, customer_service and user_experience for PODS), whose ids feed the reviews topics filter. To fetch one review you already have an id for, /api/v1/trustpilot/review returns it with the reply and the business it belongs to.
All six endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/trustpilot/reviews | 20 reviews a page, filtered by stars, language, date, topic and text, with replies | 2 |
/api/v1/trustpilot/business | Profile with star distribution, reply rate, claimed status, contacts, AI summary and topics | 2 |
/api/v1/trustpilot/search | Up to 100 businesses per call with TrustScore, review count, website and published contacts | 2 |
/api/v1/trustpilot/category | Businesses in a category by country, sorted by relevance, review count or latest review | 2 |
/api/v1/trustpilot/categories | The category tree, or categories matching a name | 2 |
/api/v1/trustpilot/review | One review by id with its reply and business | 2 |
For a side-by-side with other Trustpilot APIs, see the best Trustpilot scraper APIs. To run the same pull across many businesses, see how to analyze Trustpilot reviews in bulk.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, enough for 25 Trustpilot calls, no card required.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/trustpilot/reviewswith a domain and your key in theAuthorizationheader.
Try the Trustpilot API free in the playground first, or call it from Claude and other agents through the MCP server.
Reference: Trustpilot API overview · reviews · business · search · category · single review
Frequently asked questions
How do I get reviews data from Trustpilot with an API?
Trustpilot's own API module returns reviews for your own business once you have the add-on and OAuth credentials. For any other business, send its domain to Scavio's /api/v1/trustpilot/reviews: each call returns 20 reviews with rating, title, text, language, dates, verification and the business reply, plus total_filtered and max_page for paging.
Can I get more than 200 Trustpilot reviews for one business?
Trustpilot serves 10 pages of 20 reviews for any one combination of filters. Each star rating, language, date range and text search is a separate combination, so querying them one at a time and deduplicating on review_id reaches further; for most small and mid-size businesses that covers every review.
Can I see how a business replied to each review?
Yes. Each review carries a reply object with the reply text and its publish date, or null when there is none, and with_replies narrows a call to answered reviews only. The business endpoint adds the overall reply rate on negative reviews and the average days to reply.
How much does it cost to pull Trustpilot reviews?
Every Scavio Trustpilot call costs 2 credits and a reviews call returns 20 reviews, so 1,000 reviews take 50 calls and 100 credits: about $0.20 on the Growth plan billed yearly. A full 200-review slice is 20 credits. New accounts get 50 free credits with no card.