Google Play Store Scraper avatar

Google Play Store Scraper

Pricing

Pay per event

Go to Apify Store
Google Play Store Scraper

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

Muhammad Ahmed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

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 rightprice, a real free boolean, 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

FieldTypeDescription
appsarrayPlay URLs or package names
searchTermsarrayEach returns up to searchLimit apps, then scraped in full
countriesarrayTwo-letter storefront codes (default ["us"])
languagestringInterface language for returned text (default en)
searchLimitintegerApps per search term (default 10)
maxItemsintegerTotal cap (0 = no limit)
concurrency / requestDelayMsintegerThroughput controls
proxyConfigurationobjectOptional

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.
  • version is 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 parseWarnings if a field looks wrong; a non-empty array means Google moved that field and it was recovered heuristically.

Local development

npm install
npm run build
node dist/main.js # reads storage/key_value_stores/default/INPUT.json