Google Play Scraper — Reviews, Ratings & App Details
Pricing
from $0.12 / 1,000 reviews
Google Play Scraper — Reviews, Ratings & App Details
Scrape Google Play reviews (full history, developer replies, 73 languages), app details with exact installs, rating histogram and data safety, and keyword search results.
Pricing
from $0.12 / 1,000 reviews
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Scrape Google Play reviews for any Android app: the full review history in any of the 73 review languages, newest first, most relevant first or highest rating first, with an optional star filter. Every review comes with its rating, text, date, the reviewer's display name and avatar, thumbs-up count, app version and the developer's reply with its date.
The same actor also collects app details (exact installs, rating, rating count, rating histogram, written-review count, price, in-app purchases, ads, category, content rating, version, update date, what's new, full data safety section, chart rank, developer contacts, description, screenshots, video) and Google Play search results for any keyword. No login, no Google account, no API key, no browser.
The field names match our App Store Scraper (tortuga/appstore-scraper), so you can put Android and iOS reviews of the same app into one table.
What can this Google Play scraper do?
- Reviews, full history: up to 4,000 reviews per request, as deep as the app's review list goes (tested: all 15,045 English reviews of Loop Habit Tracker back to 2016 in 4 requests; 60,000 of WhatsApp's newest English reviews in 15 requests).
- Developer replies: reply text and reply date next to each review.
- 73 languages: Google Play keeps a separate review list per language. List the languages you want (
en,de,pt,ja,zh-TW...) or enterall. - Sort and filter: newest, most relevant or highest rating first; only 1-star (or any set of stars) reviews.
- Only new reviews: set Only reviews newer than and the run stops at the first older review, so daily monitoring costs a few cents.
- App details: one row per app, country and language, including the exact install count, the 1-5 star histogram, the number of written reviews and Google's data safety declarations (data shared, data collected, security practices).
- Keyword search: the 30 apps Google Play shows for a keyword, per country and language, in store order.
How to scrape Google Play reviews
- Paste Google Play links (
https://play.google.com/store/apps/details?id=com.whatsapp) or package names (com.whatsapp) into Apps. - Choose the Languages (for example
en,es,de) or enterall. - Pick the Review order, optionally Star ratings, and set Max items to cap the cost.
- Click Start. Download the reviews as JSON, CSV or Excel from the Dataset tab, or read them through the API.
Input example: reviews
{"mode": "reviews","apps": ["https://play.google.com/store/apps/details?id=com.spotify.music", "org.isoron.uhabits"],"languages": ["en", "de"],"sort": "newest","starRatings": ["1", "2"],"maxReviewsPerLanguage": 1000,"maxItems": 8000}
Output example: review
{"type": "review","appId": "com.spotify.music","appName": "Spotify: Music and Podcasts","language": "en","country": "us","reviewId": "ad1d9be2-0959-4e98-8229-ee3ee4d9df0e","rating": 3,"title": null,"text": "I love music, it's the only thing that keeps me focused on things like drawing, love Spotify ...","date": "2026-04-10T00:04:24Z","userName": "Angel Mead (Willow)","userImage": "https://play-lh.googleusercontent.com/a-/ALV-UjVrcmkir02OyHXAex-UOTZ-uWCYMB1hqqyK7OFMFN37PtvbEX22","appVersion": "9.1.36.1948","helpfulVotes": 58,"developerResponse": "Hi. We'll pass this on to the ads team. Furthermore, have you tried a quick reinstall? ...","developerResponseDate": "2026-04-10T11:17:33Z","criteriaRatings": [{ "criterion": "vaf_app_quality_ads_frequency", "rating": 1 }],"reviewUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=ad1d9be2-0959-4e98-8229-ee3ee4d9df0e","appUrl": "https://play.google.com/store/apps/details?id=com.spotify.music"}
Review fields
| Field | Description |
|---|---|
appId, appName | Package name and app title |
language, country | Review language list the review comes from, and the country used for the request |
reviewId | Google's review ID (unique, stable) |
rating | Stars, 1-5 |
title, text | Review text; a few old reviews also have a title |
date | When the review was posted or last edited (UTC, ISO 8601) |
userName, userImage | The display name and avatar Google Play shows next to the review |
appVersion | App version the review was written for (empty when the reviewer's device did not report it) |
helpfulVotes | How many people marked the review as helpful (thumbs up) |
developerResponse, developerResponseDate | The developer's public reply, when it exists |
criteriaRatings | Google's per-topic answers attached to some reviews (e.g. ads, performance), as raw codes |
reviewUrl, appUrl | Link to the review and to the app page |
How to get Google Play app details
Set Mode to details. You get one row per app, country and language. Price, currency, rating and histogram are per country; texts follow the language.
{ "mode": "details", "apps": ["com.whatsapp", "com.mojang.minecraftpe"], "countries": ["us", "in"], "languages": ["en"] }
| Field | Description |
|---|---|
appId, name, subtitle, url | Package name, title, short description, store link |
developer, developerId, developerUrl | Developer as shown on the store |
developerEmail, developerWebsite, developerLegalName, developerCountry | Contact data from "About the developer" (country only, no street address) |
price, currency, priceFormatted, isFree | Price in that country's currency |
hasInAppPurchases, inAppPurchaseRange, containsAds | Monetisation flags, e.g. "$0.99 - $49.99 per item" |
rating, ratingCount, reviewCount, ratingHistogram | Average stars, number of ratings, number of written reviews, ratings per star ({"1": ..., "5": ...}) |
installs, minInstalls, realInstalls | Install bucket ("10,000,000,000+"), its lower bound, and Google's exact install count |
primaryGenre, genreId, genres | Category |
contentRating, contentRatingDescription, interactiveElements | Age rating and notes such as "In-Game Purchases" |
chartPosition, chartName | Top-chart rank, e.g. 1 in "top free communication", when the app is charting |
version, currentVersionReleaseDate, releaseNotes, releaseDate | Current version (empty when it "varies with device"), last update, what's new, first release |
minAndroidVersion, minSdk | Minimum Android version |
description, descriptionHtml | Full store description as text and as HTML |
dataSafety | summary lines plus sharedData, collectedData (category, data types, optional flag, purposes) and securityPractices |
privacyPolicyUrl, iconUrl, headerImageUrl, screenshots, videoUrl | Links and images |
Output excerpt:
{"type": "app","appId": "com.whatsapp","country": "us","language": "en","name": "WhatsApp Messenger","developer": "WhatsApp LLC","developerLegalName": "Meta Platforms, Inc.","isFree": true,"inAppPurchaseRange": "$0.40 - $199.99 per item","containsAds": false,"rating": 4.6176,"ratingCount": 245284017,"reviewCount": 1952357,"ratingHistogram": { "1": 10912733, "2": 3464798, "3": 8925609, "4": 21905948, "5": 200074850 },"installs": "10,000,000,000+","realInstalls": 12386768041,"primaryGenre": "Communication","chartPosition": 1,"chartName": "top free communication","currentVersionReleaseDate": "2026-10-03T02:15:46Z","dataSafety": {"summary": ["No data shared with third parties", "This app may collect these data types: Location, Personal info and 5 others", "Data is encrypted in transit", "You can request that data be deleted"],"sharedData": [],"collectedData": [{ "category": "Contacts", "types": [{ "type": "Contacts", "optional": true, "purposes": "App functionality, Fraud prevention, security, and compliance" }] }],"securityPractices": [{ "practice": "Data is encrypted in transit", "description": "Your data is transferred over a secure connection" }]}}
How to scrape Google Play search results
Set Mode to search and add keywords. Each keyword returns the apps Google Play shows (up to 30) per country and language, in store order, with searchTerm, position, appId, name, developer, rating, installs, price, priceFormatted, primaryGenre, contentRating, description, iconUrl, screenshots and url. When the keyword is an app's name, that app comes first. Feed the package names into details mode when you need histograms and data safety.
{ "mode": "search", "searchTerms": ["habit tracker", "budget app"], "countries": ["us", "gb"], "languages": ["en"], "maxItems": 200 }
Monitor changes on a schedule
Turn on Only new or changed items and save the input as a task with a Schedule (Apify Console: Saved tasks -> Schedule, for example daily). Each run remembers what earlier runs of the same input returned and outputs only what is new: reviews not seen before in reviews mode (read newest first, starting with a small page and stopping where the previous run's reviews begin), apps whose price or version changed in details mode, and apps that are new in the results or changed price in search mode. Unchanged items are skipped before they are saved, so they are not charged. Only reviews newer than also takes a period such as 3 days (counted back from each run; Google Play shows reviews about a day late, so use at least 2 days daily). Monitored items carry changeType (new or changed) and, for changed apps, previousValues with the old values of the fields that changed (e.g. {"price": 6.99}); use Monitoring key to keep several schedules on the same input apart.
How many Google Play reviews can I get per app?
All the written reviews Google keeps for the app in each language. The actor follows the same continuation token the Play website uses, 4,000 reviews per request, with no fixed cap. Two things to know:
- Reviews are grouped by language, not country. English reviews are the same whether you ask with
us,gborin. To get more reviews, add languages (or enterall). Regional variants share one list (pt-BR=pt,en-GB=en). - Reviews show up about a day late. Google Play publishes a review roughly 24 hours after it is written, so the newest review you get is about a day old (the store website shows the same).
- Most ratings have no text. WhatsApp has 245 million ratings but about 2 million written reviews; only written reviews can be listed. The details row tells you both numbers (
ratingCount,reviewCount).
Can I get the developer's replies to reviews?
Yes. developerResponse holds the reply text and developerResponseDate its date. Reviews without a reply have null.
Does it work without login or a Google account?
Yes. It reads the public data the Google Play website shows to every visitor, through the same web endpoints the site itself calls. No cookies, no account, no API key. The default Apify datacenter proxy works; each request goes out from a new IP to spread Google's per-IP limits.
How much does it cost to scrape Google Play?
You pay per result: $0.12 per 1,000 reviews, $1.00 per 1,000 app detail rows, $0.50 per 1,000 search results, plus Apify platform usage, which was about $0.005 per 1,000 reviews in our tests (20,000 reviews: $0.10). There is no start fee. Max items caps every run, and Only reviews newer than lets you pay only for new reviews when you monitor an app.
Integrations and API
Run it from Zapier, Make, n8n or Google Sheets, or call it from Python or Node with the Apify client. Schedule it daily with Only reviews newer than to track new reviews and developer replies. See the API tab for ready-made snippets.
Is it legal to scrape Google Play?
This actor collects only data that Google Play shows publicly to every visitor without an account: app pages, search results, and reviews with the display name and avatar each reviewer publishes on the store. It does not log in and does not collect anything private; for developers it exports the contact data published in "About the developer" and only the country of their address. You are responsible for how you use the data, including data-protection law (for example GDPR) when you process reviewer names, and for respecting Google's terms.
Support
Found a bug or need a field? Open an issue in the Issues tab; it is usually answered within a day.