App Store Reviews API
Get App Store reviews for any iOS app by app ID, in any storefront country: ratings, titles, and review text.
$0.90/1k req, pay per request, no subscription.
{"id": "10982374651","rating": 5,"title": "Best budgeting app I have used","url": "https://apps.apple.com/us/app/id389801252?see-all=reviews","text": "I have tried at least six budgeting apps over the years and this is the first one that actually stuck. Syncing my accounts took two minutes and the weekly summary keeps me honest.","author": "runkeeper_jamie","version": "24.18.0","helpfulVotes": 42,... 2 more fields}
Pricing and providers
App Store Reviews API pricing: one API, 3 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
capped at $0.011 per request1 result$0.0001150 results$0.0055100 results$0.011 capYou are charged for what comes back. Lower the limit to pay less - and no single request can cost more than the cap, however much comes back.3FoxBackup 2100.00% uptime11047ms p500.5% of calls0.5%3 calls$18.00/1k reqflat
Try it
Get App Store reviews in one request
This sample shows 13 of 15 fields. See every field
{
"found": true,
"data": {
"items": [
{
"id": "10982374651",
"rating": 5,
"title": "Best budgeting app I have used",
"url": "https://apps.apple.com/us/app/id389801252?see-all=reviews",
"text": "I have tried at least six budgeting apps over the years and this is the first one that actually stuck. Syncing my accounts took two minutes and the weekly summary keeps me honest.",
"author": "runkeeper_jamie",
"version": "24.18.0",
"helpfulVotes": 42,
"createdUtc": 1758499200,
"appId": "389801252"
},
{
"id": "10982374652",
"rating": 4,
"title": "Great, but notifications are noisy",
"url": "https://apps.apple.com/us/app/id389801252?see-all=reviews",
"text": "Love the categorization and the goals feature, it is genuinely useful. My only complaint is the daily reminder notifications feel excessive and I wish there was an easy way to tune the frequency.",
"author": "coastal.kt",
"version": "24.17.2",
"helpfulVotes": 11,
"createdUtc": 1758153600,
"appId": "389801252"
},
{
"id": "10982374653",
"rating": 5,
"title": "Finally paid off my credit card",
"url": "https://apps.apple.com/us/app/id389801252?see-all=reviews",
"text": "Set up a debt payoff plan through the app last spring and just made my final payment. Seeing the progress bar every week kept me motivated in a way spreadsheets never did.",
"author": "denveremma22",
"version": "24.16.0",
"helpfulVotes": 27,
"createdUtc": 1757548800,
"appId": "389801252"
}
]
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-10-31 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- appIdstring
389801252
Numeric App Store app ID, the digits at the end of the app's store URL without the 'id' prefix (e.g. 310633997).
- countrystring
us
Two-letter App Store storefront country code to read reviews from.
- cursorstring
Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of reviews.
- limitinteger
3
Maximum number of results to return (1-100, default 100).
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `helpfulVotes` or `version`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.
Response
JSON, one example value per field.
Review records: star rating, review title and text, reviewer nickname, app version, and review date. Populated whenever the provider has data for the entity.
- appIdstringcan require
389801252
App Store numeric app identifier the review belongs to.
- authorstring
runkeeper_jamie
Reviewer nickname. Populated whenever the provider has data for the entity.
- createdUtcnumber
1758499200
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. When the review was posted. Populated whenever the provider has data for the entity.
- helpfulVotesintegercan require
42
Number of helpful votes on the review.
- idstring
10982374651
Review identifier. Populated whenever the provider has data for the entity.
- ratingnumber
5
Star rating, 1 to 5. Populated whenever the provider has data for the entity.
- textstring
I have tried at least six budgeting apps over the years and this is the first one that actually stuck. Syncing my accounts took two minutes and the weekly summary keeps me honest.
Review body text. Populated whenever the provider has data for the entity.
- titlestring
Best budgeting app I have used
Review title.
- urlstringcan require
https://apps.apple.com/us/app/id389801252?see-all=reviews
Public App Store page for this review, when supplied by the serving lane.
- versionstringcan require
24.18.0
App version the review was left on.
The result wrapper, or null when nothing was found.
- nextCursorstringcan require
Opaque cursor for the next page of reviews, or null when there are no more. Pass it back as cursor to continue.
- foundboolean
true
True when at least one review record was returned.
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
FAQ
About the App Store Reviews API
The AnyAPI App Store Reviews API returns App Store reviews data as normalized JSON from one POST call to /v1/run/appstore.reviews. Get App Store reviews for any iOS app by app ID, in any storefront country: ratings, titles, and review text. AnyAPI routes each request across 3 sources and falls back automatically when one fails. It costs from $0.90 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 99.8% of App Store reviews calls through AnyAPI succeeded, with a median response time of 5.7 seconds across 1,059 measured calls.