Google Play Reviews Scraper - Thousands per App, Pay per Review avatar

Google Play Reviews Scraper - Thousands per App, Pay per Review

Pricing

$0.50 / 1,000 reviews

Go to Apify Store
Google Play Reviews Scraper - Thousands per App, Pay per Review

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

Lee Kung

Maintained by Community

Actor 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 URL
  • app_version - the version the review was written on (null when Google Play shows none)
  • at - when the review was posted
  • reply_content, replied_at - the developer's reply and its date (null when there is no reply)
  • review_id, plus package, country, lang on 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_version to 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, br or in with us reviews of the same app.
  • Developer reply tracking - reply_content and replied_at show 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)

  1. Open the Actor in Apify Console and go to the Input tab.
  2. Paste package names or Google Play URLs into Apps, set Countries (and optionally language, sort, max reviews, star filter). Click Start.
  3. When the run finishes, open the Dataset tab and export as JSON, CSV or Excel.

Prefer code? See "Use it from code" below.

Input

FieldWhat it doesDefault
apps (required)Google Play URLs or package names. Duplicates are removed.["com.whatsapp"]
countriesTwo-letter country codes (us, gb, de, in, br...). Each app is scraped once per country.["us"]
languageLanguage code sent to Google Play (en, de, es, pt...).en
sortnewest, mostRelevant or rating.newest
maxReviewsPerAppStop after this many reviews per app and country (1 to 100,000).500
onlyRating1 to 5 keeps only that star rating; 0 keeps all.0
includeAppDetailsOne 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
}
]
FieldMeaning
typereview, app, or reviews_error (see Limits)
at, replied_atISO date-times (review rows)
score, ratings, reviews_countAverage rating, number of ratings and of reviews, as Google Play reports them (app rows)
installs, real_installsInstall bracket text and raw install number from Google Play (app rows)
updatedLast 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 ApifyClient
client = 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 rowsArithmeticCost
1,0001,000 x $0.0005$0.50
10,00010,000 x $0.0005$5.00
100,000100,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_error row (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 app row carries an error field. Entries that are neither a package name nor a URL with id= are skipped; a run with no valid app fails with a message saying so.
  • Google Play's numbers, as reported. score, ratings, installs and 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.

ActorWhat it does
App Store Reviews ScraperApple App Store reviews, for the iOS side
Google Trends ScraperGoogle Trends interest over time, regions and related queries
YouTube Transcript ScraperTranscripts for a list of YouTube videos
YouTube Channel TranscriptsEvery video of a channel or playlist, with transcript
YouTube Search ScraperKeyword 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.