Apple App Store Reviews API | iOS & macOS JSON
Pricing
from $0.01 / 1,000 results
Apple App Store Reviews API | iOS & macOS JSON
Apple App Store Reviews API. Fetch iOS and macOS app reviews on demand as structured JSON: ratings, titles, text, dates, versions, author, and helpfulness across 50+ country stores. Sort by most recent, most helpful, favorable, or critical. Built for ASO, sentiment, and AI agent workflows.
Pricing
from $0.01 / 1,000 results
Rating
5.0
(3)
Developer
John
Maintained by CommunityActor stats
3
Bookmarked
7
Total users
5
Monthly active users
7 hours ago
Last modified
Categories
Share
Apple App Store Reviews API
The fastest way to query Apple App Store reviews for any iOS or macOS app, delivered as structured JSON and built MCP-first for Claude, AI agents, and developers.
A clean Apple App Store Reviews API. Fetch star ratings, review titles, body text, author info, app versions, dates, and helpfulness counts on demand. Works across 50+ country stores. Sort by most recent, most helpful, most favorable, or most critical. Pass a numeric App Store ID or just an app name and the API finds the right one for you. Built for App Store Optimization (ASO), sentiment analysis, competitor monitoring, churn-signal tracking, localization QA, and AI agent workflows.
This actor is fully MCP (Model Context Protocol) ready, with one click setup for Claude Code, Claude Cowork, and Claude.ai Chat.
AI Agent and MCP Integration
The fastest path to use this actor is through the Apify MCP server. Once connected, Claude (or any MCP-compatible AI agent) can discover and invoke this actor directly from a natural language prompt. No glue code, no client SDK, no manual REST calls.
The Apify MCP server hosts three discovery tools (search-actors, fetch-actor-details, add-actor) that let agents find and register this actor on the fly. Pick the setup that matches your Claude surface.
Option 1: Claude Code (terminal CLI)
The single-command setup. Open your terminal and run:
$claude mcp add apify -- npx -y @apify/actors-mcp-server
Then add your Apify API token (one time):
$claude mcp add apify -e APIFY_TOKEN=your_apify_token_here -- npx -y @apify/actors-mcp-server
Get your token at https://console.apify.com/account/integrations.
Prefer to edit config by hand? Open ~/.claude.json and add:
{"mcpServers": {"apify": {"command": "npx","args": ["-y", "@apify/actors-mcp-server"],"env": { "APIFY_TOKEN": "your_apify_token_here" }}}}
Restart Claude Code, then try a prompt like:
Get the 50 most-critical Apple App Store reviews for Netflix in the US and summarize the top three complaints.
Claude will discover this actor via search-actors, register it as a tool, and run it. You can pass either a numeric product ID or just the app name; the actor handles the lookup.
Option 2: Claude Cowork (web)
Claude Cowork uses the hosted Apify MCP endpoint over HTTP. No local install required.
- Open Cowork.
- Go to Settings > Connectors > Add custom connector.
- Fill in:
- Name:
Apify - Remote MCP URL:
https://mcp.apify.com - Authentication: Bearer token (paste your Apify API token).
- Name:
- Save and enable the connector.
Once connected, the Apify tools appear in the tool drawer. Try a prompt:
Use Apify to pull the 100 most-recent App Store reviews for Spotify in the UK store and bucket them by star rating.
Cowork supports dynamic tool discovery, so once Claude finds this actor in a session, it stays registered as a named tool for the rest of the conversation. Subsequent prompts reuse it without re-discovery.
Option 3: Claude.ai Chat (Connectors)
Same hosted MCP endpoint, configured through the standard Claude.ai UI.
- Open https://claude.ai.
- Click your profile, then Settings > Connectors > Add custom connector.
- Fill in:
- Name:
Apify - Remote MCP URL:
https://mcp.apify.com - Authentication: Bearer token (your Apify API token).
- Name:
- Save. Toggle the connector on at the start of any chat where you want App Store review data.
Then prompt as normal:
Pull the most helpful App Store reviews for Duolingo and tell me what people praise most.
Option 4: ChatGPT, n8n, Zapier, custom GPTs (direct REST)
Skip MCP entirely with a single REST call. Useful for custom GPTs, Zapier flows, n8n pipelines, or any HTTP client.
curl -X POST \"https://api.apify.com/v2/acts/YOUR_USERNAME~apple-app-store-reviews/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"product_ids": ["534220544"], "country": "us", "max_reviews": 50}'
For ChatGPT custom GPT Actions, import the Apify OpenAPI spec as a custom action. Once added, ChatGPT can call this actor as a function from any custom GPT.
Why this actor is MCP-discoverable
- Title and description are tuned for the Apify MCP server's
search-actorstool: platform name, data type, and use case appear in the first 150 characters of the description. - The input schema uses MCP-friendly descriptions that read cleanly even when prefixed with
REQUIRED. Every array property declares an explicititems.typeso dynamic-discovery clients (Cursor, Cline, Claude Code, VS Code, Windsurf, Glama) can register the actor as a typed tool. - Pay-per-event pricing keeps the result-card description transparent for autonomous agents.
- Both
product_ids(exact targeting) andapp_name(auto-resolution) are accepted so agents that only have an app name can still call the actor in one shot.
What You Can Extract
Every dataset item is one review, flat and ready for analysis.
| Field | Description |
|---|---|
| Star rating | Integer 1 to 5 |
| Review title | The headline the author wrote |
| Review text | Full body of the review |
| Author name and ID | Display name plus a stable author identifier (iOS only) |
| Review date | As returned by the store, locale-formatted |
| Review date (ISO) | Best-effort ISO 8601 normalization (e.g. 2021-06-02) |
| App version reviewed | Version string captured at the time of review |
| Helpfulness | Original prose plus parsed integer helpful / total counts |
| Source product ID | Numeric Apple App Store ID this review came from |
| App platform | ios or macos, inferred automatically per app |
| Country store | The two-letter country store code applied |
| Sort order applied | Echoes which order was requested |
| Page number | Source page of pagination |
| Reviews for current version | Present for macOS apps only |
| Fetch timestamp | UTC ISO timestamp at request time |
Each row also carries the originating product ID and country store, so multi-app and multi-country runs stay self-contained.
Use Cases
- App Store Optimization (ASO): Track sentiment, monitor version-specific complaints, and benchmark competitor reviews.
- Sentiment analysis pipelines: Feed real review text into an LLM or a classical NLP model. Star ratings already labeled.
- Competitor monitoring: Watch a rival app's reviews and react to negative spikes before they show in the headline rating.
- Churn-signal tracking: Catch the first one-star reviews on a new release and triage them in your support workflow.
- Localization QA: Compare reviews from the US, UK, JP, DE, and BR stores to spot region-specific bugs and translation issues.
- AI agent feedback loops: Let an AI agent gather reviews on demand to ground its answers in real user voice.
- Investor and PM research: Quickly read what users actually say about an app, not just the headline rating.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
product_ids | array of string | yes (one of) | [] | Numeric Apple App Store IDs (e.g. ["534220544"]). Find each ID in the App Store URL: apps.apple.com/<country>/app/<slug>/id<NNNNNNNN>. |
app_name | string | yes (one of) | (none) | Free-form Apple app name (e.g. netflix). If product_ids is empty, the actor resolves the ID automatically and reviews the top match. |
country | string | no | us | Two-letter Apple country store code. 50+ stores supported. |
sort | string | no | mostrecent | mostrecent, mosthelpful, mostfavorable, or mostcritical. iOS only; macOS apps always return most-recent. |
max_reviews | integer | no | 100 | Hard cap on reviews per app. 0 for unlimited (internally capped at 50 pages). |
start_page | integer | no | 1 | Page to start paginating from. Useful for resuming a long run. |
include_macos | boolean | no | true | Set false to skip macOS apps entirely. |
normalize_dates | boolean | no | true | Emit review_date_iso alongside the locale-formatted date. |
parse_helpfulness | boolean | no | true | Extract helpful_count and total_helpful_count integers from the helpfulness prose. |
output_file | string | no | auto | Local-only JSON output filename for debugging. Ignored on Apify platform. |
At least one of product_ids or app_name must be provided.
Example Inputs
Basic: most recent reviews for one app (by product ID)
{"product_ids": ["534220544"],"max_reviews": 50}
Auto-resolve by app name
{"app_name": "netflix","country": "us","sort": "mostcritical","max_reviews": 100}
Multi-app competitor sweep
{"product_ids": ["324684580", "284882215", "447188370"],"country": "us","sort": "mostrecent","max_reviews": 200}
International sentiment comparison (Japan, most helpful)
{"app_name": "spotify","country": "jp","sort": "mosthelpful","max_reviews": 200}
macOS app (Xcode)
{"product_ids": ["497799835"],"max_reviews": 100,"include_macos": true}
Unlimited (drain all available reviews, capped at 50 pages internally)
{"product_ids": ["534220544"],"max_reviews": 0}
Example Output
Each dataset item is one review:
{"position_global": 1,"position_on_page": 1,"review_id": "7417861364","review_title": "Lacks ratios","review_text": "Beautiful app with images and videos but doesn't tell you how much of what goes in making the drink. Needs ratios!","rating": 3,"review_date": "Jun 02, 2021","review_date_iso": "2021-06-02","reviewed_version": "Version 3.4.2","helpfulness_text": "3 out of 5 customers found this review helpful","helpful_count": 3,"total_helpful_count": 5,"author_name": "Punkiepollo","author_id": "100937133","product_id": "534220544","app_platform": "ios","app_country": "us","sort_order": "mostrecent","page_number": 1,"total_page_count": 8,"fetch_timestamp": "2026-05-11T18:30:00+00:00"}
Pricing
Transparent pay-per-event pricing. You only pay for what you get.
| Event | Cost | When charged |
|---|---|---|
setup | $0.02 | Once at the start of each run. Also covers the optional app-name to product-id lookup. |
review | $0.0015 | Per review pushed to the dataset. |
Cost estimates
| Use case | Reviews returned | Approx. cost |
|---|---|---|
| Quick spot-check (10 reviews) | 10 | $0.035 |
| Standard scan (100 reviews) | 100 | $0.17 |
| Deep crawl (500 reviews) | 500 | $0.77 |
| Bulk competitor sweep (5 apps, 200 reviews each) | 1,000 | $1.52 |
| Maximum iOS depth (1 app, 50 pages, about 1250 reviews) | 1,250 | $1.90 |
No monthly subscription. No hidden fees. Stop the run at any time and pay only for what was already returned.
How to Get Started
- Create an Apify account at https://apify.com if you do not have one.
- Open the actor page in the Apify store and click Try for free.
- Provide either a
product_idsarray (numeric App Store IDs) or anapp_name(free-form), then click Start. - Watch the run live in the Apify console, then download results as JSON, CSV, Excel, or RSS once it finishes.
- Optional: connect via MCP (see top of this README) to call the actor directly from Claude or any AI agent.
How to find a product ID
Open the App Store page for any app and look at the URL. The numeric ID is the part after /id:
https://apps.apple.com/us/app/netflix/id363590051^^^^^^^^^product_id
Or skip this step entirely and pass an app_name instead. The actor looks it up for you.
FAQ
Q: Why are some fields empty on certain reviews?
A: Apple returns slightly different shapes for iOS and macOS apps. macOS reviews do not include review_id or author_id, and they include the reviews_for_current_version field that iOS does not. The actor flags each row with app_platform so you can branch on it cleanly downstream.
Q: Why doesn't sort change the order for one of my apps?
A: Sort applies only to iOS apps. macOS apps always return reviews in most-recent order regardless of the sort value. This is a behaviour of the Apple store, not of the actor.
Q: How many reviews does one page return? A: About 25 per page on iOS and about 10 per page on macOS. Page size is fixed by Apple and cannot be changed via input.
Q: How do I drain every review on an app?
A: Set max_reviews to 0 for unlimited. The actor caps internally at 50 pages as a safety guard (about 1250 iOS reviews or 500 macOS reviews), which is the practical depth of what the store exposes.
Q: What happens if I run out of budget mid-run?
A: The API stops cleanly at the next review and writes a warning to the log. Reviews already pushed are charged; the rest are not. Raise your budget and re-run with start_page to resume.
Q: Can I get developer responses? A: The underlying data source does not expose developer-reply text for App Store reviews. If this changes, the actor will be updated.
Q: Which country stores are supported?
A: 50+ stores including US, UK, CA, AU, DE, FR, JP, KR, BR, MX, IN, and more. See the country parameter dropdown for the full list.
Q: Does this work with AI agents and MCP?
A: Yes. Setup instructions for Claude Code, Claude Cowork, and Claude.ai Chat are at the top of this README. The actor is registered with the Apify MCP server and is discoverable via search-actors.
Last Updated: 2026.05.20