// HELP / APP-STORE-REVIEWS-API

App Store Reviews API

ASORadar's App Store Reviews API returns user reviews for any app on the Apple App Store as clean JSON — over a single REST endpoint, billed per request. No scraping infrastructure, no proxy rotation, no headless Safari to babysit.

Quick start

Authenticate with your x-access-key header and pass the numeric App Store app_id:

curl "https://api.asoradar.com/a1/reviews?app_id=389801252&country=us" \
  -H "x-access-key: YOUR_ACCESS_KEY"

That returns the most recent reviews for Instagram (389801252) in the US storefront. Create an account to get an access key and 100 free requests to evaluate the API before paying anything.

Parameters

Parameter Type Default Description
app_id string Required. Numeric App Store id (e.g. 389801252).
country string us Two-letter storefront code (us, gb, de, jp, ...).
rating int Keep only reviews with this star rating (15).
since / until datetime ISO-8601 date window.
since_review_id string Cursor — return only reviews newer than this id.
search string Full-text filter over review title and body.
fresh bool false Bypass the cache and force a refetch from the store.
count int 200 Page size, up to 1000.

Response shape

The endpoint is cache-first. It serves fresh reviews from ASORadar's store when available and falls back to a live scrape, walking newest pages until it hits the watermark. Every response carries cache metadata so you can reason about freshness:

{
  "items": [
    {
      "review_id": "11103948571",
      "rating": 1,
      "title": "Keeps crashing after update",
      "body": "App closes on launch since the latest version...",
      "author": "joey_dev",
      "version": "302.1",
      "country": "us",
      "created_at": "2026-06-21T08:14:00Z"
    }
  ],
  "total": 200,
  "cached": true,
  "fetched_at": "2026-06-24T22:00:00Z"
}

Common patterns

Triage negative reviews after a release — pull only 1-star reviews mentioning a keyword:

curl "https://api.asoradar.com/a1/reviews?app_id=389801252&rating=1&search=crash" \
  -H "x-access-key: YOUR_ACCESS_KEY"

Incremental sync — store the newest review_id you've seen and pass it back as since_review_id so you only fetch what's new. That keeps polling cheap on a pay-per-request plan.

Competitor monitoring — point the same call at a competitor's app_id. The schema is identical, so one integration covers your whole tracking list.

Why an API instead of scraping

Apple's public RSS review feed is capped (roughly the latest 500 reviews, paginated awkwardly, US-centric) and the storefront HTML changes without notice. Maintaining your own scraper means proxies, rate-limit backoff, and parser rot. ASORadar absorbs all of that and gives you the same JSON shape for both stores — see the matching Google Play Reviews API.

Pricing

Pay-per-request from $0.001 per call, no monthly minimum and no seats. You top up a balance and spend it only on successful requests; cache hits are billed at the same low rate, and 404s for dead app ids are cached for an hour so you never pay twice for nothing. Full details on the pricing page.

FAQ

Which App Store id do I use?

The numeric id from the App Store URL — apps.apple.com/us/app/instagram/id389801252 means app_id=389801252. Not the bundle id.

Can I get reviews from other countries?

Yes. Pass country= with any storefront code. Each storefront returns its own localized reviews.

How fresh are the reviews?

Cache-first responses include fetched_at. Pass fresh=true to force a live refetch when you need the absolute latest.

Is there a free tier?

New accounts get 100 free promo requests to evaluate the API. After that it's pay-per-request from $0.001.