Google Play ASO Scraper — Reviews, Rankings, Competitors
Pricing
from $3.40 / 1,000 app data results
Google Play ASO Scraper — Reviews, Rankings, Competitors
All-in-one Google Play intelligence: app details + ratings histogram, reviews (star/date filters), keyword rankings with ASO popularity/difficulty/opportunity scores, top charts, similar-apps competitor maps, permissions, install & revenue estimates. Multi-country batching, no login/proxies/browser.
Pricing
from $3.40 / 1,000 app data results
Rating
0.0
(0)
Developer
Nomad.Dev
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
All-in-one Google Play intelligence for App Store Optimization: full app details with ratings histogram and install / revenue estimates, paginated reviews with sort / star / date-range filters, keyword search rankings with ASO popularity / difficulty / opportunity scores, top charts per category and country, similar-apps competitor mapping, and app permissions — all optionally batched across multiple store countries in one run. No login, no proxies, no browser.
What Google Play data does this scraper extract?
Six modes, one Actor. Every item carries type and appId, so you can mix runs in one pipeline.
| Mode | What you get |
|---|---|
app-details | Full metadata per app: title, developer, score, ratings count, installs, price, IAP, content rating, release/update dates, description, category — plus the ratings histogram (1–5 star counts and percentages) and install / revenue estimates (installsEstimate, revenueEstimate) |
reviews | Reviews with automatic pagination: text, score, thumbs-up count, app version, date, developer reply. Sort by newest / rating / relevance, filter to a single star rating and/or a reviewsNewerThan date cutoff |
search | Ranked search results per keyword — track where you and competitors rank, and get ASO keyword scores on every result: popularityScore, difficultyScore, opportunityScore (0–100), plus resultsCount and avgScore |
top-charts | Top free / top paid / top grossing for any category (APPLICATION, GAME, FINANCE, HEALTH_AND_FITNESS, …) and country |
similar-apps | Apps the Play Store shows next to a given app — instant competitor map, with "similar" vs "more by developer" relation |
permissions | Every Android permission an app requests, grouped by category (Location, Camera, Contacts, …), with group and total counts |
Input
| Field | Type | Notes |
|---|---|---|
mode | select | app-details (default), reviews, search, top-charts, similar-apps, permissions |
appIds | list | Package names (com.spotify.music) or full Play Store URLs — for details / reviews / similar / permissions |
searchQueries | list | Keywords for search mode |
language | string | Store locale (hl), default en |
country | string | Store country (gl), default us. Ignored if countries (below) is a non-empty list |
countries | list | Run the selected mode once per store country in one run (e.g. ["us", "gb", "de"]). Non-empty countries takes precedence over the singular country. Every output record gets a country field either way, so downstream consumers see one consistent field regardless of which one you used. Multiplies cost roughly N× |
reviewsSort | select | newest (default), rating, relevance. Forced to newest whenever reviewsNewerThan is set |
reviewsFilterScore | 0–5 | Only reviews with this star rating; 0 = all |
reviewsNewerThan | date (YYYY-MM-DD) | Only reviews posted on/after this date (reviews mode). Reviews are fetched newest-first and fetching stops as soon as an older review is seen — composes with maxReviewsPerApp below: whichever limit is hit first wins. Empty = no date filter |
maxReviewsPerApp | int | Default 200; pagination is automatic. Stops at whichever limit is hit first: this count, or the reviewsNewerThan cutoff |
topChartsCollection | select | TOP_FREE, TOP_PAID, GROSSING |
topChartsCategory | string | APPLICATION, GAME, or a specific category id |
maxResults | int | Per query / chart / similar lookup (search max 30, charts max 500) |
fullDetail | bool | Enrich search / chart / similar items with the full app record |
maxItems | int | Hard cap on total output across the whole run (all countries combined). Default 100. Each item is billed at $0.004 — e.g. 500 items ≈ $2.05. 0 = no cap (use with caution) |
concurrency | int (Advanced) | Parallel app-page fetches, default 4, max 8. Leave at default unless you have a reason to change it |
How to scrape Google Play reviews and rankings with this Actor
- Pick a mode and fill in
appIdsorsearchQueries. - Set
country/languagefor the store front you care about. - Run and export JSON, CSV or Excel — or call it over the API:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/google-play-aso-scraper").call(run_input={"mode": "reviews","appIds": ["com.spotify.music"],"reviewsFilterScore": 1,"reviewsNewerThan": "2026-06-15", # e.g. your last release date"maxReviewsPerApp": 500,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["score"], "|", item["at"], "|", item["content"][:80])
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~google-play-aso-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"mode": "app-details", "appIds": ["com.spotify.music", "com.duolingo"]}'
Output example
Every item, in every mode, carries a country field — the store front it was fetched from. In a single-country run that's just your country input echoed back; in a countries batch run it tells you which of the N countries produced that record.
app-details item:
{"type": "app","appId": "com.spotify.music","country": "us","title": "Spotify: Music and Podcasts","developer": "Spotify AB","score": 4.33,"ratings": 35851935,"installs": "1,000,000,000+","realInstalls": 2143548419,"free": true,"genre": "Music & Audio","contentRating": "Teen","ratingsHistogram": {"1": 3719223, "2": 1084262, "3": 1329664, "4": 3060904, "5": 26657859},"ratingsHistogramPct": {"1": 10.37, "2": 3.02, "3": 3.71, "4": 8.54, "5": 74.35},"installsEstimate": 2143548419,"revenueEstimate": null,"url": "https://play.google.com/store/apps/details?id=com.spotify.music"}
search item (keyword rankings with ASO scores — popularityScore / difficultyScore / opportunityScore repeat on every result of the same query, so any single row tells you the keyword's ASO profile):
{"type": "search-result","appId": "com.spotlightsix.zentimerlite2","country": "us","query": "meditation","rank": 1,"title": "Insight Timer - Meditation App","score": 4.71,"installs": "10,000,000+","popularityScore": 63,"difficultyScore": 71,"opportunityScore": 18,"resultsCount": 20,"avgScore": 4.62}
reviews item:
{"type": "review","appId": "com.spotify.music","country": "us","reviewId": "8b4f6a...","userName": "Jane D.","content": "Shuffle keeps playing the same 20 songs...","score": 2,"thumbsUpCount": 341,"reviewCreatedVersion": "9.0.42","at": "2026-06-29T14:03:11","replyContent": null}
similar-apps item:
{"type": "similar-app","sourceAppId": "com.spotify.music","country": "us","appId": "com.aspiro.tidal","relation": "similar","rank": 7,"url": "https://play.google.com/store/apps/details?id=com.aspiro.tidal"}
permissions item:
{"type": "permissions","appId": "com.duolingo","country": "us","permissions": {"Camera": ["take pictures and videos"],"Microphone": ["record audio"],"Storage": ["read the contents of your USB storage"],"Other": ["view network connections", "full network access"]},"permissionGroups": 4,"permissionCount": 5}
Pricing
Pay per event: $0.05 per Actor start and $0.004 per item returned.
500 reviews ≈ $2.05. No subscription — pay only for what you fetch.
maxItems defaults to 100 (≈ $0.45) so a zero-config run stays cheap. Using countries with N countries runs the mode N times, so cost scales roughly N× — set maxItems accordingly.
Use cases
- Review intelligence — 1-star reviews after every release. Set
mode: "reviews",reviewsFilterScore: 1andreviewsNewerThanto your release date; the Actor fetches reviews newest-first and stops the moment it reaches a review older than that date, so you get exactly "1-star reviews since I shipped X" — feed them to an LLM, ship fixes before ratings sink - ASO keyword research & tracking — daily rank of your app vs competitors for your target keywords, per country (use
countriesto track multiple store fronts in one run). Every result carriespopularityScore/difficultyScore/opportunityScore(0–100), so you can prioritise high-traffic, low-competition keywords without a separate ASO tool - Competitor mapping —
similar-apps+fullDetailgives you every rival's score, installs and pricing in one run - Market & revenue sizing —
installsEstimateandrevenueEstimateon app-details (and onfullDetail-enriched chart/search rows) turn Google's fuzzy "1,000,000+" bucket into a numeric estimate you can sum and chart - Market research — top-charts snapshots per category and country over time
- Permission / privacy audits —
permissionsmode lists every Android permission a competitor's app requests, grouped by category - Ratings monitoring — histogram deltas catch review-bombing early
FAQ
Is it legal to scrape Google Play? The Actor reads the same public, unauthenticated pages and endpoints any visitor's browser loads. No login, no private API. Review Google's terms for your use case.
Do I need an API key, login or proxies? No. Plain HTTP against public store pages. For very large review pulls across many apps, spread runs over time.
How many reviews can I fetch?
Pagination is automatic; maxReviewsPerApp and reviewsNewerThan are the two limits, whichever is hit first. Tens of thousands per app are possible — set maxItems as a cost guard.
Which countries and languages are supported?
Any store front Google Play serves — set country (gl) and language (hl), or pass several at once with countries to batch multiple store fronts in a single run. Charts and rankings are country-specific.
Can I filter reviews to a date range?
Yes — set reviewsNewerThan (YYYY-MM-DD). It composes with reviewsFilterScore and maxReviewsPerApp: you get reviews at that star rating, posted on/after that date, capped at that count — whichever limit is hit first.
What's the difference from plain review scrapers? One actor covers the full ASO loop: details + histogram + install/revenue estimates, reviews (with date-range + star filters), keyword rankings with ASO popularity/difficulty/opportunity scores, top charts, competitor discovery and app permissions — with a uniform, typed output schema.
How are the ASO keyword scores calculated?
They are deterministic, transparent metrics computed only from the search results the Actor already collects — no black-box model. popularityScore reflects the install mass concentrated at the top of the keyword's results (a demand proxy); difficultyScore reflects the overall strength of the top field (install authority + rating quality); opportunityScore combines them (high demand against low competition). All are 0–100 and repeat on every result row of the same query.
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and fixes ship fast.
Integrations
Export results as JSON, CSV or Excel straight from the Console, connect the dataset to Make/Zapier/n8n, pull items with run-sync-get-dataset-items from any backend, or call the Actor as a tool from AI agents via the Apify MCP server.
Related Actors
Credits
Built on the MIT-licensed google-play-scraper (Python) by JoMingyu; top-charts and similar-apps request formats ported from google-play-scraper (Node.js) by Facundo Olano. See LICENSE for full notices.