App Review Monitor: App Store & Google Play, Multi-Country avatar

App Review Monitor: App Store & Google Play, Multi-Country

Pricing

Pay per usage

Go to Apify Store
App Review Monitor: App Store & Google Play, Multi-Country

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 usage

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

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, app version, helpfulness votes and posting date.

It reads Apple's own public review feed and the Play Store's own review endpoint. There is no scraping of rendered pages, no headless browser, and no proxy bill.

โœ… Both stores, one schema ยท โœ… Past Apple's 500-review ceiling ยท โœ… No login or key ยท โœ… MCP-ready for AI agents

Why this returns more reviews than other App Store scrapers

Apple's review feed is capped at 10 pages of 50 reviews per country storefront. Page 11 returns an HTTP 400. That is Apple's limit, not a scraper's, so every actor that reads a single storefront tops out at 500 reviews per app and cannot go further no matter how it is written.

But the cap is per storefront, and Apple runs a separate storefront for each country, each holding that country's own reviews. Pass a list of countries and the depth scales with it.

Verified live on WhatsApp (310633997) on 2026-08-13: a run capped at 700 returned 482 reviews from the US storefront and a further 218 from India, in one dataset, past the point where a single-country scraper stops.

{
"appleAppIds": ["310633997"],
"countries": ["us", "gb", "in", "de", "br", "jp", "au", "ca"],
"maxReviewsPerApp": 2000
}

Eight storefronts were confirmed returning full 50-review pages, so roughly 3,500 reviews are reachable for a widely-published app against a 500-review single-country ceiling. Reviews are deduplicated on the store's own review ID, so overlapping storefronts never produce a duplicate row.

Input

{
"appleAppIds": ["310633997"],
"googlePlayPackages": ["com.whatsapp"],
"countries": ["us", "gb", "in"],
"maxReviewsPerApp": 200,
"sortBy": "mostrecent"
}
FieldWhat it takes
appleAppIdsNumeric App Store IDs. From apps.apple.com/us/app/whatsapp-messenger/id310633997 use 310633997. A leading id is stripped for you.
googlePlayPackagesPlay package names. From play.google.com/store/apps/details?id=com.whatsapp use com.whatsapp.
countriesTwo-letter storefront codes. This is the lever that gets you past 500 reviews per app. Applies to the App Store only.
maxReviewsPerAppHard cap per app across every country. Your main cost and runtime control.
sortBymostrecent 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": "13284729471",
"rating": 1,
"title": "I need my Liquid glass please",
"text": "I don't know why everyone else's WhatsApp Glass has updated, but mine hasn't...",
"author": "AnYelOsky",
"app_version": "26.31.74",
"vote_sum": 0,
"vote_count": 0,
"reviewed_at": "2026-08-10T22:30:45-07:00",
"scraped_at": "2026-08-13T11:02:14.881Z"
}
FieldDescription
๐Ÿช storeapp_store or google_play
๐Ÿ†” app_idApp Store numeric ID, or Play package name
๐Ÿ“ฑ app_nameApp title as published (App Store)
๐ŸŒ countryStorefront the review came from
๐Ÿ”‘ review_idThe store's own review ID, stable for deduplication across runs
โญ ratingStar rating, 1 to 5
๐Ÿ“„ titleReview headline (App Store)
๐Ÿ’ฌ textReview body
๐Ÿ‘ค authorReviewer display name
๐Ÿท๏ธ app_versionVersion the review was left against, for release-by-release analysis
๐Ÿ‘ vote_sum / vote_countHelpfulness votes (App Store)
๐Ÿ‘ thumbs_upHelpfulness count (Google Play)
๐Ÿ“… reviewed_atWhen the review was posted
๐Ÿ•’ scraped_atWhen 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"
}
FieldDescription
rating_distributionCount and percent of reviews at each star level
top_complaint_termsMost frequent words/phrases in negative review text
rating_trendAverage rating per month, only when reviews span 2+ distinct months (null otherwise)
based_on_reviews / based_on_negative_reviewsSample 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. Every row carries 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

EventPriceYou pay when
Review delivered$0.0002A review lands in your dataset
Review insights computed$0.02includeReviewInsights 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.

  1. Run once with the input you want repeated, then click Save as a task.
  2. In the Apify Console go to Schedules โ†’ Create new.
  3. Pick a frequency, daily suits most watchlists, and add the saved task.
  4. 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 500 reviews for a small app? Because the app genuinely has fewer. The 500 figure 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 exposes 500 per storefront and Google Play serves a recent window. Adding countries increases the total substantially, but a complete lifetime archive is not available from the public endpoints.

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.