Updated Oct 2026

What we learned integrating 25 review platforms into one API

Every review platform looks the same from the outside: a star rating, a text, an author, maybe a reply. Getting at that data looks nothing alike. We spent the last months building Prisma Reviews, a single REST API for reviews, and these are the notes we wish we’d had on day one.

1. There are four kinds of “review API”

Once you’ve done a few platforms, every one falls into one of four kinds:

KindExamplesHow you connectCan you reply?
OAuth, business-owner APIGoogle Business Profile, TrustpilotThe owner approves your appYes
Keys from a developer consoleApp Store Connect, Google PlayThe owner creates a key and gives it to youYes
Shop-app tokensJudge.me, Trusted Shops, eKomi, OkendoAn API token from the platform’s adminSometimes
No owner API at allYelp, Tripadvisor, Booking.comOnly the public listing URLNo: link to the platform

Each kind needs its own onboarding UI, its own error handling and its own way to refresh credentials. If you design for only one, the next one won’t fit.

2. Access is the real bottleneck, not code

The code for a connector is usually a day or two. Getting permission takes far longer:

The lesson: ship the platforms with self-serve keys first, apply for the gated ones on day one, and be honest in your UI about which ones are still waiting.

3. Normalise early, and keep the original

Every platform has its own field names (starRating: "FOUR", rating: 4, stars: "4.0"), dates (ISO, Unix seconds, "2026-10-19 12:41:07 +00:00") and ideas of what an “author” is. We map everything into one shape:

JSON
{
  "id": "rev_01KJ8Q2M4T7HX3VB9CWD6NRZ5E",
  "platform": "app_store",
  "rating": 4,
  "title": "Great, one bug",
  "text": "Love the app, the widget crashes on iOS 19.",
  "author": "marta_g",
  "language": "en",
  "created_at": "2026-10-19T12:41:07.000Z",
  "reply": { "text": "Thanks! Fixed in 3.2.", "status": "published" }
}

Two rules that saved us later:

  1. Ratings are integers 1–5 or null. Some platforms allow reviews with no rating, so a missing rating is null, never 0.
  2. Prefer the original text over the translation. Several sources auto-translate reviews to the reader’s language. Store what the customer actually wrote and its language.

4. Polling is fine if you’re honest about cost

Most platforms have no webhooks, so you poll. That’s fine for official APIs, where calls are free and rate limits are generous. It’s not fine when every read costs you money (scraped sources charge per review). What worked for us:

5. Replies are a queue, not a request

Publishing a reply can take seconds (Apple), fail because the review was deleted, or be rate-limited. So POST /reviews/{id}/reply returns at once with status: "queued", a worker publishes it, and a reply.published or reply.failed webhook tells you how it went. Idempotency keys stop a retry from posting the same reply twice, and a customer reading the review a second later sees a queued reply instead of none.

6. Make it testable without a real account

The biggest friction for a developer trying a reviews API is “I need a real business with real reviews first”. Test keys (pk_test_…) that return realistic sample data for every platform let someone build the whole integration before connecting anything real. They’re also what we use in our own test suite.

7. Agents are users too

A surprising share of our early traffic was AI agents reading docs. Three cheap things helped:

Wrapping up

If you’re integrating reviews from more than two platforms, the time goes into access, normalisation and cost control, not HTTP calls. That’s the work we packaged into Prisma Reviews. It’s free for 2 locations, with test keys for every platform. If you’d rather build it yourself, we hope the notes above save you a few weeks. The numbers behind these notes, platform by platform, are in State of Review Platform APIs 2026.

Questions about a specific platform’s API? Write to hello@prismareviews.com: we’ve probably hit the same wall.

Get your API key in a minute

Free Spark plan: 2 locations, no card. Test keys return sample data on all 32 platforms, so you can build before connecting a real one.