App Store Reviews API

Apple's App Store Connect API returns customer reviews — but you have to generate a .p8 key, sign ES256 JWTs yourself, and re-sign them every 20 minutes. ReviewHook gives you one REST endpoint to fetch, filter, and reply to App Store reviews across every app you manage. Upload your key once; we handle the JWT signing.

Quick Start

  1. 01

    Sign up at reviewhook.dev

    Get your API key in seconds.

  2. 02

    Connect your App Store Connect key

    Generate an API key in App Store Connect (.p8 file, Key ID, Issuer ID) and add it to ReviewHook once. We sign and rotate the ES256 JWTs for you on every request.

  3. 03

    Start making API calls

    Use one endpoint to fetch and reply to reviews across every app you manage.

Fetch App Store Reviews

Pull reviews from a single app or across all your App Store apps in one call:

js
const response = await fetch('https://api.reviewhook.dev/reviews?platform=app_store', {
  headers: {
    'api-key': 'rev_live_...',
    'Content-Type': 'application/json'
  }
});

const { data, pagination } = await response.json();
console.log(data[0].id); // '85d9e48d25f9417d

Reply to App Store Review

js
const response = await fetch('https://api.reviewhook.dev/reviews/rev_7b3d9c42/reply', {
  method: 'POST',
  headers: {
    'api-key': 'rev_live_...',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    text: 'Thanks for the feedback — glad the latest update fixed it for you!'
  })
});

const review = await response.json();
console.log(review.hasResponse); // true

Filtering parameters

Common filters for the /reviews endpoint:

ParameterDescription
platform Filter by source platform — pass app_store for App Store reviews
appId Filter by App Store app ID
rating Exact star rating (1–5). Overrides minRating / maxRating when set
minRating Minimum star rating (1–5)
maxRating Maximum star rating (1–5)
hasResponse Return only reviews with (true) or without (false) a reply
fromDate Lower bound on createdAt. ISO-8601 date or date-time
toDate Upper bound on createdAt. ISO-8601 date or date-time
authorName Substring match on the reviewer's nickname
productName Substring match on the app name

For the full list of filters and response fields, see the API reference.

Features

  • Fetch reviews across every app without writing per-app loops
  • Reply programmatically without signing ES256 JWTs or re-signing them every 20 minutes
  • Upload your App Store Connect key once — we handle JWT signing and rotation
  • Filter by rating, date, app, or response status with simple query parameters
  • Skip App Store Connect key management and per-request token plumbing
  • Same API covers Google Play, Google Business, G2 — useful if you ever expand

Direct API vs ReviewHook

What it actually takes to ship an App Store reviews integration, with and without us.

App Store Connect API ReviewHook
Setup time
Days to weeks
Minutes
Auth handling
Generate .p8 key, sign ES256 JWTs yourself
Upload key once, we sign
Token lifecycle
Re-sign every 20 minutes
Handled for you
Multi-app
Manual iteration per app
Single endpoint
Cross-platform
Apple only
Same endpoint covers Google Play, Google Business, G2
Response shape
JSON:API envelope
Flat, unified schema

Start building with the App Store Reviews API

Free during beta · No credit card required · Get 3 months free at launch.

Frequently asked

Apple's App Store Connect API is free with a paid Apple Developer account, but you have to generate keys, sign JWTs, and handle token refresh yourself. ReviewHook is currently free in beta and removes all of that setup.

ReviewHook sits on top of the App Store Connect API. You connect your App Store Connect key once, and we handle JWT signing, the 20-minute token refresh, and pagination — exposing a single flat REST endpoint instead of the JSON:API envelope Apple returns.

No — this API only accesses reviews for apps in your App Store Connect account. There is no public Apple endpoint for arbitrary app reviews; the legacy RSS feed is unofficial and rate-limited.

Yes. POST /reviews/{id}/reply posts a developer response. App Store Connect allows one response per review; sending another reply edits the existing one.

Not with ReviewHook. We sign the ES256 JWT from your App Store Connect key and refresh it before the 20-minute expiry on every request — you just send your ReviewHook API key.

Plain REST. Works with curl, fetch, axios, requests, or any HTTP client. Also works with no-code tools like n8n, Make, and Zapier.

Yes. The same API and endpoints cover Google Play reviews too — just pass platform=google_play. See our Google Play Reviews API page for the Android-specific details.