Google Play Reviews Scraper - Thousands per App, Pay per Review
Pricing
$0.50 / 1,000 reviews
Google Play Reviews Scraper - Thousands per App, Pay per Review
Google Play reviews for any Android app: rating, text, author, thumbs-up, app version, date and developer reply, plus app details. Pages of 200 with a continuation token, so one run pulls thousands per app. Filter by country, language and score. Charged per review.
Pricing
$0.50 / 1,000 reviews
Rating
0.0
(0)
Developer
Lee Kung
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 days ago
Last modified
Categories
Share
Google Play Reviews Scraper - Ratings, Text and Developer Replies by Country
Scrape Google Play reviews for any Android app and get one row per review: star rating, review text, author,
thumbs-up count, app version, date and the developer's reply. Give it package names (com.whatsapp) or Play Store
URLs, pick countries, a language, a sort order and an optional star filter; it fetches reviews in pages of up to
200 with a continuation token. No Google login, no headless browser.
Each app and country also gets one free app-details row (title, developer, genre, score, rating count, installs, version). You pay only for review rows: $0.50 per 1,000 reviews.
What data you get
review rows (one per review):
rating(1 to 5),content(review text),thumbs_up(helpful votes)author,author_image- the reviewer's public display name and avatar URLapp_version- the version the review was written on (nullwhen Google Play shows none)at- when the review was postedreply_content,replied_at- the developer's reply and its date (nullwhen there is no reply)review_id, pluspackage,country,langon every row
Free app rows (one per app and country, turn off with includeAppDetails: false): app_name, developer,
genre, score, ratings, reviews_count, installs, real_installs, price, free, version, updated,
released, app_url, icon.
Use cases
- Complaint mining before a release - pull only 1-star reviews (
onlyRating: 1) and read what users say is broken. - Release monitoring - group reviews by
app_versionto see how ratings shift after an update. - Competitor research - several apps and countries in one run; every row carries
package,country,lang. - Localisation checks - compare reviews from
de,brorinwithusreviews of the same app. - Developer reply tracking -
reply_contentandreplied_atshow whether and when the developer answered. - Datasets for AI - review text labeled with its star rating, for sentiment analysis.
How to use it (quick start)
- Open the Actor in Apify Console and go to the Input tab.
- Paste package names or Google Play URLs into Apps, set Countries (and optionally language, sort, max reviews, star filter). Click Start.
- When the run finishes, open the Dataset tab and export as JSON, CSV or Excel.
Prefer code? See "Use it from code" below.
Input
| Field | What it does | Default |
|---|---|---|
apps (required) | Google Play URLs or package names. Duplicates are removed. | ["com.whatsapp"] |
countries | Two-letter country codes (us, gb, de, in, br...). Each app is scraped once per country. | ["us"] |
language | Language code sent to Google Play (en, de, es, pt...). | en |
sort | newest, mostRelevant or rating. | newest |
maxReviewsPerApp | Stop after this many reviews per app and country (1 to 100,000). | 500 |
onlyRating | 1 to 5 keeps only that star rating; 0 keeps all. | 0 |
includeAppDetails | One free app row per app and country. | true |
Newest 500 reviews of one app in the US:
{ "apps": ["com.whatsapp"], "countries": ["us"] }
Complaint mining - up to 1,000 one-star reviews per country, from a Play Store URL:
{"apps": ["https://play.google.com/store/apps/details?id=com.whatsapp"],"countries": ["us", "gb"],"onlyRating": 1,"maxReviewsPerApp": 1000}
German reviews from Germany, most relevant first, reviews only:
{"apps": ["com.whatsapp"],"countries": ["de"],"language": "de","sort": "mostRelevant","maxReviewsPerApp": 200,"includeAppDetails": false}
Output
A real run with the default input (com.whatsapp, us, en, newest; run ygfa6wsMQvEScppMO, 2026-10-02
02:56 UTC) returned 501 rows: 1 app row and 500 reviews. The app row and the third review row, long URLs and
the author name shortened:
[{"type": "app", "package": "com.whatsapp", "country": "us", "lang": "en","app_name": "WhatsApp Messenger", "developer": "WhatsApp LLC", "genre": "Communication","score": 4.617358, "ratings": 244874006, "reviews_count": 1953041,"installs": "10,000,000,000+", "real_installs": 12361119157, "price": 0, "free": true,"version": "Varies with device", "updated": 1790461914, "released": "Oct 18, 2010","app_url": "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en&gl=us","icon": "https://play-lh.googleusercontent.com/Gqxk4T0uZsDwFp07..."},{"type": "review", "package": "com.whatsapp", "country": "us", "lang": "en","review_id": "064c14b0-ffbd-411b-bf3c-32db00796436", "rating": 5, "content": "Good","author": "...", "author_image": "https://play-lh.googleusercontent.com/a/...","thumbs_up": 0, "app_version": "2.26.30.97", "at": "2026-10-01T02:55:02","reply_content": null, "replied_at": null}]
| Field | Meaning |
|---|---|
type | review, app, or reviews_error (see Limits) |
at, replied_at | ISO date-times (review rows) |
score, ratings, reviews_count | Average rating, number of ratings and of reviews, as Google Play reports them (app rows) |
installs, real_installs | Install bracket text and raw install number from Google Play (app rows) |
updated | Last update as a Unix timestamp in seconds (app rows) |
Every run also saves a SUMMARY record in its key-value store: apps, countries, total reviews, seconds taken
and whether the spending limit was hit.
Use it with AI agents (MCP)
Apify's hosted MCP server can expose this Actor as a tool to an MCP client. Use the URL
https://mcp.apify.com?tools=actors,docs,leekung125/google-play-reviews-scraper with the header
Authorization: Bearer <YOUR_APIFY_TOKEN>:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=actors,docs,leekung125/google-play-reviews-scraper","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Clients that support the browser sign-in flow can connect without a token. Example prompt: "Get the latest 200 one-star Google Play reviews for com.whatsapp in the US and group the complaints by theme."
Use it from code
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("leekung125/google-play-reviews-scraper").call(run_input={"apps": ["com.whatsapp"], "countries": ["us"], "onlyRating": 1, "maxReviewsPerApp": 200,})for row in client.dataset(run.default_dataset_id).list_items().items:if row["type"] == "review":print(row["rating"], row["app_version"], row["content"])
JavaScript (npm i apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('leekung125/google-play-reviews-scraper').call({apps: ['com.whatsapp'], countries: ['us'], onlyRating: 1, maxReviewsPerApp: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
cURL (runs the Actor and returns the rows in one call):
curl -X POST "https://api.apify.com/v2/acts/leekung125~google-play-reviews-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"apps":["com.whatsapp"],"countries":["us"],"onlyRating":1,"maxReviewsPerApp":200}'
Schedules, webhooks and integrations (Make, Zapier, n8n, Google Sheets) work with this Actor as with any Apify Actor.
Pricing
Pay per event: $0.0005 per review row ($0.50 per 1,000 reviews). That is the whole charge to you on this Actor; there is no separate compute or platform-usage fee on top.
| Review rows | Arithmetic | Cost |
|---|---|---|
| 1,000 | 1,000 x $0.0005 | $0.50 |
| 10,000 | 10,000 x $0.0005 | $5.00 |
| 100,000 | 100,000 x $0.0005 | $50.00 |
Never charged: the app row (including one carrying an error), the reviews_error row, and any app or
country that returns no reviews. Each page of reviews is charged as it is saved, one event per review row. If a
run reaches the maximum cost per run you set in Apify, it stops and keeps only the reviews that were charged.
Limits and honesty notes
- Public data only. Reviews and app details are what Google Play shows any visitor; author names are public display names. No login, no private data.
- Rate limits on big pulls. Very large pulls (tens of thousands of reviews) can hit Google Play's rate
limits. The Actor allows up to three failed page requests per app and country, waiting a few seconds and
retrying the same page; on the third failure it stops that app/country, keeps the reviews it has, and writes
a free
reviews_errorrow (status: "error", the error text,reviews_delivered). There is no proxy setting. - Fewer reviews than the maximum is normal: the Actor stops when Google Play returns no further page.
- Bad inputs. An unknown package returns no reviews and costs nothing; with app details on, its
approw carries anerrorfield. Entries that are neither a package name nor a URL withid=are skipped; a run with no valid app fails with a message saying so. - Google Play's numbers, as reported.
score,ratings,installsand review order are not recomputed. - No cross-run de-duplication. Each run starts fresh; merge scheduled runs on
review_id. - Reliability so far, measured on our own runs: 133 of 133 runs in the last 30 days succeeded (our account's
run history, read 2026-10-02). These are our own test and monitoring runs, not customer runs. We check this Actor several times a day. The 500-review run above logged 3.7 seconds of scraping in its
SUMMARY(one run, not a benchmark).
FAQ
Do I need a Google Play API key? No. The Actor reads Google Play's public web endpoints with no Google login or key. You need an Apify account (and an API token to call it from code).
Is it legal to scrape Google Play reviews? It collects only publicly visible reviews and app details. You are responsible for using the data lawfully and in line with Google Play's terms and the privacy laws that apply to you; do not resell personal data.
How many reviews can I get per app?
Up to your maxReviewsPerApp (at most 100,000 per app and country), as far as Google Play keeps returning pages.
Can I export to CSV or Excel? Yes, from the Dataset tab or the dataset API.
Can I run it on a schedule?
Yes, with an Apify schedule (for example daily, newest first). De-duplicate on review_id across runs.
Can I use it from an AI agent or MCP client? Yes, through Apify's hosted MCP server; see the MCP section above.
Why did I get fewer rows than I asked for?
Fewer matching reviews exist, three page requests failed (see the reviews_error row), the run hit your
maximum cost, or the package was not recognised.
What is charged? Only review rows, at $0.0005 each. The star filter is applied in the request to Google Play, so filtered-out reviews are never fetched or charged. App rows, error rows and empty results are free.
Related Actors
| Actor | What it does |
|---|---|
| App Store Reviews Scraper | Apple App Store reviews, for the iOS side |
| Google Trends Scraper | Google Trends interest over time, regions and related queries |
| YouTube Transcript Scraper | Transcripts for a list of YouTube videos |
| YouTube Channel Transcripts | Every video of a channel or playlist, with transcript |
| YouTube Search Scraper | Keyword in, ranked YouTube video rows out |
Support
Open an issue on the Issues tab with the run ID and your input; we read every issue.