App Review Monitor: App Store & Google Play, Multi-Country
Pricing
Pay per event
App Review Monitor: App Store & Google Play, Multi-Country
Monitor App Store and Google Play reviews in one run. Beats Apple's 500-review per-country cap by reading many country storefronts, returning rating, title, text, author, version and date. No login, no API key, pay per review.
Pricing
Pay per event
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
๐ฑ App Review Monitor: App Store & Google Play, Multi-Country
โก Pure HTTP. No login, no API key, no proxy, no browser.
๐ธ You are only charged for a review that actually lands in your dataset. Empty apps, blocked pages and failed runs are never billed.
Overview
App Review Monitor pulls customer reviews from both the Apple App Store and Google Play in a single run, and returns them in one shared schema. Give it an App Store numeric ID, a Google Play package name, or both, and it returns rating, review title, body text, author and posting date.
It reads the App Store's own reviews page and the Play Store's own review endpoint โ plain HTTP, no scraping of a rendered page, no headless browser, and no proxy bill.
โ Both stores, one schema ยท โ Country fan-out for App Store depth ยท โ No login or key ยท โ MCP-ready for AI agents
Why country fan-out still matters
Apple's public App Store reviews view returns a fixed 10 most-relevant reviews per country storefront โ no further pages, no working sort override. That ceiling is Apple's, not this actor's, and it applies to every reader of that same public page.
The cap is still per storefront, and Apple runs a separate storefront for each country, each surfacing its own set of reviews. Passing more countries still adds more reviews, just from a lower per-country floor than before โ reviews are deduplicated on the store's own review ID, so an app that happens to share a review across storefronts never produces a duplicate row.
{"appleAppIds": ["310633997"],"countries": ["us", "gb", "in", "de", "br", "jp", "au", "ca"],"maxReviewsPerApp": 80}
Verified live 2026-09-06 on WhatsApp (310633997): US alone returned 10 reviews, capped correctly at the run's maxReviewsPerApp. Set maxReviewsPerApp to roughly 10 ร number of countries to collect a full pass across your country list.
Input
{"appleAppIds": ["310633997"],"googlePlayPackages": ["com.whatsapp"],"countries": ["us", "gb", "in"],"maxReviewsPerApp": 200,"sortBy": "mostrecent"}
| Field | What it takes |
|---|---|
appleAppIds | Numeric App Store IDs. From apps.apple.com/us/app/whatsapp-messenger/id310633997 use 310633997. A leading id is stripped for you. |
googlePlayPackages | Play package names. From play.google.com/store/apps/details?id=com.whatsapp use com.whatsapp. |
countries | Two-letter storefront codes. Each one adds up to 10 more App Store reviews per app. Applies to the App Store only. |
maxReviewsPerApp | Hard cap per app across every country. Your main cost and runtime control. |
sortBy | mostrecent or mosthelpful. See the note below on Google Play. |
Output
One row per review, same shape from both stores:
{"store": "app_store","app_id": "310633997","app_name": "WhatsApp Messenger","country": "US","review_id": "13657831289","rating": 5,"title": "WhatsApp not bad","text": "WhatsApp's not bad at all\u2014it's actually great for what it does...","author": "Ed Bradway \u201cDad Warrior\u201d","reviewed_at": "2026-01-21T04:48:38.000Z","scraped_at": "2026-09-06T08:04:13.358Z"}
app_version, vote_sum and vote_count are absent here, not blank โ the App Store's current source (see below) does not expose them. They still appear on Google Play rows.
| Field | Description |
|---|---|
๐ช store | app_store or google_play |
๐ app_id | App Store numeric ID, or Play package name |
๐ฑ app_name | App title as published (App Store) |
๐ country | Storefront the review came from |
๐ review_id | The store's own review ID, stable for deduplication across runs |
โญ rating | Star rating, 1 to 5 |
๐ title | Review headline (App Store) |
๐ฌ text | Review body |
๐ค author | Reviewer display name |
๐ท๏ธ app_version | Google Play only โ the App Store's public reviews page no longer exposes this field, so it is absent (not blank) on App Store rows |
๐ vote_sum / vote_count | Google Play equivalent below; not exposed by the current App Store source, absent on those rows |
๐ thumbs_up | Helpfulness count (Google Play) |
๐
reviewed_at | When the review was posted |
๐ scraped_at | When it was captured |
A note on Google Play sorting. Play's review endpoint only serves newest-first. Requesting other orders returns an empty result from Google, so sortBy: "mosthelpful" applies to the App Store and Google Play always returns newest-first. We would rather say that plainly than quietly return nothing.
A note on Google Play and countries. The countries list applies to the App Store. Google Play is queried once per package.
Review insights (optional, includeReviewInsights: true)
Set includeReviewInsights: true to get one extra row per app: a star rating breakdown, the most common phrases in negative (1-2 star) reviews, and a month-by-month rating trend. Computed entirely from the reviews already collected for that app in the same run, no AI, no extra fetch. Off by default. Only charged when at least one review was delivered for that app. One row per App Store app (aggregated across every country you queried) and one row per Google Play package.
{"_type": "review_insights","store": "app_store","app_id": "310633997","app_name": "WhatsApp Messenger","rating_distribution": {"1_star": { "count": 40, "pct": 20.0 },"5_star": { "count": 120, "pct": 60.0 }},"top_complaint_terms": [{ "term": "keeps crashing", "count": 6 }],"rating_trend": [{ "month": "2026-07", "review_count": 90, "avg_rating": 3.9 },{ "month": "2026-08", "review_count": 110, "avg_rating": 4.1 }],"based_on_reviews": 200,"based_on_negative_reviews": 40,"computed_at": "2026-08-14T10:00:00.000Z"}
| Field | Description |
|---|---|
rating_distribution | Count and percent of reviews at each star level |
top_complaint_terms | Most frequent words/phrases in negative review text |
rating_trend | Average rating per month, only when reviews span 2+ distinct months (null otherwise) |
based_on_reviews / based_on_negative_reviews | Sample size behind the summary |
Note: there is no reply_rate_negative_pct field here, unlike our other review-insights actors. Neither Apple's public RSS feed nor Google Play's review endpoint exposes the developer's reply โ that data only exists behind Apple's private App Store Connect API โ so we leave the field out rather than report a fabricated number.
Common use cases
Release monitoring. Google Play rows carry app_version, so you can watch sentiment move release by release and catch a bad build in hours instead of at the next store-rating refresh.
Competitor tracking. Point it at a rival's app IDs on a schedule and read what their users complain about, in their own words.
Support and CX triage. Filter to 1 and 2 star reviews and route them into a helpdesk or Slack channel before they turn into store-rating damage.
Localisation and market research. Because reviews are pulled per storefront, you can compare what users in India, Brazil or Japan say against your home market rather than reading only the US view.
AI and RAG pipelines. Feed structured review text into a summariser or an agent that answers "what broke in the last release?"
Pricing
| Event | Price | You pay when |
|---|---|---|
| Review delivered | $0.0002 | A review lands in your dataset |
| Review insights computed | $0.02 | includeReviewInsights is on and at least one review was delivered for that app |
$0.20 per 1,000 reviews. Apps with no reviews cost nothing to check, which matters on a scheduled watchlist where most apps are quiet on any given day.
Run it on a schedule
Review monitoring is this actor's natural mode: reviews arrive continuously and the value is in catching them early.
- Run once with the input you want repeated, then click Save as a task.
- In the Apify Console go to Schedules โ Create new.
- Pick a frequency, daily suits most watchlists, and add the saved task.
- Wire the dataset to Sheets, Slack or a webhook from the Integrations tab.
Nothing is charged just for a schedule existing.
FAQ
Do I need an Apple or Google account? No. Both sources are public endpoints. There is no login, no API key and no OAuth.
Why do I get fewer than 10 reviews per country for a small app? Because the app genuinely has fewer. 10 per country is a ceiling, not a promise, and small or newly launched apps simply have less to return.
Can I get every review an app has ever had? No, and no scraper can. Apple's public reviews page surfaces its 10 most-relevant reviews per storefront and Google Play serves a recent window. Adding countries increases the total, but a complete lifetime archive is not available from the public endpoints Apple and Google expose without a login.
How do I avoid paying for the same review twice?
Every row carries the store's own review_id. Deduplicate on it across runs, or use it as the key when upserting into your own store.
Is scraping app reviews legal? The actor reads only publicly published reviews from public endpoints. You are responsible for how you store and use the data under the terms that apply to you.
Use from Claude, ChatGPT and any MCP agent
https://mcp.apify.com/?tools=themineworks/app-reviews-monitor
Or call it programmatically:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/app-reviews-monitor').call({appleAppIds: ['310633997'],googlePlayPackages: ['com.whatsapp'],countries: ['us', 'gb', 'in'],maxReviewsPerApp: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Questions, or need a field we don't return yet? Reach out through the Apify profile.