Google Play Reviews Scraper Pro
Pricing
$0.50 / 1,000 results
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
Maintained by CommunityActor 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 Pro | The niche leader | |
|---|---|---|
| Price | Flat per review (see the Pricing tab) — no subscription | $25/month flat subscription ($19.99 tier) |
| Small jobs | 2,000 reviews cost pocket change, once | A one-off job still pays a full month |
| Date range filter | Yes — start and end date, with early stop on newest sort | Limited |
| Rating range filter | Yes — min and max stars | Star filter only |
| Developer replies | Text + date on every review, plus a "replied only" filter | Partial |
| Per-app summary | Fetched / emitted / filtered + average rating + 1–5 star distribution | Usually absent |
| Minimums / start fees | None | Subscription commitment |
What it extracts (per review)
| Field | Description |
|---|---|
authorName | Review author's display name |
rating | Star rating, 1–5 |
text | Full review text (null for rating-only reviews) |
reviewDate | When the review was posted, ISO 8601 UTC |
thumbsUpCount | How many users marked the review helpful |
appVersion | The app version the review was written against, when Google knows it |
developerReply / developerReplyDate | The developer's public reply and when it was posted |
reviewId / reviewUrl | Google's review id and the public Play link anchoring to it |
appId | The package name the review belongs to |
Inputs
| Input | Type | Default | Description |
|---|---|---|---|
appIds | string list | — | Package names (com.whatsapp) and/or Play Store URLs — the id= parameter is read from URLs |
maxReviewsPerApp | integer | 100 | Cap on reviews emitted per app, after filters |
sortOrder | select | newest | newest, mostRelevant, highestRating, or lowestRating (see Honest limits) |
language | string | en | Storefront language (hl) |
country | string | us | Storefront country (gl) |
reviewsStartDate / reviewsEndDate | date | — | Keep reviews inside this window (inclusive, UTC) |
minRating / maxRating | number | — | Keep reviews inside this star range |
onlyWithDeveloperReply | boolean | false | Keep only reviews the developer replied to |
includeSummary | boolean | true | Emit one summary item per app |
proxyConfiguration | proxy | Apify Proxy | Standard 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), andstoppedReason(resultsExhausted,maxReviewsReached,dateRangePassed,fetchSafetyCapReached,appFailed). The identityfetched = emitted + filteredalways 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
lowestRatingis 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
nullrather than guessing when a field is absent.