Google Play Reviews & Ratings Scraper — 72 Languages
Pricing
Pay per event
Google Play Reviews & Ratings Scraper — 72 Languages
Get Google Play reviews in every language and each app's star rating, rating histogram, installs and price for every country, in one run. Filter by stars, date or keyword, include developer replies, and monitor only new reviews on a schedule. No reviewer names, no login.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Norton Claude
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 days ago
Last modified
Categories
Security
Limited permissionsShare
Google Play Reviews & Ratings Scraper — All Countries and Languages
Get Google Play reviews for any Android app in every language Play offers, in one run, plus each app's average rating, star histogram, installs and price in every country store. Most review scrapers read one language and one country at a time, so you miss what users in Brazil, Germany or Japan are actually saying. This actor fans out across the languages and countries you pick (or all of them), retries politely when Google pushes back, and still finishes the run if one part fails.
No login, no API key, and no reviewer names (see Privacy below).
What you can do with it
- Monitor reviews. Tick Only new since my last run, schedule it daily, and send new reviews to Slack, email or Google Sheets. You only pay for reviews you have not seen before.
- Find bugs fast. Keep 1–2 star reviews that mention crash, login or payment.
- Compare markets. One run gives you the average rating, the 1–5 star histogram, price and availability for every country.
- Read every language. Collect reviews in English, Portuguese, Japanese, Arabic and any other language Google Play lists, all labelled by language.
- Benchmark competitors. Add up to 50 apps and pull the same languages and countries for each.
- Feed AI analysis. Clean JSON with stars, text, app version, date, helpful votes and the developer's reply, ready for sentiment or topic analysis.
How Google Play is organised (read this once)
- Reviews belong to a language list, not to a country. Google Play shows the same reviews to every country for a given language. Adding more countries does not add more reviews. Adding more languages does, because each language has its own list of reviews. That is why this actor fans out over languages for reviews and over countries for ratings.
- Ratings, histograms and prices belong to a country. The average rating, the star histogram, the number of written reviews and the price differ by country store, so the rating snapshot is one row per app and country.
Input
| Field | What it does |
|---|---|
| Apps | Package IDs (com.whatsapp) or Play Store URLs. Up to 50 apps. The package ID is the part after id= in the app's URL. |
| Review languages | en by default. Codes like de, pt-BR, ja, or top (17 most used) or all (72). |
| Countries (rating snapshots) | us by default. Codes like gb, de, za, or top (20 biggest markets) or all (173). |
| Include rating snapshot per country | One row per app and country with rating, histogram, installs, version and price. |
| Max reviews per app and language | 100 by default. Google Play lets you go far deeper (tens of thousands for big apps). |
| Max reviews per app (all languages) | Optional overall cap per app. |
| Sort | Newest, most helpful, or Google's rating order. |
| Only these star ratings | For example 1 and 2 for complaints only. |
| Keywords | Keep reviews whose text contains any of these words. |
| Only reviews since | Drop reviews older than a date. |
| Include developer replies | Adds the developer's public reply and its date. |
| Only new since my last run | Monitoring mode. Give each monitor its own name. |
The defaults (WhatsApp, English, United States) give you 100 reviews and one rating snapshot the moment you press Start.
Example: complaints about crashes or login for WhatsApp in the 17 biggest languages, with ratings for the 20 biggest markets:
{"apps": ["com.whatsapp"],"languages": ["top"],"countries": ["top"],"starFilter": [1, 2],"keywords": ["crash", "login"],"maxReviewsPerLanguage": 200}
Output
Review rows (real example, reply shortened):
{"type": "review","platform": "google-play","reviewId": "deba4fbc-9b9d-426b-9de9-a654e01f242d","appId": "com.spotify.music","appName": "Spotify: Music and Podcasts","language": "en","rating": 1,"title": null,"text": "genuinely trying to listen to music but ts asking me to try again tomorrow. hell no.","appVersion": "9.1.90.2270","date": "2026-10-16T00:23:43.042Z","helpfulVotes": 0,"developerReply": "Hi [name], we hear your concerns and value your feedback. We’re always updating our free experience. ...","developerReplyDate": "2026-10-16T09:56:30.899Z","reviewUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=deba4fbc-9b9d-426b-9de9-a654e01f242d","scrapedAt": "2026-10-17T00:35:44.195Z"}
Rating snapshot rows (type: "app", real example, release notes shortened):
{"type": "app","platform": "google-play","appId": "com.whatsapp","appName": "WhatsApp Messenger","bundleId": "com.whatsapp","country": "us","developer": "WhatsApp LLC","primaryGenre": "Communication","price": 0,"currency": "USD","free": true,"averageRating": 4.621971,"ratingCount": 245868316,"ratingHistogram": { "1": 10741271, "2": 3411502, "3": 8895522, "4": 21954456, "5": 200865486 },"writtenReviewCount": 1949924,"installs": "10,000,000,000+","minInstalls": 10000000000,"currentVersion": null,"currentVersionReleaseDate": "2026-10-13T15:53:15.000Z","releaseNotes": "• You can now choose to share recent group history with new members ...","contentRating": "Everyone","minimumOsVersion": null,"offersInAppPurchases": true,"available": true,"url": "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en&gl=US","scrapedAt": "2026-10-17T00:42:03.904Z"}
currentVersion and minimumOsVersion are empty for apps whose Play page says "Varies with device" (WhatsApp is one). They are filled in for apps that publish a fixed version.
The dataset has two views: Reviews and Ratings by country. Export as JSON, CSV, Excel or HTML, or read through the Apify API. Every run also writes a Run summary record (see Reliability).
Pricing
Pay per result. There is no start fee, and Apify platform usage is included:
- $0.15 per 1,000 reviews ($0.00015 each)
- $0.001 per rating snapshot (one app in one country)
Examples:
- Default run (100 reviews, 1 snapshot): about $0.016.
- 100 recent reviews in each of 5 languages plus snapshots for 20 countries: 500 reviews + 20 snapshots, about $0.095.
- One app in all 72 languages at 500 reviews each, one snapshot: about 34,000 reviews, about $5.20.
- A daily monitor that finds 30 new reviews: under half a cent, plus snapshots if you leave them on.
Set a maximum cost on the run and the actor stops cleanly when it is reached, with exactly the reviews you paid for. The proxy option is off by default; turning it on can add proxy traffic to your Apify bill.
Speed
Measured on live Google Play:
- Defaults (100 reviews, 1 snapshot): about 1.5 seconds.
- 1,500 reviews across 5 languages plus 20 country snapshots: about 4 seconds.
- 3,400 reviews across 17 languages for 7 countries: about 7 seconds.
- Snapshots for all 173 countries of one app: about 8 seconds.
- About 34,000 reviews across all 72 languages of one app: under a minute.
- Filters take longer because the actor has to read past the reviews you do not want. 1–2 stars with three keywords over the last 20 days for a very busy app took about 45 seconds.
Reliability
Google Play's public pages are not a contract, so the actor is built to survive hiccups:
- Every request is retried up to 6 times with exponential backoff and jitter. If Google says "slow down", all parts of the run pause together.
- A bounded number of requests run at once (4), so a big run does not hammer Google.
- One failing language, country or app never kills the run. The rest is delivered and the run finishes as partial.
- The Run summary record (key-value store, key
RUN_SUMMARY) lists what happened: apps that were not found, inputs that were skipped (with the reason), languages or countries that failed after all retries, apps not offered in a country, reviews saved per language, request and retry counts, and whether a spending limit stopped the run. - If you give it a package ID that does not exist, you get an entry in the summary and everything else still runs.
Limits
- Reviews are tied to languages. If you want to cover a market, add its languages. Country codes only change the rating snapshots.
languageis the Google Play language list a review came from, not a detected language. A reviewer with an English phone can write in Portuguese and will appear underen.- Tens of thousands per language, not necessarily everything. Deep paging worked past 40,000 reviews for the biggest apps in testing, but Google decides how far its list goes. For a full history of a busy app, run regularly with Only new and keep the results.
- Star filter. One star value is filtered by Google (fast). Several values (for example 1 and 2) and keywords are filtered by the actor after downloading, so the actor reads up to 100 times your per-language cap, and at least 10,000 reviews, looking for matches. Reading is free; you pay only for reviews saved. If matches are rare you may receive fewer than your cap.
- Only-new stops reading a language after 25 reviews in a row that you already have, so it works best with Newest. A review the reviewer edits keeps its ID and is not delivered again. The memory holds up to 150,000 review IDs per monitor name, shared by all the apps in that monitor.
- Rating snapshots. Average rating, histogram, written-review count and price are per country. The total rating count shown on Google Play is global. Small countries share regional rating buckets, so neighbours can show identical numbers. An app that is not offered in a country gets a snapshot only if people there rated it, and it is marked
available: false. - Very large runs. The default 512 MB of memory handles tens of thousands of reviews. For runs above about 100,000 reviews, raise the run's memory to 1,024 MB or more.
- Google can change its pages. If a field disappears, it comes back as
null; if a whole page type breaks, the failure is listed in the run summary instead of crashing the run. - Paid apps show the price in the country's currency. The actor does not log in, so it cannot see purchase or device details.
Privacy
The actor reads public Google Play pages. It does not output reviewer names, profile pictures or profile links, and it never stores them.
Developer replies often open with the reviewer's first name ("Hi Alex, ..."). The actor replaces the reviewer's display name in the reply with [name]. Review text is delivered exactly as written, so a reviewer who typed their own name or contact details into a review will have them in the text. Treat the text with care under GDPR, POPIA or your local law.
This actor is independent and not affiliated with Google.
Using it with the App Store Reviews & Ratings Scraper
We also publish the App Store Reviews & Ratings Scraper — All 174 Countries, which does the same job for Apple's App Store. The two actors use the same field names for everything they have in common (type, reviewId, appId, appName, rating, title, text, appVersion, date, helpfulVotes, scrapedAt, and for rating rows bundleId, country, developer, primaryGenre, price, currency, averageRating, ratingCount, currentVersion, currentVersionReleaseDate, releaseNotes, contentRating, minimumOsVersion, url), so you can put both datasets in one table. Differences to know about:
- App Store reviews are split by country; Google Play reviews are split by language. Google Play review rows carry
language, App Store review rows carrycountry. - Google Play reviews have no title (
titleis alwaysnull), and havedeveloperReply,developerReplyDateandreviewUrl. The App Store hastotalVotes. - Google Play rows have a
platformcolumn (google-play), which is handy when you merge the two. appIdis a number on the App Store and a package name (com.whatsapp) on Google Play;bundleIdis the package name on both.
FAQ
Why do I get the same reviews when I add more countries? Because Google Play does not split reviews by country. Add more languages for more reviews, and more countries for more rating snapshots.
Do I need a proxy? Normally not. The actor worked without one in our testing, and the proxy option is off by default. Turn it on only if Google starts blocking your runs.
How do I monitor an app? Set Only new since my last run to on, choose a monitor name, sort by Newest, and put the actor on a schedule. The first run saves what exists (up to your caps); later runs save only reviews that appeared since. Use a different monitor name for each set of apps and languages.
What happens when I set a maximum cost? The actor works out how many more reviews fit in the budget before saving each batch, saves exactly that many, and stops. It never saves more than you pay for.
Why do ratings here differ slightly from my phone? Google shows country-specific ratings and refreshes them continuously. The snapshot is the value at the moment of the run.
Something is missing or looks wrong. Open an issue on the Issues tab with the package ID, the languages and countries, and the run ID.
Changelog
- 1.0: First release. 72 review languages, 173 country snapshots, star, date and keyword filters, developer replies, only-new monitoring, retries with a per-run failure summary.