Google Play Reviews Scraper — See Why the Rating Moved avatar

Google Play Reviews Scraper — See Why the Rating Moved

Pricing

from $0.08 / 1,000 reviews

Go to Apify Store
Google Play Reviews Scraper — See Why the Rating Moved

Google Play Reviews Scraper — See Why the Rating Moved

Scrape Google Play reviews: full text, star, author, date, thumbs-up, app version, and the developer's reply. It also tracks each app's rating over time, so when the rating drops you can read the reviews that caused it. No login, no cookies, no API key.

Pricing

from $0.08 / 1,000 reviews

Rating

0.0

(0)

Developer

Northbell

Northbell

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

9 hours ago

Last modified

Share

Scrape Google Play reviews — full text, star, author, date, thumbs-up, app version and the developer's reply. No login, no cookies, no API key.

And then the part other review scrapers do not do: it also records each app's rating over time, so when the rating moves you can pull up the exact reviews that arrived in that window. Every review row carries arrivedSinceLastRun and duringRatingDropAlert.

A one-off scrape tells you what people wrote. This one tells you what changed, and which reviews changed it.

The number that goes stale the moment you read it

An app showing 4.3 stars from 36 million ratings tells you where it has been. It says nothing about which way it is moving right now. A wave of 1-star reviews after a bad update barely dents a 36-million average — the headline number keeps saying 4.3 while users are furious.

A rating cannot be back-filled. There is no endpoint that tells you what an app's rating was last Tuesday, or what the reviews that came in yesterday averaged. If you did not record it, that day is gone. This Actor records it and keeps the series:

com.example.app — 4.314.294.24 over three days
day 3: +812 new ratings, averaging 2.1 ⚠ well below the app's 4.24 norm

The trick Google Play makes possible

Play reports an app's average to full precision4.343131065368652, not a rounded 4.3. Combined with the exact rating count, two observations are enough to recover the average of everything that landed between them:

new-reviews average = (count×avg now − count×avg last time) ÷ (new ratings)

So without reading a single review body, you learn that the 812 ratings added since yesterday averaged 2.1 — and that is a fire alarm a static 4.24 would never trip.

It refuses to guess when it can't. On a 36-million-rating app, three new ratings move the average by less than the precision allows, so the recovered figure would be noise. When that happens newRatingsAverageReliable is false and the Actor does not pretend. A number without that flag is a number that will eventually lie to you.

What you get

Every run appends to your dataset. Rows are tagged by type.

app — one row per app:

fieldmeaning
averageRating, ratingCountthe app's overall rating and how many ratings, right now
installs, category, price, developerthe listing
ratingsAddedSinceLastRunhow many ratings arrived since you last ran
newRatingsAveragethe average of just those new ratings
newRatingsAverageReliable, newRatingsAverageErrorBoundwhether that figure can be trusted, and its margin
ratingDropAlert, ratingDropGapset when new reviews run a full star or more below the app's norm — even after the error margin is subtracted
firstSeenAt, observations, hoursSinceLastRunyour own series
removedthe app is gone from that country's store — recorded, not treated as an error

review — one row per review:

fieldmeaning
score, textthe star and the full review body
textEmptytrue when someone left a star but no words — common, and worth counting separately
author, at, thumbsUpwho wrote it, when, and how many found it helpful
appVersionthe app version the reviewer was on — the field that tells you which release broke things
replyFrom, replyText, replyAtthe developer's reply, when there is one
arrivedSinceLastRunthis review landed after your previous run
duringRatingDropAlertthis review was pulled on a run where the rating alarm fired
reviewId, urlstable id and a direct link

Order them by newest, most helpful, or highest rated. Narrow to a star range if you only want the complaints — Google Play has no star filter upstream, so this Actor fetches and then filters, which is stated plainly in the input so the cost is no surprise.

Runs daily

Point it at your app (and your competitors' apps) and run it once a day. The first run is a baseline; from the second run on you get velocity and alerts. History lives in a named key-value store, so it survives between runs.

No login. Not as a policy — as a property of the code.

This Actor reads only the public Play Store page an anonymous visitor sees. It never signs in and never sends a cookie; the input schema refuses any field that looks like cookie, token, session or password. Unit tests assert the no-login behaviour and the recovery maths.

Two things it gets right

A removed app is data, not a failure. When an app 404s, the Actor records removed: true with the last rating it saw — that is the end of the app's life in that store, which is exactly what you were watching. It does not fail the run.

It never ends green and empty. If every app fails to load, the run is marked failed with an error row you will actually see — because a silent empty result is the worst outcome for something you check once a day.

Input

{
"appIds": ["com.spotify.music", "com.duolingo"],
"country": "US",
"language": "en"
}

Paste a full Play Store URL instead of a package name and the id is taken from it. Ratings differ by country store, so set country to the market you care about.

Sizing and cost

One request per app. Pay per event:

eventwhen
Actor startonce per run
App checkedone app's rating recorded (a removed or errored app is not charged for the check)

On data and privacy

This Actor records an app's public numbers — rating, review count, installs. It does not read, store or return reviewer names, profiles or review text. The persistent history holds counts and dates only.

Running locally

npm install
npm test # 22 unit tests, no network, including the no-login guarantee and the recovery maths

For AI agents

This Actor works well as an agent tool: the input schema is small and fully described, every run returns structured rows, and failures come back as data rather than silent gaps. Use it when you need to:

  • track a Google Play app's rating and review count over time
  • get the average rating of new Google Play reviews since the last run
  • detect when new reviews of an Android app run well below its normal rating

More no-login scrapers by northbell

Every one of these reads only public pages — no login, no cookies — and most of them record the numbers that cannot be back-filled if you don't capture them today.

LinkedIn jobs

LinkedIn companies

App stores