App Store & Google Play Reviews and Ratings Tracker avatar

App Store & Google Play Reviews and Ratings Tracker

Pricing

from $1.00 / 1,000 app snapshots

Go to Apify Store
App Store & Google Play Reviews and Ratings Tracker

App Store & Google Play Reviews and Ratings Tracker

App Store + Google Play in one run: ratings, 1-5★ histogram, app details and the reviews each store shows, per country (all 175). Monitoring mode: only new reviews and rating changes. One stable schema, dedup, GDPR pseudonyms. Never pay for empty results.

Pricing

from $1.00 / 1,000 app snapshots

Rating

0.0

(0)

Developer

Nat | Data Tools

Nat | Data Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Track apps on both stores in one run: average rating, rating count, the 1–5★ histogram per country, app details (version, last update, installs, price, genre, developer) and the reviews each store shows, with developer replies and app versions. Works for all 175 App Store countries and every Google Play country, each with its own data. Schedule it in monitoring mode to get only new reviews and rating changes, such as "+38 new 1★ ratings in Germany since yesterday".

You never pay for a failed, empty or duplicate result. No login, no browser, no proxy to set up.

Why this Actor

This ActorTypical App Store / Google Play review actors
StoresApp Store and Google Play in one run, one schemaOne store per actor, different field layouts
CountriesMany countries per run, each with its own rating, histogram and reviews; top (40 markets) or all (175)One country per run; users report getting US or Snapchat data when they asked for Nigeria
Google Play languageDefaults to each country's language (DE → de, BR → pt-BR, NG → en), or any list you giveOne fixed language for every country
RatingsRating, count and 1–5★ histogram per country, plus a free summary across countriesReviews only; "overall rating" is a common feature request
MonitoringOnly new reviews, and app rows only when ratings move, with per-star deltasRe-download everything each run
DuplicatesRemoved across countries and languages before billingBilled again per country
SchemaFlat and stable. Every key on every row, same keys for both stores"Output JSON schema changes between runs (nested original.* vs flat)"
PrivacyReviewer names pseudonymised by default (GDPR), or kept or removedNames and avatars always included
Empty / blocked runsFail with a clear reason, not charged. A per-section dataStatus explains every empty list."Only ever get 10 back", with no reason given
Field namesSame as thewolves' scrapers: id, score, title, text, date, userName, version, thumbsUp, replyText, replyDate, criterias, country, appId, language—

What it is, and what it is not

This Actor reads only what the public store pages show, and only through the endpoints both stores allow in their robots.txt. That gives you, per app and country:

App StoreGoogle Play
Rating, rating count, 1–5★ histogram✅ per country✅ per country (Google shows one global rating count with a country-specific average and distribution)
App details✅ version, release notes, size, min iOS, price, genres, developer, content rating✅ installs, version, last update, price, in-app purchases, genre, developer, content rating, review count
Reviewsup to 18 per country (10 featured + 8 most helpful) with developer replies20 per country and language (Google's "most relevant") with developer replies, app version, thumbs-up and feature ratings

It is not a bulk review exporter. Apple's customer-reviews RSS feed (up to 500 per country) and Google Play's review-paging RPC are what bulk scrapers use, and both are disallowed by the stores' robots.txt files, so this Actor does not use them. To build a larger review history, schedule the Actor daily with Only new on. It then collects the new reviews that appear on the store pages, in every country and language you track.

Use cases

  • App teams: a daily rating and review digest for your own apps in every market, with alerts when 1★ ratings spike after a release.
  • Competitor tracking: compare ratings, histograms, versions and release cadence across countries.
  • ASO and localisation: see where an app is rated lowest, and read what users there say in their own language.
  • Sentiment and AI: feed flat, deduplicated review rows to an LLM or a sentiment model. Each row has score, text, language, country and version.
  • AI agents: call it from Claude, ChatGPT or Cursor through Apify's AI integrations. Inputs like "Nigeria", "30d" or a pasted store link all work.
  • Your own stack: run it from the Apify API, the Python or JavaScript client, Make, Zapier, n8n, Google Sheets, Slack, webhooks or a schedule; export JSON, CSV or Excel.

Quick start

1. Both stores, several countries

{
"apps": ["https://apps.apple.com/us/app/instagram/id389801252", "com.whatsapp"],
"countries": ["us", "gb", "de", "ng"]
}

→ 8 app rows (2 apps × 4 countries), up to ~150 reviews, and 2 free summary rows.

2. Ratings in every market, no reviews

{ "apps": ["570060128", "com.duolingo"], "countries": ["all"], "includeReviews": false, "includeDescription": false }

3. Daily monitoring (only new)

{
"apps": ["https://apps.apple.com/us/app/your-app/id123456789", "com.your.app"],
"countries": ["top"],
"onlyNew": true,
"monitorName": "my-apps"
}

Schedule it daily and connect Slack, email or a webhook. The first run is the baseline. After that you get only new reviews, plus app rows whose rating, count, histogram or version changed, with a changes object:

"changes": {
"isFirstCheck": false,
"previousCheckAt": "2026-10-16T06:00:04.112Z",
"ratingAverageDelta": -0.0012,
"ratingCountDelta": 412,
"newRatingsByStar": { "1": 38, "2": 9, "3": 14, "4": 41, "5": 310 },
"versionChanged": true,
"previousVersion": "9.1.88"
}

4. Complaints only, last 30 days, in English and Spanish

{ "apps": ["com.spotify.music"], "countries": ["us", "mx"], "languages": ["en", "es"], "ratings": [1, 2], "since": "30d" }

Migrating from other actors

Paste your existing input. appIds, startUrls, country, language, sort, maxItems (thewolves), appIdOrUrl, rating, ratingFilter, recentDays, endDate, keywords, appVersion, maxReviews (neatrat) and product_ids, max_reviews (johnvc) all work. Review rows keep the familiar field names.

Output

Every row has a type: app, review or summary. The dataset has three views: Reviews, Apps by country and Summary.

Review row

{
"type": "review",
"store": "googlePlay",
"appId": "com.whatsapp",
"appTitle": "WhatsApp Messenger",
"country": "de",
"language": "de",
"id": "3b7d8e89-30c5-4e13-aabd-7c638e4f70bd",
"reviewKey": "googlePlay:com.whatsapp:3b7d8e89-30c5-4e13-aabd-7c638e4f70bd",
"score": 4,
"title": null,
"text": "An sich eine gute App. Allerdings habe ich seit mindestens einem Jahr den Bug, …",
"textLength": 512,
"date": "2026-09-18T08:31:13.000Z",
"userName": "user_2cfce797185c",
"userImage": null,
"version": "2.26.36.74",
"thumbsUp": 9,
"hasReply": false,
"replyText": null,
"replyDate": null,
"criterias": [{ "criteria": "vaf_phase1_voice_messaging", "rating": 1 }],
"source": "storePage",
"url": "https://play.google.com/store/apps/details?id=com.whatsapp&reviewId=3b7d8e89-…",
"scrapedAt": "2026-10-17T09:48:44.855Z"
}

App Store reviews have the same keys. title is filled in, version, thumbsUp and criterias are empty because the App Store page does not show them, and source is featured or mostHelpful. The App Store has no per-review links, so url points to the app's Ratings & Reviews page.

App row (one app in one country)

{
"type": "app",
"store": "appStore",
"appId": "389801252",
"bundleId": "com.burbn.instagram",
"country": "gb",
"title": "Instagram",
"developer": "Instagram, Inc.",
"url": "https://apps.apple.com/gb/app/instagram/id389801252",
"genre": "Photo & Video",
"price": 0,
"currency": "GBP",
"version": "451.0.0",
"updatedAt": "2026-10-12T18:25:41Z",
"ratingAverage": 4.7005,
"ratingCount": 4221175,
"ratingCountScope": "country",
"histogram": { "1": 132403, "2": 38861, "3": 124273, "4": 369586, "5": 3556052 },
"histogramPercent": { "1": 3.1, "2": 0.9, "3": 2.9, "4": 8.8, "5": 84.2 },
"reviewsDelivered": 18,
"dataStatus": { "details": "ok", "histogram": "ok", "reviews": "ok" },
"changes": null
}

The full row also carries installs, minInstalls, reviewCount, releaseNotes, releasedAt, contentRating, sizeBytes, minOsVersion, inAppPurchases, description, screenshots and more. Keys a store does not have are null. dataStatus is ok, empty, partial, failed, unavailable or not-requested for each section.

Summary row (one app across countries, free)

ratingAverage (App Store: weighted by each country's ratings; Google Play: the mean of the country ratings), ratingCount, ratingCountScope, the summed histogram, bestCountry, worstCountry and a perCountry table.

Pricing

Pay per event. Platform usage and proxies are included. There is no start fee and no compute bill on top.

EventWhat it isPrice
App snapshotOne app in one country: details + rating + 1–5★ histogram$2.00 / 1,000 ($0.002)
ReviewOne unique review delivered (after deduplication and your filters)$0.10 / 1,000
Monitor checkMonitoring: the app was checked in that country and nothing changed$0.50 / 1,000

Paid Apify plans get lower rates automatically: snapshots go down to $1.00 / 1,000 and monitor checks to $0.30 / 1,000. You are never charged for apps that do not exist in a country, failed or blocked pages, duplicate reviews, reviews removed by your filters, or summary rows.

Examples: 2 apps × 4 countries with ~150 reviews ≈ $0.03. One app in all 40 top markets with ~500 reviews ≈ $0.13. Daily monitoring of 5 apps in 10 countries is about 1,500 checks a month, roughly $3–4 a month including new reviews, even if every check finds a change.

Before each check the Actor makes sure it fits your run's maximum cost, and it stops cleanly when the limit is reached.

Free Apify plan: up to 10 app × country checks and 200 reviews per run. This limit is set by the developer, not by Apify. Any paid plan removes it.

Good to know

  • Review volume is capped by the stores' public pages. You get up to 18 reviews per country on the App Store and 20 per country and language on Google Play. More appear over time, which is what monitoring mode collects.
  • Search by app name isn't supported. Both stores disallow automated search in robots.txt. Paste the store link instead, or an Apple id or Android package name. Apple bundle ids work too, with the prefix apple:com.example.app.
  • Google Play rating counts are global. Google shows the same total on every country page but a country-specific average and distribution. Per-star deltas for Google Play are therefore country-weighted estimates. App Store counts are true per-country counts.
  • The App Store doesn't show the app version or helpful votes for each review. Those fields stay empty for App Store reviews.
  • Reviewer names are pseudonymised by default: user_ plus a stable code, the same for the same reviewer across your runs. Set reviewerNames to include for display names and avatars, or to omit.
  • Proxies: the Actor uses Apify datacenter proxies, included in the price. It rotates IPs and backs off when a store rate-limits it. A page that still fails is listed in the run's STATISTICS record with the reason, and isn't charged.

This Actor reads public pages that anyone can open without signing in, and only the paths the stores' robots.txt files allow. It does not log in, use accounts or bypass any protection, it paces its requests, and it pseudonymises reviewer names by default. Reviews contain personal data such as display names and free text, so make sure you have a lawful basis under GDPR or similar laws for how you use them. Check Apple's and Google's terms for your use case, and talk to a lawyer before redistributing the data commercially.

FAQ

Why do I get fewer reviews than with other scrapers? Other scrapers use Apple's RSS feed and Google's internal paging RPC, which the stores' robots.txt files disallow. This Actor stays on the allowed public pages. For volume over time, run it on a schedule with onlyNew.

Can I track my own app's reviews every day? Yes. That is what monitoring mode is for: new reviews plus rating and histogram changes per country, with no duplicates across runs.

Does it work from Claude, ChatGPT or Cursor? Yes, through Apify's AI integrations. You can type countries as "Nigeria" or "top" and dates as "30d".

Which Google Play language do I get? By default, each country's main language. Set languages to collect reviews in other languages too. Each language is one more page per country, and its reviews are deduplicated against the others.

What happens when a store changes its page? Each run reports a status for every section and fails loudly instead of returning silent empties, so changes are noticed and fixed quickly. Report problems in the Issues tab.