Google Play Store Scraper
Pricing
Pay per event
Google Play Store Scraper
Scrape Google Play app details and search across storefronts: exact rating, install counts, price, in-app purchase range, developer, description and screenshots. Recovers fields when Google changes its layout.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Muhammad Ahmed
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Scrape app details and search results from Google Play — across storefronts and languages.
What you get
29 fields per app, including the ones most tools miss:
- Rating and rating count — the precise score (
4.625394), not the rounded star. - Install counts — both the display string (
10,000,000,000+) and a numeric floor for sorting. - Pricing done right —
price, a realfreeboolean, and the in-app purchase range ($0.40 - $199.99 per item). - Developer, description, genre, content rating, version, last-updated date, icon and up to 24 screenshots.
- Per-storefront data. Ratings differ by country — Spotify is ⭐4.343 in the US and ⭐4.260 in the UK — so each country is scraped separately.
- Search — turn a keyword into apps, then scrape them in full.
Accepts a Play URL or a bare package name (com.whatsapp).
Built to survive Google's layout changes
Google Play embeds its data as unnamed nested arrays. Every scraper reads them by position, and when Google reshuffles the payload those scrapers quietly start returning nulls.
This one reads each field by its known position first, then re-derives it from the data's shape if that fails — and tells you when it did, via a parseWarnings array on the record and a warning in the log. You find out that Google changed something from the data itself, not from a silently empty column three weeks later.
Input
| Field | Type | Description |
|---|---|---|
apps | array | Play URLs or package names |
searchTerms | array | Each returns up to searchLimit apps, then scraped in full |
countries | array | Two-letter storefront codes (default ["us"]) |
language | string | Interface language for returned text (default en) |
searchLimit | integer | Apps per search term (default 10) |
maxItems | integer | Total cap (0 = no limit) |
concurrency / requestDelayMs | integer | Throughput controls |
proxyConfiguration | object | Optional |
Example
{"apps": ["com.whatsapp", "com.spotify.music"],"searchTerms": ["habit tracker"],"countries": ["us", "gb"],"language": "en"}
Output
{"type": "app","appId": "com.whatsapp","country": "US","title": "WhatsApp Messenger","developer": "WhatsApp LLC","developerUrl": "https://play.google.com/store/apps/developer?id=WhatsApp+LLC","score": 4.625394,"ratingsCount": 241319638,"installs": "10,000,000,000+","installsMin": 10000000000,"price": null,"free": true,"inAppPurchases": "$0.40 - $199.99 per item","contentRating": "Everyone","genre": "Communication","version": "1.26.44.3","updatedAt": "Aug 15, 2026","icon": "https://play-lh.googleusercontent.com/…","screenshots": ["https://…"],"parseWarnings": []}
Apps that do not exist in a storefront produce an item with error rather than vanishing.
Notes and limits
- Reviews are not included. Google Play serves reviews through a private RPC whose payload format changes without notice; shipping a review scraper that breaks weekly would be worse than not shipping one. App metadata and search are stable and are what this Actor does well. For reviews, the Apple App Store Actor covers iOS fully.
versionis often absent — many large apps ship per-device builds and Google shows no single version. That is a genuine absence, not a scrape failure.- Install counts are buckets, not exact figures. Google only publishes thresholds.
- Check
parseWarningsif a field looks wrong; a non-empty array means Google moved that field and it was recovered heuristically.
Local development
npm installnpm run buildnode dist/main.js # reads storage/key_value_stores/default/INPUT.json