RoleDawn

App Store and Google Play Reviews API (JSON)

By the RoleDawn team · Published · Updated

RoleDawn App Reviews API returns App Store and Google Play app data as JSON with one GET request, in the same fields for both stores: rating, ratings count, star histogram, version, release notes and price from /api/v1/app, and the reviews shown on the public store page from /api/v1/app-reviews. Example: https://roledawn.com/api/v1/app?store=apple&id=324684580. No API key is needed for the public demo (50 requests per IP per day); for production volume, subscribe on RapidAPI.

  • One schema for both stores. App Store and Google Play come back with the same field names, so one parser handles both.
  • Star histogram for iOS apps too. Ratings per star for any App Store app and country, next to the average and the count.
  • Any public app. Yours or a competitor's: no store console access, no app ownership needed.
  • Google Play reviews with context. Each review carries the app version it was written for and the developer's reply.
  • Fast repeat calls. Each app is cached at the Cloudflare edge for up to 60 minutes; X-Cache: HIT tells you when.
  • OpenAPI 3 spec at /api/app-reviews/openapi.json, CORS enabled, JSON errors with stable codes.

How do I get App Store reviews as JSON?

Take the number after id in the app's apps.apple.com address (apps.apple.com/gb/app/whatsapp-messenger/id310633997) and call /api/v1/app-reviews. This example asks the UK App Store for 1- and 2-star reviews:

curl "https://roledawn.com/api/v1/app-reviews?store=apple&id=310633997&country=gb&rating=1,2&limit=2"

Real response, captured 2026-10-07 (review text shortened to 280 characters for this page):

{
  "store": "apple",
  "id": "310633997",
  "country": "gb",
  "lang": null,
  "app_title": "WhatsApp Messenger",
  "app_url": "https://apps.apple.com/gb/app/whatsapp-messenger/id310633997",
  "rating": 4.7,
  "ratings_count": 4199657,
  "fetched_at": "2026-10-07T10:33:05.390Z",
  "total": 5,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "next_offset": 2,
  "reviews": [
    {
      "id": "13051642211",
      "rating": 2,
      "title": "Superb app but anti-disabled",
      "text": "This is an excellent app and well designed. However the sign in process on the iPad is unnecessarily ridiculous and really hard if you’re physically disabled. If you have a physical disability like I have (tetraplegic) you have to wait to ask your support worker or someone else …",
      "date": "2025-08-23T16:29:26.000Z",
      "app_version": null,
      "thumbs_up": null,
      "developer_reply": null,
      "developer_reply_date": null
    },
    {
      "id": "12906618413",
      "rating": 1,
      "title": "Review from a blind persons perspective.",
      "text": "I use WhatsApp every single day for important daily communication with my friends, family and business contacts. For four years I have enjoyed the app significantly to do things such as text messaging, voice messaging and voice calling. However, I am really disappointed with the…",
      "date": "2025-07-18T13:17:24.000Z",
      "app_version": null,
      "thumbs_up": null,
      "developer_reply": null,
      "developer_reply_date": null
    }
  ]
}

Need a spreadsheet? How to Export App Store Reviews to CSV or JSON.

Is there an API for Google Play reviews?

Yes. Use the package name from the play.google.com address (details?id=com.duolingo). Google Play groups reviews by language, so add lang for other languages. Lowest ratings first:

curl "https://roledawn.com/api/v1/app-reviews?store=google&id=com.duolingo&sort=rating_asc&limit=2"

Real response, captured 2026-10-07 (review text shortened to 280 characters for this page):

{
  "store": "google",
  "id": "com.duolingo",
  "country": "us",
  "lang": "en",
  "app_title": "Duolingo: Learn Languages",
  "app_url": "https://play.google.com/store/apps/details?id=com.duolingo",
  "rating": 4.73,
  "ratings_count": 49543231,
  "fetched_at": "2026-10-07T10:33:16.577Z",
  "total": 20,
  "count": 2,
  "limit": 2,
  "offset": 0,
  "next_offset": 2,
  "reviews": [
    {
      "id": "9e69dc43-3f7d-4226-9168-7b3b01b18c20",
      "rating": 1,
      "title": null,
      "text": "While it started good, this app has quickly spiraled into something I dread doing. For starters, every single time challenge is far too short and should be at least 2 to 5 minutes longer. Especially in the beginning stages. Second, I have trouble spelling, I always have and alwa…",
      "date": "2026-02-16T04:24:29.000Z",
      "app_version": "6.66.5",
      "thumbs_up": 308,
      "developer_reply": null,
      "developer_reply_date": null
    },
    {
      "id": "89c84ab6-bd49-40b0-bb5e-7bf673ef4e38",
      "rating": 1,
      "title": null,
      "text": "The new energy system makes the free membership pretty much impossible to use. Even if you're perfect, you can only get about 3 lessons done. I went from being able to do 6-8 lessons to barely 3. This ruins the app's purpose to teach languages unless you can afford the paid vers…",
      "date": "2025-10-26T19:27:03.000Z",
      "app_version": "6.53.3",
      "thumbs_up": 2543,
      "developer_reply": null,
      "developer_reply_date": null
    }
  ]
}

Why not Google's own API? See Is There a Google Play Reviews API for Apps You Don't Own?.

How do I get an app's rating, ratings count and star histogram?

Call /api/v1/app. App Store ratings are per country, so pass country for markets other than the US:

curl "https://roledawn.com/api/v1/app?store=apple&id=324684580"

Real response, captured 2026-10-07 (description and release notes shortened for this page):

{
  "store": "apple",
  "id": "324684580",
  "country": "us",
  "lang": null,
  "title": "Spotify: Music and Podcasts",
  "developer": "Spotify",
  "developer_id": "324684583",
  "url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
  "icon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/5f/b6/e0/5fb6e0c6-cea6-e107-8d54-8e8fcec573ce/AppIcon-0-0-1x_U007epad-0-1-0-0-sRGB-85-220.png/512x512bb.jpg",
  "genre": "Music",
  "price": 0,
  "currency": "USD",
  "free": true,
  "rating": 4.77,
  "ratings_count": 42443544,
  "reviews_count": null,
  "histogram": {
    "1": 929581,
    "2": 367536,
    "3": 941478,
    "4": 2975892,
    "5": 37240339
  },
  "rating_current_version": 4.77,
  "ratings_count_current_version": 42443544,
  "installs": null,
  "min_installs": null,
  "version": "9.1.88",
  "release_notes": "We’re always making changes and improvements to Spotify. To make sure you don’t miss a thing, just keep your Updates turned on.",
  "released_at": "2011-07-14T11:22:37.000Z",
  "updated_at": "2026-10-01T15:03:03.000Z",
  "content_rating": "12+",
  "min_os_version": "16.1",
  "size_bytes": 313354240,
  "contains_ads": null,
  "in_app_purchases": null,
  "description": "With the Spotify app, you can explore an extensive library of music and podcasts for free. Curate the best playlists and stream millions of free songs, albums,…",
  "fetched_at": "2026-10-07T10:32:58.810Z"
}

The same request for Google Play adds installs, ads and in-app purchase flags:

curl "https://roledawn.com/api/v1/app?store=google&id=com.spotify.music"

Real response, captured 2026-10-07 (description and release notes shortened for this page):

{
  "store": "google",
  "id": "com.spotify.music",
  "country": "us",
  "lang": "en",
  "title": "Spotify: Music and Podcasts",
  "developer": "Spotify AB",
  "developer_id": "Spotify+AB",
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music",
  "icon": "https://play-lh.googleusercontent.com/IzQgYCcnCFCD08GR-3bdtcT8xzOvrNkC84avGT5CwTX2VIqmTmKKJcP_Cd4JoBOdmCMlTndlOzV6hrthg2fOWA",
  "genre": "Music & Audio",
  "price": 0,
  "currency": "USD",
  "free": true,
  "rating": 4.35,
  "ratings_count": 36442165,
  "reviews_count": 1855375,
  "histogram": {
    "1": 3716306,
    "2": 1064307,
    "3": 1312656,
    "4": 3101459,
    "5": 27247421
  },
  "rating_current_version": null,
  "ratings_count_current_version": null,
  "installs": "1,000,000,000+",
  "min_installs": 1000000000,
  "version": null,
  "release_notes": "We’re always making changes and improvements to Spotify. To make sure you don’t miss a thing, just keep your Updates turned on.",
  "released_at": "2014-05-27T00:00:00.000Z",
  "updated_at": "2026-10-05T08:34:41.000Z",
  "content_rating": "Teen",
  "min_os_version": null,
  "size_bytes": null,
  "contains_ads": true,
  "in_app_purchases": true,
  "description": "With the Spotify music and podcast app, you can play millions of songs, albums and original podcasts for free. We have even added audiobooks, so you can enjoy …",
  "fetched_at": "2026-10-07T10:33:11.799Z"
}

Where do I find the app ID?

StoreStore URLRequest
appleapps.apple.com/us/app/spotify-music-and-podcasts/id324684580store=apple&id=324684580
googleplay.google.com/store/apps/details?id=com.spotify.musicstore=google&id=com.spotify.music

You can also pass the whole store URL (URL-encoded) as id; the store is detected from it.

What fields does the API return?

/api/v1/app returns one object:

FieldTypeMeaning
store, id, country, langstringWhat you asked for (lang only on Google Play)
title, developer, developer_idstring | nullApp name and developer
url, iconstringPublic store page and icon image
genrestring | nullPrimary category
price, currency, freenumber, string, booleanPrice in the store's currency; free is true at 0
rating, ratings_countnumber, integerAverage stars (2 decimals) and number of ratings
histogramobject | nullRatings per star: {"1": …, "5": …} — both stores
reviews_countinteger | nullWritten reviews (Google Play)
rating_current_version, ratings_count_current_versionnumber, integerRating of the current version (App Store)
installs, min_installsstring, integerInstall bracket, e.g. "500,000,000+" (Google Play)
version, release_notesstring | nullCurrent version (App Store) and "What's new" text
released_at, updated_atISO 8601First release and latest update
content_ratingstring | nullAge rating, e.g. 12+ or Teen
min_os_version, size_bytesstring, integerMinimum iOS version and download size (App Store)
contains_ads, in_app_purchasesboolean | nullAds and in-app purchases (Google Play)
descriptionstring | nullStore description, plain text
fetched_atISO 8601When the store was read

/api/v1/app-reviews returns store, id, country, lang, app_title, app_url, rating, ratings_count, fetched_at, total (reviews matching your filters), count, limit, offset, next_offset and reviews. Every review has:

FieldTypeMeaning
idstringReview ID in the store
ratinginteger1 to 5 stars
titlestring | nullReview title (App Store)
textstringReview text
dateISO 8601When the review was written
app_versionstring | nullApp version the review was written for (Google Play)
thumbs_upinteger | nullHelpful votes (Google Play)
developer_reply, developer_reply_datestring | nullThe developer's public reply and its date (Google Play)

Fields a store does not publish are null, never guessed. Reviewer names and profile pictures are not included.

How do I filter by star rating, sort or page through reviews?

ParameterUse
idrequiredApp Store ID (324684580), Android package name (com.spotify.music) or the store URL
storeoptionalapple or google; inferred from id when omitted
countryoptionalTwo-letter store country, default us
langoptionalGoogle Play language, default en (e.g. de, es, pt-BR)
ratingreviews onlyStar filter: 1, or several like 1,2
sortreviews onlynewest (default), oldest, rating_asc, rating_desc, relevant (store order)
limitreviews onlyReviews per page, 1–50 (default 20)
offsetreviews onlySkip this many reviews; use next_offset from the previous page
curl "https://roledawn.com/api/v1/app-reviews?id=com.whatsapp&country=de&lang=de&rating=1"
curl "https://roledawn.com/api/v1/app-reviews?store=apple&id=324684580&sort=rating_desc&limit=5&offset=5"

Which reviews are included?

The reviews each store shows on the app's public page: about 10 per country on the App Store and about 20 per country and language on Google Play, in the selection and order the store itself shows (sort=relevant keeps that order). For a wider picture, call several countries (country=us, gb, ca, au …) or Google Play languages (lang=en, de, es …); each combination is a separate set. Ratings, ratings counts and the histogram always cover all ratings in that store and country.

How fresh is the data, and is there a rate limit?

  • The first request for an app reads it live from the store (X-Cache: MISS); later requests within 60 minutes, for either endpoint, are served from the edge cache (X-Cache: HIT). fetched_at is the time of the live read.
  • Direct calls to roledawn.com are a demo tier: 50 requests per IP per day, shared with the Jobs API (reset at 00:00 UTC), and 60 per minute. Responses carry X-RateLimit-Daily-Remaining plus X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset.
  • Making many calls? Use RapidAPI. The App Store & Google Play Reviews API on RapidAPI gives you an API key, monthly quotas from a free plan up, and usage dashboards. Same endpoints and fields.
  • CORS is open (Access-Control-Allow-Origin: *), so you can call it from a browser.

What do the error codes mean?

Errors are JSON with a stable code, a readable message and, for bad input, the param at fault.

HTTPcodeWhen
400missing_parameterid is missing
400invalid_parameterA parameter has a wrong value or is unknown; param names it
404app_not_foundNo app with this ID in this store and country
429rate_limitedMore than 60 requests in a minute; wait Retry-After seconds
502upstream_errorThe store returned an error; retry later
503upstream_unavailableThe store is temporarily unavailable or throttling requests; wait Retry-After seconds
503source_blockedThe store's robots.txt does not allow the request right now
504upstream_timeoutThe store did not answer within 30 seconds; retry later

Real response for an App Store ID that does not exist (HTTP 404), captured 2026-10-07:

{
  "error": {
    "code": "app_not_found",
    "message": "No App Store app with ID 999999999999 in the \"us\" store. Check the number after \"id\" in the apps.apple.com URL, or try another country.",
    "param": "id",
    "docs": "https://roledawn.com/api/app-reviews#errors"
  }
}

How is the data collected?

Only from public sources whose robots.txt allows it: Apple's iTunes Search API lookup, the public App Store app page and the public Google Play app page. Before any request to a host, the API reads that host's robots.txt and follows it; requests are limited to 1 per second per store and identify themselves as RoleDawnBot. No logins and no store accounts. RoleDawn is not affiliated with Apple or Google; App Store is a trademark of Apple Inc., Google Play is a trademark of Google LLC.

FAQ

Is there a free API for App Store and Google Play reviews?

Yes. Direct calls to roledawn.com are a free demo with no API key or sign-up: 50 requests per IP per day and 60 per minute. For higher volume, use the RapidAPI listing (https://rapidapi.com/PENGCHENGLI/api/app-store-google-play-reviews-api), which has a free plan and paid plans with API keys.

Do I need an App Store Connect or Google Play Console account?

No. The API reads public store data for any app, including competitors' apps. You do not need to own the app.

How do I get the star rating histogram of an iOS app?

Call /api/v1/app?store=apple&id=<app id>&country=us. The histogram field gives the number of 1- to 5-star ratings in that country's App Store, next to the average rating and the ratings count.

How many reviews does the API return?

The reviews shown on the app's public store page: about 10 per country on the App Store and about 20 per country and language on Google Play. Call other countries (country=gb, de, jp ...) or Google Play languages (lang=de, es ...) to see more.

How fresh is the data?

Each app is read live from the store and cached for up to 60 minutes. The fetched_at field tells you exactly when the store was read.

Is there an OpenAPI spec?

Yes: https://roledawn.com/api/app-reviews/openapi.json (App Reviews only) or https://roledawn.com/api/openapi.json (all RoleDawn APIs). Import it into Postman, Insomnia or a code generator.

Related: OpenAPI spec · Export App Store reviews to CSV or JSON · Google Play reviews API for any app · Jobs API · RoleDawnBot crawler rules · Contact us