Google Play Reviews Scraper
Pricing
from $0.07 / 1,000 review scrapeds
Google Play Reviews Scraper
Scrape Google Play Store reviews for any Android app - rating, text, date, thumbs up, app version and the developer reply - plus the app store listing, in any country and language.
Pricing
from $0.07 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Returns reviews for any app on the Google Play Store: star rating, review text, date, thumbs-up count, the app version the reviewer was running, and the developer's public reply. It also returns the app's own store listing - name, developer, category, content rating, icon, aggregate score, rating count and price - so a run tells you what the app is as well as what people said about it.
Give it an Android package name (com.spotify.music) or just paste a Play Store
URL. Several apps in one run is fine.
Read this before you pay for a run
- It walks, it does not jump. Play serves reviews in pages behind a
continuation token, and this actor follows that token until it runs out or
maxReviewsis reached. There is no page number you can skip to, here or in any other tool, because Play does not expose one. - A quiet app returns everything it has, which may be little.
maxReviewsis a ceiling, not a promise. If Play stops handing out tokens, the run stops and the log says so. - The three sort orders return different reviews.
newest,ratingandhelpfulnesseach walk their own ordering. Running more than one collects more than any single one does. - The star filter narrows the pool. Asking for 500 one-star reviews of an app with a few thousand reviews will return fewer than 500. That is the app, not the actor.
countryandlanguagedo different jobs.country(Play'sgl) picks which store the listing is read from - price, availability.language(Play'shl) is what actually biases which reviews come back:hl=jareturned Japanese reviews for the same app thathl=enanswered in English. Neither one is a hard filter on the reviewers' countries; Play does not offer one.- Residential proxy is required, and it is the default. Google rate limits its reviews endpoint per exit address. No proxy country is pinned on purpose - pinning one narrows the address pool enough to start drawing 403s.
Output
One record per review, type = "review":
| Field | Notes |
|---|---|
id | Google's review id. Used for de-duplication across pages. |
app_id | The Android package name, e.g. com.spotify.music. |
app_name | The app's display name, read from its store page. |
country / language | The gl and hl the run asked for. |
rating | 1-5. |
content | The review text. Empty string when the reviewer left a star rating and no words, which is common. |
updated | ISO 8601, UTC. |
author_name | The reviewer's display name. |
author_image | Avatar URL, or null. |
app_version | The version the reviewer was running. Often null - Play only attaches it when the review came from a device that reported one. Null means "not recorded", never "version 0". |
vote_count | Thumbs up. Genuinely 0 for most reviews. |
reply_content / reply_updated / reply_author | The developer's reply, its date, and who signed it. All three are null together when there is no reply. |
review_url | A link that opens this review on the store page. |
Plus one record per app, type = "app", unless you turn includeAppDetails
off. App rows are not charged for.
| Field | Notes |
|---|---|
app_id, app_name, url | The listing. |
description, developer, developer_url | From Google's own schema.org markup. |
category | Google's category slug, e.g. MUSIC_AND_AUDIO. |
content_rating, icon | As shown on the store page. |
score | The aggregate star rating, 1.0-5.0. Null on apps with too few ratings. |
ratings | How many ratings that aggregate is over. This is larger than the review count - most raters leave no text. |
price, currency, free | price is 0.0 and free is true for a free app. All three are null when the page carried no offer, which happens for apps not distributed in the requested country. |
Nulls are measurements
Nothing here is filled in with a zero to make a column look tidy. A null
app_version means Play did not record one; a null score means the app has
too few ratings for an aggregate. If you see 0, Google sent 0.
Pairing it with the iOS side
The field names match the App Store Reviews Scraper wherever the two stores
mean the same thing - id, app_id, app_name, country, content,
rating, author_name, app_version, updated, vote_count - so you can run
both and union the rows to get one table across both platforms. Two differences
are real rather than cosmetic: app_id is a package name here and a number on
iOS, and Play reviews have no title, so there is no always-empty title column
pretending otherwise.
Billing
actor-start, once per run, charged only after your input parses. A run that fails on its own input costs nothing.review-scraped, once per review row. App rows are free, and a review that Play hands back twice mid-walk is charged once.