Google Play Reviews Scraper | Star Filter & Reply Intel avatar

Google Play Reviews Scraper | Star Filter & Reply Intel

Pricing

from $0.06 / 1,000 review results

Go to Apify Store
Google Play Reviews Scraper | Star Filter & Reply Intel

Google Play Reviews Scraper | Star Filter & Reply Intel

Scrape Google Play app reviews at $0.08/1,000 β€” full pagination, star filter, newest/relevance sort, developer replies with reply-delay intel, keyword filter and per-app summary. HTTP-only, no login, no key.

Pricing

from $0.06 / 1,000 review results

Rating

0.0

(0)

Developer

Mr Zack

Mr Zack

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

12 days ago

Last modified

Share

Scrape Google Play app reviews for any app, at scale, for less: $0.08 / 1,000 reviews (plus a $0.01 run fee) β€” the lowest per-review price in this category on Apify. HTTP-only, no login, no API key, no browser, no proxy add-ons. Pay per result ($0.08 / 1,000 reviews + $0.01 per run), MCP-ready (call it from Claude/Cursor via the Apify MCP server).

Give it one or more package IDs (com.whatsapp) or Play Store URLs and get back clean JSON/CSV rows with the review text, star rating, timestamp, helpful votes, the app version the user was on, and β€” where the developer answered β€” the full developer reply plus how many days the reply took.

Who uses this

  • Product & support teams monitoring their own app (and their competitors') for crashes, complaints and feature requests β€” schedule it and only pay for new reviews with newerThanDays.
  • ASO / mobile-marketing analysts mining 1-star reviews of competitor apps for positioning gaps.
  • Data & ML teams building sentiment datasets: rating + text + language + country, deduplicated by review ID.
  • Agencies reporting on app reputation: the run summary gives you average rating, % 1-star, developer reply rate and median reply delay per app β€” no post-processing needed.

What you get per review

FieldDescription
appId, appTitle, appUrlWhich app the review belongs to
appScore, appRatingsCount, appDeveloper, appCategoryStore-wide context on every row (free): compare the window you scraped against the app's overall score
reviewIdStable unique ID β€” safe for dedup across runs
userNameReviewer display name
rating1–5 stars
textReview text (null for rating-only reviews β€” never a fake empty string)
reviewedAt, reviewAgeDaysISO timestamp + age in days
thumbsUpCountHelpful votes
appVersionApp version the reviewer was on β€” spot which release broke things
hasDeveloperReply, developerReplyText, developerRepliedAtFull developer response
replyDelayDaysHow long the developer took to reply β€” support responsiveness intel you won't find in other review scrapers
language, country, sortModeExactly what storefront slice this row came from

Every run also writes a SUMMARY record to the key-value store: reviews collected, average rating in the window, star histogram, % 1-star, developer reply rate, median reply delay, top app versions, plus overall app metadata (title, developer, category, lifetime score and ratings count).

Why this one

  • Price: $0.08/1k vs $0.10–$6.00/1k elsewhere in the category. Filtered-out reviews (star filter is server-side, keyword filter client-side) are never charged.
  • Reply intel: developer replies and reply-delay stats β€” most review scrapers drop or ignore replies.
  • Deep history: token-based pagination up to 100,000 reviews per app per run.
  • Any storefront: language + country inputs cover every Play locale (en/us, de/de, pt/br, id/id, …).
  • Honest data: rating-only reviews keep text: null, timestamps are validated, zero rows are never invented. Typed output schema included β€” AI agents can read the shape via MCP/API before calling.

Example input

{
"appIds": ["com.whatsapp", "https://play.google.com/store/apps/details?id=org.telegram.messenger"],
"maxReviewsPerApp": 2000,
"sort": "newest",
"starsFilter": "1",
"language": "en",
"country": "us",
"filterKeyword": "backup"
}

β†’ every 1-star English/US review of WhatsApp and Telegram that mentions "backup", newest first, with developer replies attached. Cost: at most 2 Γ— 2,000 Γ— $0.00008 + $0.01 β‰ˆ $0.33.

Example output (one real row, 7 Sep 2026)

Default input (appIds: ["com.whatsapp"], sort: "newest", maxReviewsPerApp: 500) returned 500 rows in ~20 s. One row, untouched:

{
"appId": "com.whatsapp",
"appTitle": "WhatsApp Messenger",
"appUrl": "https://play.google.com/store/apps/details?id=com.whatsapp",
"reviewId": "d40bb75a-d1a5-44b3-863d-c8624445efe9",
"userName": "Jonathan Spencer",
"rating": 1,
"text": "The most useless app I've encountered since apps were invented. I have it on my phone, and whenever I try to link it to another device - PC or tablet, using their app - the account is placed under review, during which time I can't use it, without explanation. ...",
"reviewedAt": "2026-08-28T20:40:15.000Z",
"reviewAgeDays": 8.9,
"thumbsUpCount": 4,
"appVersion": "2.26.33.74",
"language": "en",
"country": "us",
"sortMode": "newest",
"hasDeveloperReply": false,
"developerReplyText": null,
"developerRepliedAt": null,
"replyDelayDays": null
}

Cost of that run: 500 Γ— $0.00008 + $0.01 = $0.05. The SUMMARY record in the key-value store adds per-app average rating, % 1-star, developer reply rate and median reply delay.

How to schedule this Actor (the right way)

Review monitoring only makes sense on a schedule:

  1. Open the Actor β†’ Schedules tab β†’ Create new schedule (e.g. @daily).
  2. Set sort = newest and newerThanDays = 1 (or 7 for weekly runs).
  3. The run stops paging the moment it hits reviews older than the window β€” a daily WhatsApp check typically costs under a cent.
  4. Add an integration (Slack/email/webhook) on the schedule to get new 1-star reviews pushed to your team, or read the SUMMARY key for the daily reply-rate numbers.

Notes & fair use

Public data only, polite request pacing, no login, no personal data beyond what Google publicly displays with each review. Rate limits are respected with retries and backoff; if Google throttles a huge run, the Actor keeps what it collected instead of failing.

Changelog

  • 0.1.6 (4 Oct 2026) β€” Honest result when your run hits its cost limit. If a run reaches its "Maximum cost per run" (Apify also sets this to your remaining credit automatically), Apify silently stops saving rows. Before this fix the status bar still showed the full count (e.g. "697 delivered" when only 451 were saved). Now the Actor keeps the best-ranked reviews first, tells you exactly how many were held back (they are not charged), and how to get the rest.
  • 0.1.5 (1 Oct 2026) β€” No more silent empty runs. Google Play occasionally answers a cloud request with an empty review list for an app that has thousands of reviews; the Actor used to accept that and finish with 0 reviews. It now double-checks against a control app, waits and asks again (usually back within a minute), and only reports "no reviews" when Google is answering normally β€” with a plain explanation (language/country/filters) in the run header. If Google keeps refusing, the run says so instead of pretending the app is empty. No price or field change.
  • 0.1.4 (24 Sep 2026) β€” Reliability: Invalid app IDs now end as a normal run with a clear explanation instead of an error, and if Google briefly rate-limits one app the Actor waits and retries, then skips just that app while keeping every other app's reviews. Runs close to their timeout stop early and keep everything collected. No price or field change.
  • 0.1.3 (19 Sep 2026) β€” Default app changed to Spotify, plus a typo guard on input. The old default (WhatsApp) never answers reviews, so a first run showed the developer-reply columns completely empty and the Reply Intel feature looked broken. Spotify answers ~20–40 % of reviews, so the columns now demonstrate themselves. Unknown input fields (e.g. maxReviews instead of maxReviewsPerApp) are now reported in the log instead of being ignored silently.
  • 0.1.2 (16 Sep 2026) β€” A run with no input no longer fails: the example input is the default, so "Run" with an empty form (or {} via API) returns the demo dataset. Output unchanged.
  • 0.1.1 (14 Sep 2026) β€” Every review row now carries appScore, appRatingsCount, appDeveloper, appCategory (from the store page, free) so the dataset is self-contained. Existing fields unchanged.
  • 0.0.7 (11 Sep 2026) β€” newerThanDays no longer stops at the first older review inside a page (Play's newest order is only roughly chronological); the whole page is filtered and paging stops only once an entire page is older than the cutoff. Note: Play publishes reviews with a 1–3 day lag, so very small windows legitimately return few rows.
  • 0.0.6 (11 Sep 2026) β€” Fix: sort: newest was silently returning Google's "most helpful" order (Play moved the sort slot in its batchexecute payload), so newerThanDays found almost nothing. Newest now returns today's reviews (Instagram: 300 rows, all within 2 days) and star + date filters combine correctly. Live gate tightened: page 1 of newest must span ≀3 days.
  • 2026-09-07 β€” README: real example row, pricing math, related Actors. Fetch timeouts + default run limits (memory 512 MB) so a throttled run can never hang for an hour.
  • 2026-08 β€” Initial release: full pagination, star filter, newest/relevance sort, keyword filter, multi-language/country, reply-delay intel (replyDelayDays, hasDeveloperReply), newerThanDays early stop, per-app SUMMARY.

Found this useful? Bookmark & review

If it saved you time, a ⭐ review on this page helps more people find it β€” and a bookmark keeps it one click away. Hit a problem? Open an Issue on the Issues tab β€” it's actively maintained and I usually respond within a day.