Google Play ASO Scraper — Reviews, Rankings, Competitors avatar

Google Play ASO Scraper — Reviews, Rankings, Competitors

Pricing

from $3.40 / 1,000 app data results

Go to Apify Store
Google Play ASO Scraper — Reviews, Rankings, Competitors

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

Nomad.Dev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

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.

ModeWhat you get
app-detailsFull 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)
reviewsReviews 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
searchRanked 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-chartsTop free / top paid / top grossing for any category (APPLICATION, GAME, FINANCE, HEALTH_AND_FITNESS, …) and country
similar-appsApps the Play Store shows next to a given app — instant competitor map, with "similar" vs "more by developer" relation
permissionsEvery Android permission an app requests, grouped by category (Location, Camera, Contacts, …), with group and total counts

Input

FieldTypeNotes
modeselectapp-details (default), reviews, search, top-charts, similar-apps, permissions
appIdslistPackage names (com.spotify.music) or full Play Store URLs — for details / reviews / similar / permissions
searchQuerieslistKeywords for search mode
languagestringStore locale (hl), default en
countrystringStore country (gl), default us. Ignored if countries (below) is a non-empty list
countrieslistRun 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×
reviewsSortselectnewest (default), rating, relevance. Forced to newest whenever reviewsNewerThan is set
reviewsFilterScore0–5Only reviews with this star rating; 0 = all
reviewsNewerThandate (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
maxReviewsPerAppintDefault 200; pagination is automatic. Stops at whichever limit is hit first: this count, or the reviewsNewerThan cutoff
topChartsCollectionselectTOP_FREE, TOP_PAID, GROSSING
topChartsCategorystringAPPLICATION, GAME, or a specific category id
maxResultsintPer query / chart / similar lookup (search max 30, charts max 500)
fullDetailboolEnrich search / chart / similar items with the full app record
maxItemsintHard 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)
concurrencyint (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

  1. Pick a mode and fill in appIds or searchQueries.
  2. Set country/language for the store front you care about.
  3. Run and export JSON, CSV or Excel — or call it over the API:
from apify_client import ApifyClient
client = 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: 1 and reviewsNewerThan to 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 countries to track multiple store fronts in one run). Every result carries popularityScore / difficultyScore / opportunityScore (0–100), so you can prioritise high-traffic, low-competition keywords without a separate ASO tool
  • Competitor mappingsimilar-apps + fullDetail gives you every rival's score, installs and pricing in one run
  • Market & revenue sizinginstallsEstimate and revenueEstimate on app-details (and on fullDetail-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 auditspermissions mode 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.

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.