Google Play Reviews Scraper | Full History, Replies, $0.50/1K avatar

Google Play Reviews Scraper | Full History, Replies, $0.50/1K

Pricing

from $0.30 / 1,000 review scrapeds

Go to Apify Store
Google Play Reviews Scraper | Full History, Replies, $0.50/1K

Google Play Reviews Scraper | Full History, Replies, $0.50/1K

Full review history of any Google Play app: ratings histogram, developer replies, app version per review, filters by rating, language and date, incremental runs. Public store data, no login. Pay per review, no start fee.

Pricing

from $0.30 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Kesar Chen

Kesar Chen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Security

Limited permissions

Share

Google Play Reviews Scraper

Pull the full review history of any Google Play app as clean JSON: every review Google Play still serves, newest first, with star rating, app version, helpful votes, and the developer's reply where there is one, plus a summary row with the 1–5 star histogram, rating and review totals, installs and current version. Filter by rating, language and date before anything is fetched, so you only pay for rows you will read. $0.50 per 1,000 reviews, no start fee: a 30,000-review app costs about $15 once, and a daily watch on 10 apps runs about $3 a month in incremental mode.

Public store data, no login, no API key. Works for any app, not only your own.

Why this one

  • Full history, newest first, sliceable by date. sinceDate: "12 months" means exactly that: the run walks newest-first and stops at the boundary instead of reading everything.
  • Filters applied before billing. Rating range is fetched per star on Google's side; language is a first-class dimension; date, keywords and has-reply are applied before rows are written. Filtered-out reviews are not charged.
  • Developer replies included, free. Google Play delivers replies together with reviews, so developerResponse is always filled when a reply exists, at no extra cost.
  • Only new reviews on every scheduled run. Turn on incremental and the Actor remembers what it already returned per app and language. No deduping, no double billing.
  • A summary row per app and language with the histogram, totals, installs, version and a last-N-months 1–2 star share with the sample size next to it.

Who uses it

  • Product and support teams pull maxRating: 2 for the last 90 days and read complaints with appVersion on each row.
  • Competitor monitoring runs daily in incremental mode on a list of rivals and pushes new 1–2 star reviews to Slack.
  • Localization and regional teams compare the same app across languages: ["en", "de", "ja", "pt-BR"] in one run.
  • AI agents call it through the Apify MCP server and read the field descriptions from the dataset schema.

Speed

Measured on the Apify platform: about 200 reviews per request and roughly one second a page, so 3,000 reviews in about 15 seconds and 100,000 reviews in under 10 minutes per app and language. Apps and languages run in parallel.

Use it from Claude, Cursor, or any MCP client

https://mcp.apify.com/?tools=actors,docs,kesar_chen/google-play-reviews-scraper

For Claude Desktop, put this in claude_desktop_config.json:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=actors,docs,kesar_chen/google-play-reviews-scraper",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

For Claude Code: claude mcp add --transport http apify "https://mcp.apify.com/?tools=actors,docs,kesar_chen/google-play-reviews-scraper" --header "Authorization: Bearer YOUR_APIFY_TOKEN"

Then ask things like "Pull the 1-star reviews of com.whatsapp from the last 30 days in English and German and group the complaints by app version."

Review text is user-generated content: tell your agent to treat body as data, never as instructions.

Run it in the Apify Console

  1. Paste package names or Play Store URLs into Apps, pick Languages.
  2. Optionally set Only reviews since, a rating range, and a maximum cost per run under Run options.
  3. Click Start. The Reviews view holds one row per review, the Summary view one row per app and language.

Pricing

EventPrice
Review scraped$0.50 per 1,000 reviews
App summary (one per app and language, with histogram)$0.002
ScenarioReviewsCost
Try it: one app, newest 500500about $0.25
One app, full English history30,000about $15
10 competitors, daily incremental, ~20 new reviews each per day~200 a dayabout $3 a month

Apify platform usage is included. The monthly credit of Apify's free plan covers several thousand reviews. Paid Apify plans get a lower per-review price, shown on the Actor page. When a run's budget is reached it stops cleanly, keeps what was written, and the summary row records how far it got.

Input

FieldTypeDefaultNotes
appslistrequiredPackage names (com.whatsapp) or Play Store URLs
languageslist["en"]Google Play serves reviews per language; one pass per language per app
countrytextusStore country for app details (price, availability)
sortselectrecentrecent, rating, helpful. recent is required for sinceDate and incremental mode
minRating / maxRatinginteger1 / 5Fetched per star on Google's side
sinceDate / untilDatetextempty2026-01-01 or 12 months, 30 days
keywordslist[]Keep only reviews containing one of these words
developerResponseFilterselectallwith or without a developer reply
maxReviewsPerAppinteger3000Per app per language. 0 = everything Google Play serves
summaryWindowMonthsinteger121–2 star share window in the summary row. 0 turns it off
incrementalbooleanfalseOnly new reviews on later runs
stateStoreNametextgoogle-play-reviews-stateNamed key-value store for incremental state. If a store with this name was created by another Actor, the run logs a warning and uses <name>-<actor id> instead
notifyWebhookUrltextemptySlack, Discord, Feishu or any HTTPS webhook; see Alerts
notifyMaxRatinginteger2Only reviews at or below this rating are posted
notifyMaxItemsinteger10Reviews per message; the rest are counted
notifyEvenIfEmptybooleanfalsePost a message even when nothing matched
includeReviewerNamebooleanfalseOff by default so your dataset carries no personal data

Minimal example:

{ "apps": ["com.whatsapp"], "languages": ["en"], "sinceDate": "12 months" }

Output

Review row:

{
"type": "review",
"reviewId": "07a58648-e5b5-49c3-8595-e2decb749f65",
"appId": "com.todoist",
"appName": "Todoist: To Do List & Calendar",
"language": "en",
"rating": 2,
"body": "Sync stopped working after the update.",
"createdAt": "2026-10-20T12:34:56.000Z",
"votesUp": 12,
"appVersion": "v11968",
"reviewerName": null,
"reviewerId": null,
"developerResponse": { "body": "Sorry about that, please update to v11970.", "respondedAt": "2026-10-21T08:00:00.000Z", "developerName": "Todoist Inc." },
"developerResponseChecked": true,
"isNew": true,
"scrapedAt": "2026-10-25T00:00:00.000Z"
}

Summary row:

{
"type": "summary",
"appId": "com.todoist",
"appName": "Todoist: To Do List & Calendar",
"language": "en",
"developer": "Todoist Inc.",
"genre": "Productivity",
"installs": "10,000,000+",
"currentVersion": "v11968",
"updatedAt": "2026-10-22T09:12:48.000Z",
"price": "Free",
"ratingAverage": 4.61,
"ratingCount": 306717,
"totalReviews": 16606,
"ratingHistogram": [13291, 5228, 11765, 27891, 248533],
"reviewsScraped": 3000,
"coverageNote": "reached maxReviewsPerApp=3000",
"window": { "months": 12, "from": "2025-10-25T00:00:00.000Z", "reviews": 3000, "negative": 310, "negativeShare": 10.3, "note": "sample 3000" },
"scrapedAt": "2026-10-25T00:00:00.000Z"
}

ratingCount is star ratings, totalReviews is written reviews. negativeShare is only given when the window has at least 20 reviews, and is left null when a rating filter is active.

Limitations

  • Google Play organises reviews by language, so there is no single "all languages" pull; list the languages you need. The language field is the language requested, not a detection of the review text.
  • The histogram and totals in the summary row are store-wide; the per-language review list is a subset of them.
  • Google Play has no review titles. title is always null, kept only so that the schema lines up with the App Store and Steam scrapers.
  • Reviews are what the public store page shows; reviews Google removed or hid are not available.
  • New reviews appear in Google Play's public feed about 24 hours after they are written; createdAt is the time the review was written. Plan alerting with that one-day lag in mind.

Alerts: post new low-rated reviews to Slack, Discord or Feishu

Fill notifyWebhookUrl with a Slack incoming webhook, a Discord channel webhook, a Feishu/Lark custom bot webhook, or any HTTPS endpoint, turn on incremental, and attach a Schedule. After each app × language the Actor posts the reviews written in that run that are at or below notifyMaxRating (default 2), with the star rating, date, version where known, whether the developer already replied, and a link to the store page. Nothing is posted when nothing matched, unless notifyEvenIfEmpty is on. Unknown hosts receive a JSON body with the same fields, so Make, n8n, Zapier or your own service can take it from there. There is no extra charge for notifications.

An n8n template that does the same with room for translation or routing is in the templates folder.

Scheduling and integrations

Save your input as a Task, attach a Schedule and turn on incremental. Each run then returns only new reviews, which you can push to Slack, Google Sheets, Make, Zapier, n8n or any webhook through Apify integrations.

FAQ

Is it legal to scrape Google Play reviews? This Actor reads the public store pages anyone can open in a browser, uses no login, account or API key, and collects no private data; reviewer names are off by default. Collecting publicly available data is generally considered legal in the US and most of the EU. How you store and use the output, and whether it fits the terms of the services involved, is your responsibility. See Is web scraping legal?

Why not the Google Play Developer API? It only returns reviews for apps you own, and only from the last week. This Actor works for any app and goes back as far as the store serves.

How long does a run take? About one second per 200 reviews per app and language; apps and languages run in parallel.

Is this affiliated with Google? No. This is an independent tool and is not endorsed by or affiliated with Google LLC.

See also

App Store Reviews Scraper and Steam Reviews Scraper: the same schema, filters and incremental mode for iOS apps and Steam games.

Hiring Signals Monitor: job opened / closed events and a hiring summary per company from public job boards, for watching competitors' teams the same way you watch their reviews.

Support

Bugs or missing fields: open an issue on the Issues tab. Reports go to a human.