Google Play App Scraper
Pricing
from $3.00 / 1,000 results
Google Play App Scraper
Scrape Google Play app metadata, ratings, install ranges, pricing, and version changes for ASO tracking and Android competitor research.
Google Play Intelligence API | App Metadata, Ratings & Review Samples
After this run
Turn this Actor's output into a capped paid report with App Store & Google Play Listing Gap Report. Use it when mobile growth, indie app, and ASO teams need to decide which app listing metadata and positioning gaps to fix before spending on paid acquisition.
- First report: $9 /
listing_snapshot_checklist; setmaxChargeUsdto $9. - Deeper report: $29 /
competitor_listing_gap_report; use only when the first result needs competitor or action-depth. - This is an internal Apify flow aid. It is not revenue proof until accounted paid usage appears.
Next report-style Actors
If you already have data from this Actor, these follow-on Actors turn public or user-provided inputs into decision-ready reports. They are optional, capped by maxChargeUsd, and do not make business outcome claims.
- App Release Review Regression Report - turn public app metadata and reviews into release regression reports and QA backlog candidates.
- Mobile App Listing Gap Report - compare public app listings and identify metadata/action gaps.
Monitor specific Android applications on the Google Play store using a browserless storefront extractor. Designed for recurring watchlists and automated alerts, this tool captures app metadata, install ranges, pricing flags, and public review snippets directly from storefront listings. It uses a lightweight approach to retrieve normalized metrics and returns warnings when fields are missing, partial, or blocked. Teams can use it for mobile market trend checks, ASO baseline reviews, and competitor app update monitoring across regions.
Set up automated daily runs to maintain a storefront baseline for selected competitors or your own apps. The extractor outputs structured JSON containing developer support fields exposed by the listing, updated descriptions, screenshot URLs, and rating distribution data. You can route the dataset via webhooks for internal alerts, such as notifying a product team when a competitor listing changes or an app rating shifts.
Store Quickstart
- Start with
store-input.example.jsonfor the smallest useful dataset run. - Check
sample-output.example.jsonfor a recent Google Play sample captured from the repo's live output. - Check
live-proof.example.jsonfor the latest live canary + contract proof on the public actor surface. - Then move through
store-input.templates.jsonin this order:Quickstart Baseline (2 Apps)— smallest useful dataset runRecurring Baseline (Mobile App Watchlist)— same country/language baseline tuned for repeat monitoringWebhook Routed Alerts (Rating Drop Handoff)— route the same payload after the dataset baseline is stable
- Keep
countryandlanguagepinned from the start so repeat runs stay comparable.
What it does
For each Google Play app source, the actor:
- Normalizes package IDs and Google Play listing URLs.
- Fetches the public listing page with polite headers and timeouts.
- Extracts metadata from JSON-LD, canonical/meta tags, visible HTML, and Google Play embedded state.
- Returns normalized app intelligence including title, developer, category, icon, screenshots, rating, rating count, install ranges, pricing flags, content rating, descriptions, and update dates.
- Samples public review rows only when Google Play embeds them in the initial HTML response.
- Emits explicit warnings when a field or review surface is unavailable instead of fabricating data.
Data strategy
This actor intentionally avoids browser automation, authenticated traffic, and private APIs.
Extraction tiers:
- JSON-LD — stable core app metadata.
- Canonical/meta tags — URL and description fallbacks.
- Embedded
AF_initDataCallbackstate — installs, screenshots, developer metadata, rating breakdowns, and occasional review samples. - Visible HTML labels — final fallback for fields like
Updated on.
Limitations
- Google Play does not reliably expose the current version on every public listing response. The actor returns
nulland a warning when it cannot confirm it. - Review output is limited to the review snippets that Google Play embeds in the initial HTML. If Google stops embedding them, the actor falls back to aggregate rating data only.
- Availability can vary by storefront. If an app is missing or geo-restricted for the requested country, the actor returns a structured warning or missing status.
Use Cases
| Who | Why |
|---|---|
| ASO teams | Compare category fit, installs, ratings, and screenshots across Android competitors |
| Product teams | Sample public complaints after releases without running a full review-mining stack |
| Growth teams | Benchmark storefront positioning across markets with pinned country/language settings |
| Support teams | Watch for repeated issue themes in public review snippets |
Input
| Field | Type | Default | Description |
|---|---|---|---|
appUrls | string[] | required | Google Play URLs or Android package IDs |
country | string | "us" | Two-letter storefront code |
language | string | "en" | Listing page language |
reviewLimit | integer | 20 | Max embedded public review samples per app |
timeoutMs | integer | 20000 | HTTP timeout per request |
delivery | string | "dataset" | dataset or webhook |
webhookUrl | string | — | Webhook destination when delivery=webhook |
dryRun | boolean | false | Skip dataset writes |
Input Examples
Example: Single app deep-dive
{"packageNames": ["com.example.app"],"country": "US"}
Example: Multi-region comparison
{"packageNames": ["com.example.app"],"country": "US,JP,DE","includeReviews": true}
Example: Competitor bulk scan
{"packageNames": ["com.competitor.a","com.competitor.b"],"includeVersionHistory": true}
Output
Each row in apps includes:
status:ok,partial,missing,blocked,invalid, orerrorapp: normalized listing intelligencereviewIntelligence: aggregate review availability plus public sample rows when exposedwarnings: explicit structured warnings withcodeandmessagefetch: requested URL, final URL, and HTTP status
Output Example
{"meta": {"implementationStatus": "partial","totalSources": 2,"uniquePackages": 2,"totals": {"apps": 2,"ok": 1,"partial": 0,"missing": 1,"blocked": 0,"invalid": 0,"errors": 0,"warnings": 3,"totalReviewSamples": 5}},"apps": [{"packageId": "com.spotify.music","status": "ok","app": {"title": "Spotify: Music and Podcasts","developer": "Spotify AB","rating": 4.3,"ratingCount": 35383844,"installsText": "1,000,000,000+","contentRating": "Teen"},"reviewIntelligence": {"availability": "sampled_public_html","sampleCount": 5,"fullReviewCoverageAvailable": false}}]}
Local run
npm startnpm test
npm start reads input.json locally and writes output/result.json.
Related Actors
Use this actor first for Android-only watchlists, storefront checks, or lightweight Play review sampling. Add the next actor when you need the adjacent signal:
- App Review Intelligence API | App Store + Google Play Summary — Promote to this once stakeholders want one summary row across iOS and Android instead of separate store reports.
- Apple App Store Intelligence API — Add when the same launch or competitor set needs iOS-side metadata, pricing, and deeper public review sampling.
- Shopify Store Intelligence API — Add when the app belongs to a commerce brand and you want to connect Play feedback with storefront or catalog changes.
- Domain Security Audit API — Add when Android complaints mention sign-in, payments, or site trust and you need to audit owned web properties.
Pricing & Cost Control
Apify Store pricing is usage-based, so total cost mainly follows how many appUrls you process and how many review samples you request. Check the Store pricing card for the current per-event rates.
- Start with
Quickstart Baselineon 1–3 package IDs or listing URLs in dataset mode. - Keep
reviewLimitaround 10–20 forRecurring Baseline, and pincountry/languageso repeat runs stay comparable. - Use
Webhook Routed Alertsonly after the dataset baseline already matches your warning flow. - Use
dryRun: truebefore scheduled runs or webhook delivery.
⭐ Was this helpful?
If this actor saved you time, please leave a ★ rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.
Bug report or feature request? Open an issue on the Issues tab of this actor.
Next Step: Listing Gap Report
If you need a buyer-ready listing improvement report instead of raw metadata or review rows, run mobile-app-listing-gap-report next. It compares one target app with competitor App Store / Google Play listings, checks buyer-provided seed keyword coverage in public metadata, and returns prioritized listing edits.
Recommended handoff:
{"targetApp": "APP_STORE_URL_OR_GOOGLE_PLAY_PACKAGE","competitorApps": ["COMPETITOR_APP_1", "COMPETITOR_APP_2", "COMPETITOR_APP_3"],"reportTier": "premium","maxChargeUsd": 29,"dryRun": false}
Related report Actors
Use these follow-on Actors when you want a capped, decision-ready report instead of more raw rows. They use public or user-provided inputs, respect maxChargeUsd, and do not promise rankings, revenue, conversion lifts, or sales outcomes.
- App Store & Google Play Listing Gap Report - compare public listing metadata against competitors before changing ASO copy.
- App Release Review Regression Report - turn public review signals into release regression and QA action reports.
Related paid report workflows
If this Actor gave you raw rows or source context, these follow-on report Actors are designed for a small capped paid run. They help make a decision, not just collect more data.
- App Store & Google Play Listing Gap Report - decide which app listing metadata and positioning gaps to fix before spending on paid acquisition. Entry $9 /
listing_snapshot_checklist; premium $29 /competitor_listing_gap_report. - App Release Review Regression Report - decide whether a public app release created review regressions that need QA or product action. Entry $9 /
release_review_snapshot_report; premium $29 /release_regression_report.
Keep maxChargeUsd equal to the selected tier. Internal links are traffic aids only; real proof requires accounted paid usage.