Google Play Reviews Scraper Pro avatar

Google Play Reviews Scraper Pro

Pricing

$0.50 / 1,000 results

Go to Apify Store
Google Play Reviews Scraper Pro

Google Play Reviews Scraper Pro

Extract Google Play app reviews with ratings, full text, dates, thumbs up counts, app versions and developer replies. Filter by date and rating, sort four ways, choose language and country, and get a per-app analytics summary with the full star distribution.

Pricing

$0.50 / 1,000 results

Rating

0.0

(0)

Developer

Goldenbios

Goldenbios

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Extract Google Play Store reviews for any Android app — author, star rating, full text, date, helpful count, the app version reviewed, and the developer's public reply. Sort by newest, most relevant, highest or lowest rating; filter by date range, rating range, or "developer replied only". Every app ends with a summary item that accounts honestly for what was fetched, emitted, and filtered, with the 1–5 star distribution of the result set.

Built for app developers doing ASO and review mining, support teams tracking complaints after a release, and market researchers comparing competitors' ratings over time.

Why this actor?

Google Play Reviews Scraper ProThe niche leader
PriceFlat per review (see the Pricing tab) — no subscription$25/month flat subscription ($19.99 tier)
Small jobs2,000 reviews cost pocket change, onceA one-off job still pays a full month
Date range filterYes — start and end date, with early stop on newest sortLimited
Rating range filterYes — min and max starsStar filter only
Developer repliesText + date on every review, plus a "replied only" filterPartial
Per-app summaryFetched / emitted / filtered + average rating + 1–5 star distributionUsually absent
Minimums / start feesNoneSubscription commitment

What it extracts (per review)

FieldDescription
authorNameReview author's display name
ratingStar rating, 1–5
textFull review text (null for rating-only reviews)
reviewDateWhen the review was posted, ISO 8601 UTC
thumbsUpCountHow many users marked the review helpful
appVersionThe app version the review was written against, when Google knows it
developerReply / developerReplyDateThe developer's public reply and when it was posted
reviewId / reviewUrlGoogle's review id and the public Play link anchoring to it
appIdThe package name the review belongs to

Inputs

InputTypeDefaultDescription
appIdsstring list—Package names (com.whatsapp) and/or Play Store URLs — the id= parameter is read from URLs
maxReviewsPerAppinteger100Cap on reviews emitted per app, after filters
sortOrderselectnewestnewest, mostRelevant, highestRating, or lowestRating (see Honest limits)
languagestringenStorefront language (hl)
countrystringusStorefront country (gl)
reviewsStartDate / reviewsEndDatedate—Keep reviews inside this window (inclusive, UTC)
minRating / maxRatingnumber—Keep reviews inside this star range
onlyWithDeveloperReplybooleanfalseKeep only reviews the developer replied to
includeSummarybooleantrueEmit one summary item per app
proxyConfigurationproxyApify ProxyStandard Apify Proxy is normally enough; RESIDENTIAL is the fallback for repeated 403s

Outputs

Three item types share one dataset, told apart by the type field:

  • review — one per review, fields as in the table above.
  • summary — one per app: fetchedCount, emittedCount, filteredOutCount, averageRating, ratingDistribution (emitted reviews per star), and stoppedReason (resultsExhausted, maxReviewsReached, dateRangePassed, fetchSafetyCapReached, appFailed). The identity fetched = emitted + filtered always holds, so you can see exactly what your filters cost you.
  • error — one per failed app (for example a package name that does not exist), with the reason; if every app fails, the run itself is marked failed rather than returning an empty success.

Recipes

Release damage check. App: your own package. sortOrder: newest, reviewsStartDate: the release date, maxRating: 2. You get exactly the angry reviews since the update, and the summary's distribution shows the damage shape.

Replied vs ignored. Run once with onlyWithDeveloperReply: true, once without, same window. The difference is your unanswered-review backlog, ready for a support sprint.

Competitor pulse. App ids: your top 3 competitors. sortOrder: mostRelevant, maxReviewsPerApp: 200. The summary's averageRating and star distribution per app compare directly.

Lowest-rated recent complaints. sortOrder: lowestRating, maxReviewsPerApp: 50 — the worst of the recent stream (see the honest note below on how lowest is built).

FAQ

How much does a typical job cost? Pricing is flat per review with no subscription and no start fee — see the Pricing tab. 10,000 reviews across 5 apps is one run, one per-review charge, nothing monthly.

Can it get ALL reviews of a huge app? The stream is paginated to exhaustion — the summary's stoppedReason: resultsExhausted tells you the stream ended. Very large caps take proportionally longer (one request per 100 reviews).

Why is a review I see in the Play app missing? Google serves the review stream per storefront country and language (country / language inputs). A review visible in one storefront may not be in another. Match the inputs to the storefront you are looking at.

Does it need my Google account? No. Reviews are read from the Play Store's public web endpoint; there is no login and nothing to connect.

Honest limits

  • lowestRating is built, not native. Google's public endpoint has no lowest-first stream, so the actor fetches the newest stream and sorts it ascending: "lowest" means lowest among the most recent reviews fetched, not the app's all-time lowest. The other three sort orders are Google's own streams.
  • Public stream only. These are the reviews Google shows publicly on the storefront for the chosen country/language — not Play Console data (no private or deleted reviews, no reply threading beyond the one public reply).
  • Rating-only reviews have text: null — that is what the user posted, not a scrape gap; they still count in the summary's distribution.
  • Google occasionally reshapes its payloads; the parser reads typed slots defensively and emits null rather than guessing when a field is absent.