App Store Optimization From Reviews: Complaints, Ratings, and Version Trends
Work the review side of app store optimization. One Actor call pulls the most critical or most recent Apple App Store reviews for your app and its competitors, and the rows carry everything an ASO audit needs: rating, full review text, reviewed version, country store, and dates.
When to use this skill
- The user wants ASO insight from reviews: what users complain about, what they praise, what to fix before the next listing update.
- They want a competitor review audit: pull the most critical reviews for rival apps and compare themes.
- They want to know how an update landed: group ratings by
reviewed_version before and after a release.
- They want per-country feedback to guide localized listings, using the same app across different stores.
- They ask about "review sentiment", "why are we getting 1-star reviews", or "what do reviews say about app X".
Not for: App Store keyword rankings or search visibility (use the Apple App Store Search Actor), listing metadata such as title, price, or screenshots (use the Apple App Store Product API Actor), or Google Play reviews.
What each review row carries
review_id, review_title, review_text, rating (integer 1 to 5), review_date plus review_date_iso, reviewed_version (the version trend axis), author_name, author_id, product_id, app_platform, app_country, sort_order, page_number, position_on_page, position_global, total_page_count, reviews_for_current_version, fetch_timestamp. When a review carries helpfulness votes and parse_helpfulness is on, helpful_count and total_helpful_count are added; most rows do not have them.
Prerequisites
The Actor
Run it with the Apify CLI
Pull the most critical reviews for your app plus two competitors in one run:
apify actors call "johnvc/apple-app-store-reviews-api" -i '{"product_ids":["534220544","363590051","324684580"],"country":"us","sort":"mostcritical","max_reviews":100}' \
--json \
--user-agent apify-awesome-skills/apify-app-store-optimization-reviews \
2>/dev/null
Pull recent reviews for the same app from a non-US store for localization feedback:
apify actors call "johnvc/apple-app-store-reviews-api" -i '{"product_ids":["534220544"],"country":"de","sort":"mostrecent","max_reviews":100}' \
--json \
--user-agent apify-awesome-skills/apify-app-store-optimization-reviews \
2>/dev/null
Every call carries the three flags this repo expects: --json, --user-agent apify-awesome-skills/apify-app-store-optimization-reviews, and 2>/dev/null.
Run it from Claude or another AI agent (MCP)
The Actor is MCP-ready. Add the hosted server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/apple-app-store-reviews-api
Then ask, for example: "Pull the 100 most critical App Store reviews for Netflix in the US, group the complaints into themes, and tell me the top three." MCP setup docs: https://docs.apify.com/platform/integrations/mcp
Workflow
- Define the audit set. Collect the numeric
product_ids for the user's app and each competitor (the number after id in an App Store URL). One run handles the whole set.
- Pick the lens. Complaint mining:
sort: "mostcritical". Fresh pulse and update reaction: sort: "mostrecent". What fans value: sort: "mostfavorable". Note sort applies to iOS only.
- Pick the stores. Run once per
country that matters; the same app can read very differently in us, de, and jp. Review text and dates come back in the store locale.
- Bound the volume and estimate cost.
max_reviews of 100 to 200 per app is enough for themes; confirm with the user if the estimate is large. See references/gotchas.md.
- Analyze the rows. Group complaints into themes from
review_text and review_title on 1-star and 2-star rows; chart rating by reviewed_version to see how releases landed; compare theme mix across apps and across app_country.
- Deliver findings the user can act on: the top complaint themes with example quotes, the version where a regression appeared, and per-country issues worth a localized listing or release-note fix.
Inputs
product_ids (array of strings): the audit set, fetched sequentially in one run
app_name (string): auto-resolve alternative when only a name is known (one of the two is required)
country (enum, 52 codes, default us): the store under audit
sort (enum, default mostrecent): the audit lens; mostcritical for complaint mining (iOS only)
max_reviews (integer, default 100): per-app cap; 0 = unlimited up to 50 pages
include_macos (boolean, default true), normalize_dates (boolean, default true), parse_helpfulness (boolean, default true)
start_page (integer, default 1): resume a long pull
Cost
Billing is per review returned plus a small one-time setup fee per run, so a three-app audit at 100 reviews each costs well under a dollar. Repeating it across five country stores stays in the low single dollars. Batch all product_ids for a store into one run so the setup fee is paid once. Live prices and estimates are in references/gotchas.md.
Honest limits
- The Actor returns review rows, not scores: sentiment, themes, and trends are your analysis on top of
review_text, rating, and reviewed_version.
sort works on iOS apps only; macOS apps always return most recent.
- Apple serves a bounded review window per app (about 50 pages), so this is a strong sample of recent and voted reviews, not the full historical archive.
reviewed_version reflects the version the reviewer had; users on old versions still post, so version grouping has noise.
- No keyword-ranking data in the output; that is the Search Actor's job.
Troubleshooting
- Complaint set looks thin: raise
max_reviews, or the app simply has few critical reviews in that store (check total_page_count).
- Reviews in the wrong language:
country sets the store and locale; run per store rather than expecting one global feed.
- Same rows across audit runs: expected for slow-moving apps; dedupe on
review_id and diff against the previous audit.
- Wrong app in the set:
app_name matched a different app; use exact product_ids for audits.
See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.
Related Apple App Store Actors
1---2name: apify-app-store-optimization-reviews3description: Mine Apple App Store reviews for app store optimization signals with the Apify Apple App Store Reviews API Actor (johnvc/apple-app-store-reviews-api). Pull most-critical and most-recent reviews for your app and competitor apps across 52 country stores, then turn the rows into complaint themes, rating trends by reviewed_version, and per-country feedback that feeds listing updates and release notes. Use when the user wants app store optimization insight from reviews, an ASO review audit, competitor app review analysis, review sentiment for an iOS app, to find out why users leave 1-star reviews, or to check how an app update changed the reviews. Review mining only; keyword rankings belong to the Apple App Store Search Actor and listing metadata to the Product API Actor. Pay-per-review billing, MCP-ready for Claude and other AI agents.4license: MIT5---67# App Store Optimization From Reviews: Complaints, Ratings, and Version Trends89Work the review side of app store optimization. One Actor call pulls the most critical or most recent Apple App Store reviews for your app and its competitors, and the rows carry everything an ASO audit needs: rating, full review text, reviewed version, country store, and dates.1011## When to use this skill1213- The user wants ASO insight from reviews: what users complain about, what they praise, what to fix before the next listing update.14- They want a competitor review audit: pull the most critical reviews for rival apps and compare themes.15- They want to know how an update landed: group ratings by `reviewed_version` before and after a release.16- They want per-country feedback to guide localized listings, using the same app across different stores.17- They ask about "review sentiment", "why are we getting 1-star reviews", or "what do reviews say about app X".1819Not for: App Store keyword rankings or search visibility (use the Apple App Store Search Actor), listing metadata such as title, price, or screenshots (use the Apple App Store Product API Actor), or Google Play reviews.2021## What each review row carries2223`review_id`, `review_title`, `review_text`, `rating` (integer 1 to 5), `review_date` plus `review_date_iso`, `reviewed_version` (the version trend axis), `author_name`, `author_id`, `product_id`, `app_platform`, `app_country`, `sort_order`, `page_number`, `position_on_page`, `position_global`, `total_page_count`, `reviews_for_current_version`, `fetch_timestamp`. When a review carries helpfulness votes and `parse_helpfulness` is on, `helpful_count` and `total_helpful_count` are added; most rows do not have them.2425## Prerequisites2627- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).28- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).2930## The Actor3132- Store page: https://apify.com/johnvc/apple-app-store-reviews-api?fpr=9n7kx3&fp_sid=skillrepo33- Actor ID: `johnvc/apple-app-store-reviews-api`34- Pricing: pay per review returned, plus a small per-run setup fee (see `references/gotchas.md`).3536## Run it with the Apify CLI3738Pull the most critical reviews for your app plus two competitors in one run:3940```bash41apify actors call "johnvc/apple-app-store-reviews-api" -i '{"product_ids":["534220544","363590051","324684580"],"country":"us","sort":"mostcritical","max_reviews":100}' \42 --json \43 --user-agent apify-awesome-skills/apify-app-store-optimization-reviews \44 2>/dev/null45```4647Pull recent reviews for the same app from a non-US store for localization feedback:4849```bash50apify actors call "johnvc/apple-app-store-reviews-api" -i '{"product_ids":["534220544"],"country":"de","sort":"mostrecent","max_reviews":100}' \51 --json \52 --user-agent apify-awesome-skills/apify-app-store-optimization-reviews \53 2>/dev/null54```5556Every call carries the three flags this repo expects: `--json`, `--user-agent apify-awesome-skills/apify-app-store-optimization-reviews`, and `2>/dev/null`.5758## Run it from Claude or another AI agent (MCP)5960The Actor is MCP-ready. Add the hosted server URL:6162`https://mcp.apify.com/?tools=actors,docs,johnvc/apple-app-store-reviews-api`6364Then ask, for example: "Pull the 100 most critical App Store reviews for Netflix in the US, group the complaints into themes, and tell me the top three." MCP setup docs: https://docs.apify.com/platform/integrations/mcp6566## Workflow67681. Define the audit set. Collect the numeric `product_ids` for the user's app and each competitor (the number after `id` in an App Store URL). One run handles the whole set.692. Pick the lens. Complaint mining: `sort: "mostcritical"`. Fresh pulse and update reaction: `sort: "mostrecent"`. What fans value: `sort: "mostfavorable"`. Note sort applies to iOS only.703. Pick the stores. Run once per `country` that matters; the same app can read very differently in `us`, `de`, and `jp`. Review text and dates come back in the store locale.714. Bound the volume and estimate cost. `max_reviews` of 100 to 200 per app is enough for themes; confirm with the user if the estimate is large. See `references/gotchas.md`.725. Analyze the rows. Group complaints into themes from `review_text` and `review_title` on 1-star and 2-star rows; chart `rating` by `reviewed_version` to see how releases landed; compare theme mix across apps and across `app_country`.736. Deliver findings the user can act on: the top complaint themes with example quotes, the version where a regression appeared, and per-country issues worth a localized listing or release-note fix.7475## Inputs7677- `product_ids` (array of strings): the audit set, fetched sequentially in one run78- `app_name` (string): auto-resolve alternative when only a name is known (one of the two is required)79- `country` (enum, 52 codes, default `us`): the store under audit80- `sort` (enum, default `mostrecent`): the audit lens; `mostcritical` for complaint mining (iOS only)81- `max_reviews` (integer, default 100): per-app cap; 0 = unlimited up to 50 pages82- `include_macos` (boolean, default true), `normalize_dates` (boolean, default true), `parse_helpfulness` (boolean, default true)83- `start_page` (integer, default 1): resume a long pull8485## Cost8687Billing is per review returned plus a small one-time setup fee per run, so a three-app audit at 100 reviews each costs well under a dollar. Repeating it across five country stores stays in the low single dollars. Batch all `product_ids` for a store into one run so the setup fee is paid once. Live prices and estimates are in `references/gotchas.md`.8889## Honest limits9091- The Actor returns review rows, not scores: sentiment, themes, and trends are your analysis on top of `review_text`, `rating`, and `reviewed_version`.92- `sort` works on iOS apps only; macOS apps always return most recent.93- Apple serves a bounded review window per app (about 50 pages), so this is a strong sample of recent and voted reviews, not the full historical archive.94- `reviewed_version` reflects the version the reviewer had; users on old versions still post, so version grouping has noise.95- No keyword-ranking data in the output; that is the Search Actor's job.9697## Troubleshooting9899- Complaint set looks thin: raise `max_reviews`, or the app simply has few critical reviews in that store (check `total_page_count`).100- Reviews in the wrong language: `country` sets the store and locale; run per store rather than expecting one global feed.101- Same rows across audit runs: expected for slow-moving apps; dedupe on `review_id` and diff against the previous audit.102- Wrong app in the set: `app_name` matched a different app; use exact `product_ids` for audits.103104See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.105106## Related Apple App Store Actors107108- Apple App Store Search (keyword rankings, the other half of ASO): https://apify.com/johnvc/apple-app-store-search?fpr=9n7kx3&fp_sid=skillrepo109- Apple App Store Product API (listing metadata for the same app IDs): https://apify.com/johnvc/apple-app-store-product-api?fpr=9n7kx3&fp_sid=skillrepo