App Store & Google Play Reviews & ASO Scraper
Pricing
Pay per event
App Store & Google Play Reviews & ASO Scraper
Scrape Apple App Store and Google Play customer reviews and app/ASO intelligence in bulk by app ID, store URL, bundle/package ID, or keyword search. Multi-country, full pagination, rating histograms, version breakdowns, sentiment and keyword signals. Public store endpoints only. Pay per result.
Pricing
Pay per event
Rating
0.0
(0)
Developer
naoki anzai
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Build Apple App Store and Google Play review intelligence and ASO snapshots in bulk — by app ID, store URL, bundle/package ID, or keyword search. Multi-country review samples are turned into rating histograms, version breakdowns, sentiment, and keyword signals. Uses public store endpoints only (no login, no cookies, no scraping tricks). Every row is tagged with its platform (app_store or google_play). You pay only per result delivered.
Great for ASO teams, app marketers, product managers, and competitive/market research.
What you get
For each app and storefront you can get:
- Every recent customer review (up to ~500 per storefront): rating, title, text, author, app version, helpful votes, date.
- An app profile / ASO snapshot: name, developer, price, genres, content rating, current version + release dates, official average rating and total rating count, plus computed signals from the review sample:
- Rating histogram (1–5 stars)
- Sentiment breakdown (positive / neutral / negative share)
- Versions seen in recent reviews
- Top keywords customers actually use
Inputs
Provide any combination of sources:
| Field | Description |
|---|---|
appIds | Apple numeric track IDs, e.g. 1232780281 |
appUrls | App Store URLs, e.g. https://apps.apple.com/us/app/notion/id1232780281 |
bundleIds | Apple bundle identifiers, e.g. com.notion.notion |
searchTerms | Keywords to discover App Store apps (ASO / competitor discovery) |
playAppIds | Google Play package names, e.g. com.spotify.music |
playUrls | Google Play URLs, e.g. https://play.google.com/store/apps/details?id=com.spotify.music |
countries | Storefront codes, e.g. ["us","gb","jp"] |
language | Language code for Google Play requests, e.g. en |
maxReviewPages | Pages of reviews per app per storefront (Apple ~50/page, Google Play ~100/page) |
reviewSort | mostRecent or mostHelpful |
minRating | Keep only reviews ≥ this rating (0 = all) |
includeReviews / includeAppProfile | Toggle each output type |
emitUnchanged / baselineStableKeys | For recurring monitoring, set emitUnchanged: false and pass stable keys from the previous run to emit and charge only new rows |
Example: same app on both stores
{"appIds": ["1232780281"],"playAppIds": ["notion.id"],"countries": ["us"],"maxReviewPages": 5}
Example: reviews for specific apps, two countries
{"appIds": ["1232780281"],"countries": ["us", "gb"],"maxReviewPages": 10,"reviewSort": "mostRecent"}
Example: discover competitors by keyword and snapshot them
{"searchTerms": ["habit tracker", "budget app"],"maxAppsPerTerm": 10,"countries": ["us"],"includeReviews": true,"includeAppProfile": true}
Example: recurring no-change-safe run
{"appIds": ["1232780281"],"countries": ["us"],"maxReviewPages": 1,"includeReviews": true,"includeAppProfile": true,"emitUnchanged": false,"baselineStableKeys": ["appprofile:app_store:us:1232780281","appreview:app_store:us:1232780281:1001"],"dryRun": false}
Output
Each dataset item is either an app_review or an app_profile row.
Review row (charged as app-review):
{"rowType": "app_review","appId": "1438388363","appName": "Habit Tracker","country": "us","reviewId": "14143606963","author": "Chelsea123","rating": 5,"title": "Love it","content": "Keeps me consistent every day...","appVersion": "2.14.11","voteSum": 3,"voteCount": 4,"updated": "2026-06-03T08:58:57-07:00","sourceUrl": "https://apps.apple.com/us/app/id1438388363"}
App profile row (charged as app-profile):
{"rowType": "app_profile","appId": "1438388363","appName": "Habit Tracker","country": "us","primaryGenre": "Productivity","version": "2.14.12","averageUserRating": 4.79,"userRatingCount": 141798,"ratingHistogram": { "1": 13, "2": 1, "3": 8, "4": 15, "5": 63 },"sentiment": { "positive": 78, "neutral": 8, "negative": 14, "positiveShare": 0.78 },"versionsSeen": [{ "version": "2.14.12", "count": 40 }],"topKeywords": [{ "word": "habits", "count": 24 }, { "word": "love", "count": 23 }]}
Pricing — pay for raw rows or ASO snapshots
| Event | Price | When |
|---|---|---|
app-review | $0.003 | per customer review delivered when you need raw review text |
app-profile | $0.05 | per app per storefront — the ASO intelligence snapshot |
app-review is the commodity row. The differentiated output is app-profile: official rating + total ratings, rating histogram, sentiment breakdown, top keywords, and versions seen, in one row. Turn it off (includeAppProfile: false) if you only want raw reviews; keep it on for ASO, product, and competitive research workflows.
How billing works (fair by design):
app-reviewis charged per review delivered. An app that returns no reviews produces no review charges — it's reported as a run warning only.app-profileis charged once per app per storefront, when the app's official profile is successfully retrieved. The profile carries value even with no recent reviews (official rating, total ratings, version, genre), so it is charged whenever you enable it and the app is found. If the app's metadata can't be retrieved, no profile is emitted or charged. SetincludeAppProfile: falseto never incur this event.- Recurring monitoring can avoid repeat charges: set
emitUnchanged: falseand providebaselineStableKeysfrom a previous run. Matching rows are skipped, produce 0 dataset rows, and generate 0 charges.
Use cases
- ASO reports — track keywords, ratings, and review themes for your app and competitors across storefronts.
- Product — surface bugs, churn drivers, and feature requests from recent reviews by version.
- Market & competitive research — snapshot a whole category by keyword and compare rating histograms and sentiment.
- Review monitoring / alerting — schedule recurring runs and feed new low-star reviews into your tools.
FAQ
- Does it need an account or API key? No. It uses Apple's public iTunes Search/Lookup/Customer-Reviews-RSS endpoints and Google Play's public store endpoints.
- How many reviews per app? Apple exposes the most recent ~500 per storefront (10 pages × 50). Google Play is paginated via
maxReviewPages(~100/page). Scrape more countries to widen coverage. - Which countries? Any storefront via its two-letter code (
us,gb,jp,de, ...). - Both stores? Yes — provide Apple sources (
appIds/appUrls/bundleIds/searchTerms) and/or Google Play sources (playAppIds/playUrls). Each row carries aplatformfield.
Compliance
Only public, non-authenticated Apple endpoints are used. Output is for research and analytics. Do not use review data to identify, target, or contact individual reviewers, or to generate or post fake reviews. See docs/source-compliance.md.