Clair API
SERP & Search API→Results from Google Search, News, and Maps.News & Media API→Live publisher pages, fetched when you call.Jobs & Hiring API→Live job listings from Glassdoor, Indeed, and Greenhouse.E-commerce API→Live listings from public marketplaces.Company Data & Reviews API→Public company profiles, reviews, ratings, and product launches.Contact & Lead Data API→Emails, phones, and social URLs from public sites.
Browse the full catalog →Missing a data surface? Ask for one →

Explore resources

Use casesWays to build with Clair data.ComparisonsClair against other APIs, sourced.GlossaryWeb data terms, with real fields.

Use cases

View all →
Amazon price monitoring→Prices, Buy Box sellers, and stock per ASIN.Google rank tracking→Daily positions for your keywords, with SERP features.Lead enrichment from company websites→Emails, phones, and socials a domain publishes.Trustpilot review monitoring→New reviews, TrustScore, and replies per company.Product Hunt launch tracking→Daily launches, makers, and websites by topic.
PricingDocs
Dashboard

Use cases / Trustpilot Reviews API

Trustpilot review monitoring

Collect every new Trustpilot review for your company and your competitors, track TrustScore and the rating distribution over time, and send low-star reviews to the people who answer them. Built on the Trustpilot Reviews API's company, search, and category endpoints.
Try the Trustpilot Reviews API →

Who

Who runs this, and what for

TeamWhat they decide with it
Support and CXWhich negative reviews need an answer today, and how quickly the team replies.
Product teamsWhich complaints repeat across reviews after a release.
Marketing and brandHow TrustScore moves against competitors, and when to ask happy customers for reviews.
Investors and analystsWhether customer sentiment about a company is improving or falling, before it shows up in results.

Pipeline

The calls, step by step

  1. 01Find the companies to watch

    Company search takes a name or domain fragment and returns matching profiles with their TrustScore and review count; the category endpoint lists every business in a Trustpilot category for one country, sorted by recommendation, latest review, or review count. Keep the domain from each result: it is the key for the next call.

    GET /v1/reviews/search?query=bank · results.0

    {
      "id": "5060f52a00006400051bf99f",
      "name": "Happen Bank",
      "domain": "happen.com",
      "profile_url": "https://www.trustpilot.com/review/happen.com",
      "website_url": "https://happen.com",
      "logo_url": "https://s3-eu-west-1.amazonaws.com/tpd/logos/5060f52a00006400051bf99f/0x0.png",
      "trust_score": 4.7,
      "stars": 4.5,
      "review_count": 14830,
      "location": {
        "address": "88 Kearny Street, Suite 600",
        "city": "San Francisco",
        "zip_code": "94108",
        "country": "United States"
      },
      "contact": {
        "email": null,
        "phone": "(888) 596-3157"
      },
      "categories": [
        {
          "id": "bank",
          "name": "Bank",
          "is_primary": false
        },
        {
          "id": "financial_institution",
          "name": "Financial Institution",
          "is_primary": false
        }
      ],
      "is_recommended": false
    }
    Recorded response. Live values differ.
  2. 02Snapshot the profile

    The company endpoint returns the business profile with each call: TrustScore, star rating, review count, rating distribution, whether the profile is claimed, and how the company replies to negative reviews. One call a day per company gives a time series of all of these, which Trustpilot does not provide.

    GET /v1/reviews?domain=stripe.com&page=1 · business

    {
      "id": "50489e6800006400051ae0d6",
      "name": "Stripe",
      "domain": "stripe.com",
      "profile_url": "https://www.trustpilot.com/review/stripe.com",
      "website_url": "https://stripe.com",
      "logo_url": "https://s3-eu-west-1.amazonaws.com/tpd/logos/50489e6800006400051ae0d6/0x0.png",
      "trust_score": 1.6,
      "stars": 1.5,
      "review_count": 17504,
      "review_count_last_12_months": 1201,
      "rating_distribution": [
        {
          "stars": 5,
          "count": 6721,
          "percent": 38.4
        },
        {
          "stars": 4,
          "count": 725,
          "percent": 4.1
        },
        {
          "stars": 3,
          "count": 469,
          "percent": 2.7
        },
        {
          "stars": 2,
          "count": 514,
          "percent": 2.9
        },
        {
          "stars": 1,
          "count": 9075,
          "percent": 51.8
        }
      ],
      "categories": [
        {
          "id": "payment_service",
          "name": "Payment Service",
          "is_primary": true
        }
      ],
      "category_path": [
        {
          "id": "business_services",
          "name": "Business Services"
        },
        {
          "id": "administration_services",
          "name": "Administration & Services"
        },
        {
          "id": "payment_service",
          "name": "Payment Service"
        }
      ],
      "description": "Millions of businesses of all sizes—from startups to large enterprises—use Stripe’s software and APIs to accept payments, send payouts, and manage their businesses online. It's the payment infrastructure for the internet",
      "country_code": "US",
      "contact": {
        "email": null,
        "phone": null,
        "support_url": "https://support.stripe.com/contact",
        "address": "510 Townsend Street",
        "city": "San Francisco",
        "zip_code": "94103",
        "country": "United States"
      },
      "is_claimed": true,
      "claimed_at": "2016-05-11T03:33:53.000Z",
      "is_closed": false,
      "is_temporarily_closed": false,
      "is_collecting_reviews": false,
      "uses_paid_features": false,
      "uses_ai_replies": false,
      "has_incentivised_reviews": false,
      "has_consumer_alert": false,
      "verification": {
        "payment_method": true,
        "user_identity": false,
        "google": false,
        "persona": false
      },
      "reply_behavior": {
        "negative_reply_rate": 100,
        "average_days_to_reply": 1.95,
        "negative_review_count": 1073,
        "negative_replied_count": 1073,
        "last_negative_reply_at": "2026-09-26T21:20:34.000Z"
      },
      "locations_count": 0
    }
    Recorded response. Live values differ.
  3. 03Collect new reviews since the last run

    Ask for sort=recency and language=all, then read pages until you reach the newest review you already stored. Twenty reviews come per page. Anonymous listings stop at page 10, so a company receiving more than about 200 reviews between runs needs a shorter interval, or one listing per star rating with stars=1 through stars=5: each filtered listing has its own ten pages.

    GET /v1/reviews?domain=stripe.com&page=1 · pagination

    {
      "page": 1,
      "per_page": 20,
      "total_results": 14154,
      "total_pages": 708,
      "next_page": 2
    }
    Recorded response. Live values differ.

Code

A script to start from

new_reviews.py

# Collect new Trustpilot reviews for a list of companies since the last run
# and flag the negative ones. Keeps the newest seen review id per company.
import json, os, pathlib, requests

API = "https://api.clair.im"
HEADERS = {"Authorization": f"Bearer {os.environ['CLAIR_API_KEY']}"}
COMPANIES = ["stripe.com", "adyen.com", "wise.com"]
STATE = pathlib.Path("seen.json")
seen = json.loads(STATE.read_text()) if STATE.exists() else {}

def listing(domain, page):
    r = requests.get(f"{API}/v1/reviews", headers=HEADERS, timeout=60, params={
        "domain": domain, "sort": "recency", "language": "all", "page": page})
    r.raise_for_status()
    return r.json()

for domain in COMPANIES:
    new, page = [], 1
    while page:  # next_page is null after page 10, the anonymous limit
        body = listing(domain, page)
        if page == 1:
            b = body["business"]
            print(f"{domain}: TrustScore {b['trust_score']}, {b['review_count']} reviews")
        fresh = []
        for review in body["results"]:
            if review["id"] == seen.get(domain):
                break
            fresh.append(review)
        new += fresh
        # Stop at last run's newest review; on a first run, keep page 1 only.
        if len(fresh) < len(body["results"]) or domain not in seen:
            break
        page = body["pagination"]["next_page"]
    for review in new:
        if review["rating"] <= 2:
            print(f"  {review['rating']} stars: {review['title']!r} {review['url']}")
    if new:
        seen[domain] = new[0]["id"]

STATE.write_text(json.dumps(seen, indent=2))

Set CLAIR_API_KEY to a key subscribed to the Trustpilot Reviews API. Each call is one request against that API's monthly quota.

Cost

What it costs per month

ScheduleRequestsPlanPer monthPer 1,000
20 companies, daily20 × 1 page × 30 days. Busy profiles need more than one page a day.600Pay as you go$3.18$5.30
200 companies, daily200 × 1 page × 30 days.6,000Pay as you go$31.80$5.30
1,000 companies, weekly, 3 pages1,000 × 3 pages × 4 weekly runs.12,000Pro$49.99$4.17
Category study: 5 categories, 2,000 profiles100 category pages for each of 5 categories, then one profile call per business found.2,500Pay as you go$13.25$5.30
The cheapest Clair plan for each volume: the monthly fee plus overage past the included requests. USD, before tax. The free tier covers 200 requests a month for trying the pipeline.

Limits

What to plan for

  • Anonymous review listings stop at page 10, twenty reviews per page. The full history of a large company cannot be read in one listing; filtered listings (stars, date, language) each reach ten pages.
  • Trustpilot.com shows English reviews by default. Pass language=all, or a language code, or reviews in other languages are left out.
  • TrustScore is not the average of the stars shown. Trustpilot weights recent reviews more heavily and adds seven 3.5-star reviews to every company's calculation, so a new company starts near the middle.
  • Reviews can be removed by Trustpilot or the author after you stored them. Keep the review URL to check that it is still public before you quote it.
  • Clair reads public pages. It does not post replies or invitations; answer reviews in Trustpilot.
  • Do not republish the reviews as a reviews product of your own. Show the author and the Trustpilot link wherever you display one.

FAQ

Common questions

Is this Trustpilot's official API?

No. Trustpilot's own APIs need a Trustpilot business account and cover mainly your own profile. Clair reads the public profile and review pages, the same ones any visitor sees, for any company.

Can I get reviews for companies that are not mine?

Yes. Any public profile works, which is what makes competitor tracking possible.

How do I catch every new review on a busy profile?

Poll more often, so fewer than 200 reviews arrive between runs. A company with 60 reviews a day is fully covered by a daily run that reads up to three pages.

Does it include the company's replies?

Yes. Each review has reply with the company's answer when there is one, and replies=true keeps only reviews that were answered.

Related

Keep reading

APIs

  • Trustpilot Reviews API

Glossary

  • TrustScore

Run it on your own products

200 requests a month free on each API, no card. Enough to run the pipeline on a short list before choosing a plan.

Get API Key →Compare plans
Clair API

Developer APIs for public search, editorial news, active job postings, website contacts, reviews, and product launches—with provenance, freshness, and coverage boundaries kept visible.

contact@serinlabs.com@clair_api

Products

SERP & Search APINews & Media APIJobs & Hiring APIE-commerce APICompany Data & Reviews APIContact & Lead Data API

Documentation

OverviewQuickstartGoogle Search APIGoogle News APIGlassdoor APIContacts APITrustpilot APIProduct Hunt APIPricing

Resources

Resource catalogUse casesComparisonsGlossary

Legal

TermsPrivacy
© 2026 Serin Technologies, LLC