Reviews on the App Store are the rawest product feedback you can get, and Apple makes them strangely hard to collect. You can read them one screen at a time on a phone, or you can fight undocumented endpoints that break by country. I wanted one flat table of reviews per app, so this post walks the manual route, its failure points, and the shortcut: the Apple App Store Reviews API on Apify, which returns iOS and macOS reviews as structured JSON.
Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.
Does Apple have a public reviews API?
For your own app, partly: App Store Connect gives developers access to their own ratings and review data. For anyone else's app, no. There is no official endpoint where you can request the review history of a competitor's product across country stores. That gap is why "app store reviews api" searches lead to scrapers, and a hosted one you call like an API is the practical answer: app in, review rows out.
What the App Store Reviews API returns
The App Store Reviews API returns one JSON row per review: the star rating, title, body text, author, dates, and the app version the reviewer was using.
| Field | Example | Notes |
|---|---|---|
rating |
1 |
Integer 1 to 5 |
review_title |
Latest update broke sync |
Headline the reviewer wrote |
review_text |
Since 4.2 the app... |
Full body text |
review_date_iso |
2026-06-30T14:12:09Z |
Plus a locale-formatted review_date
|
reviewed_version |
4.2.1 |
The axis for before-and-after release analysis |
app_country |
de |
Which of the 50+ country storefronts the row came from |
Rows also carry author_name, product_id, app_platform (ios or macos), and position metadata, so a dataset stays traceable back to store, sort order, and page.
Who this is for
ASO folks mining complaint themes before a listing update, product managers reading how a release landed by grouping on reviewed_version, and competitive teams who want a rival's one-star reviews as a roadmap hint.
The manual way, and where it breaks
The DIY approach uses Apple's semi-public feeds and store endpoints. It starts fine and degrades quickly: pagination caps out, country storefronts behave differently, sort orders are inconsistent, and the responses shift shape without notice. Then you build retries, per-country loops, and version parsing, and you are suddenly maintaining review infrastructure instead of reading reviews.
The faster way: run the Apple App Store Reviews API
Apify Console
- Open the Apple App Store Reviews API and click Try for free.
- Enter an
app_name(the Actor resolves the top store match) or exactproduct_ids, pick acountryand asort. - Run it and export the dataset as JSON or CSV.
REST
curl -X POST "https://api.apify.com/v2/acts/johnvc~apple-app-store-reviews-api/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "app_name": "spotify", "country": "us", "sort": "mostrecent", "max_reviews": 100 }'
Full endpoint reference: the Apify API docs.
Pull App Store reviews in Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("johnvc/apple-app-store-reviews-api").call(
run_input={
"product_ids": ["534220544"],
"country": "gb",
"sort": "mostcritical",
"max_reviews": 200,
}
)
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
print(review["rating"], review["reviewed_version"], review["review_title"])
Sorting by mostcritical first is my favorite trick here: the angriest reviews surface the bug reports.
Use it as a JSON API for any app
The task App Store reviews JSON API is the minimal call: one app, clean JSON out.
Export reviews straight to CSV
Export App Store reviews to CSV lands rows ready for a spreadsheet, and the TikTok variant shows the same flow against a big consumer app.
Read a competitor's one-star reviews
Pull a competitor app's one-star reviews filters to the critical end, which is where switching-intent users explain exactly what they wish existed.
Analyze reviews in Claude via MCP
Apify exposes the Actor over MCP, so Claude, Claude Code, and Cursor can fetch reviews as a tool call and then do what LLMs are actually good at: clustering complaints and summarizing themes. The task Analyze your iOS app reviews in Claude via MCP has the config, and you can read more about Claude at claude.ai.
FAQ about scraping App Store reviews
How much does the App Store reviews scraper cost?
Billing is per review returned, plus a small per-run setup fee. max_reviews caps the spend before the run starts, and the free platform credit on a new Apify account covers a first real dataset.
Can the scraper pull reviews from other countries' stores?
Yes, more than 50 country storefronts. Each row carries app_country, so you can run the same app across the US, German, and Japanese stores and compare localized sentiment in one table.
Can Claude analyze reviews through this scraper over MCP?
Yes, and it is the most satisfying workflow the Actor supports: the MCP task above pulls the rows mid-conversation and the model does the qualitative reading for you.
Can I schedule the scraper to watch for new reviews?
Yes. Save your app as a task sorted by mostrecent, attach a daily or weekly Apify schedule, and each run appends the newest rows. Start from the Apple App Store Reviews API page.
Does the scraper return helpfulness votes on every review?
No, and it would be dishonest to promise that. helpful_count and total_helpful_count appear only when a review actually carries votes and parse_helpfulness is enabled; most rows do not have them.
More from Truffle Pig Data
Other write-ups on this Actor: Apple App Store Reviews API for AI Agents on Medium, the LinkedIn version, and the Peerlist article.
Wrapping up
Your next roadmap argument is sitting in someone's review history. Point the Apple App Store Reviews API at an app and read it as data.
Top comments (0)