Google Play Scraper avatar

Google Play Scraper

Pricing

from $1.20 / 1,000 apps

Go to Apify Store
Google Play Scraper

Google Play Scraper

Google Play Scraper returns app title, developer, rating, price, installs, category, media links, and optional reviews for any package id, Play Store URL or search term — one row per app.

Pricing

from $1.20 / 1,000 apps

Rating

0.0

(0)

Developer

Murat Uzun

Murat Uzun

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Share

What is Google Play Scraper?

Google Play Scraper is an Apify Actor that reads any Android app's Google Play Store listing — title, developer, rating, price, installs, category, media links, description and optional reviews — and returns one clean row per app. Give it a package id (com.spotify.music), a full Play Store URL, or search:<term> to pull the top search results for a keyword. No login, no proxy, no headless browser — every field comes from the same hydration data and structured metadata the Play Store web page itself renders from.

What data does Google Play Scraper extract?

Google Play Scraper extracts around 35 fields per app:

FieldTypeDescription
appId, url, querystringPackage id, canonical detail URL, and the input entry that produced this row
title, summary, descriptionstringApp name, one-line summary, full description (truncated to 5,000 characters)
developer, developerId, developerUrl, developerEmail, developerWebsitestringPublisher identity and contact details
score, ratingCount, reviewCount, histogramnumber, objectAverage rating, total ratings/reviews, and the 1-5 star breakdown
price, currency, isFreenumber, string, booleanPurchase price in the storefront currency
containsAds, offersIAPbooleanWhether the listing shows the ads badge or an in-app purchase price range
installs, minInstallsstring, numberInstall count range as displayed, and its lower bound
version, androidVersionstringCurrent version and minimum Android OS version, when disclosed (see Limitations)
contentRating, genre, genreId, categoriesstring, arrayAge rating and category tag(s)
released, updatedAt, daysSinceUpdatestring, numberFirst release date, last update date, and days since
iconUrl, headerImage, screenshotCount, privacyPolicyUrlstring, numberMedia links
reviewsarrayNewest reviews (id, userName, score, text, date, thumbsUp, replyText, replyDate, version) when Include reviews is on
error, scrapedAtstringPer-app failure note and scrape timestamp

How to use Google Play Scraper

  1. Paste package ids, full Play Store URLs, or search:<term> entries into Apps — one row comes back per app, or per top search result.
  2. Set Country and Language to read a specific storefront; pricing and availability can differ by country.
  3. Turn on Include reviews and set Max reviews per app to also pull each app's newest reviews.
  4. Click Start, then export the dataset as JSON, CSV, Excel or HTML.

Example input

{
"apps": ["com.spotify.music", "com.duolingo", "search:meditation"],
"country": "us",
"language": "en",
"searchLimit": 20,
"includeReviews": false,
"maxConcurrency": 3
}

Example output

{
"appId": "com.spotify.music",
"url": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us",
"title": "Spotify: Music and Podcasts",
"developer": "Spotify AB",
"developerEmail": "support@spotify.com",
"developerWebsite": "https://www.spotify.com",
"summary": "Listen to songs, play podcasts, create playlists and discover music you'll love",
"score": 4.35,
"ratingCount": 36290063,
"reviewCount": 1852083,
"price": 0,
"currency": "USD",
"isFree": true,
"containsAds": true,
"offersIAP": true,
"installs": "1,000,000,000+",
"genre": "Music & Audio",
"genreId": "MUSIC_AND_AUDIO",
"updatedAt": "2026-09-10T09:06:44.000Z",
"daysSinceUpdate": 3,
"iconUrl": "https://play-lh.googleusercontent.com/IzQgYCcnCFCD08GR-3bdtcT8xzOvrNkC84avGT5CwTX2VIqmTmKKJcP_Cd4JoBOdmCMlTndlOzV6hrthg2fOWA",
"screenshotCount": 40,
"query": "com.spotify.music",
"error": null,
"scrapedAt": "2026-09-13T00:00:00.000Z"
}

Input parameters

ParameterTypeDefaultDescription
appsarray["com.spotify.music"]Package ids, Play URLs, or search:<term> entries, one row (or result set) each
countrystringus2-letter storefront country code
languagestringen2-letter language code for text fields
searchLimitinteger20Max results per search:<term> entry (1-100)
includeReviewsbooleanfalseAdd each app's newest reviews
maxReviewsPerAppinteger50Max reviews per app when reviews are on (1-500)
maxConcurrencyinteger3Apps fetched in parallel (1-20)

How the data is extracted

Google Play's detail pages embed a large AF_initDataCallback({key:'ds:5', data:[...]}) hydration payload — the same technique used by this suite's Chrome Web Store Extension Scraper — that carries almost every field: rating, histogram, price, installs, developer contact, media links and, for single-APK apps, version and minimum Android version. This is cross-checked against the page's application/ld+json structured data (name, rating, price, content rating) and, for the category tag(s), the rendered genre chip HTML. A field missing from all three sources is reported as null rather than guessed. search:<term> entries are resolved by reading the Play Store search results page for package ids, which are then scraped exactly like any other app. Reviews, when requested, use the same unauthenticated batchexecute endpoint the open-source google-play-scraper npm package uses — no login required.

Limitations

Google's array layout is undocumented and unversioned; a future redesign could shift the field indices, in which case affected fields degrade to null rather than break the run — check the Issues tab if a run starts returning unexpectedly empty fields. version and androidVersion are only available for apps Google serves as a single APK; multi-variant apps (most large apps, including Spotify and Duolingo) show no single version on the web listing, so these come back null by design. size is always null — Google Play's web detail page no longer publishes install size. A single search:<term> fetch returns roughly 20-30 unauthenticated results with no further pagination, so searchLimit above that is a ceiling, not a guarantee. The reviews endpoint is an undocumented Google API and could change without notice.

Pricing

Google Play Scraper uses pay-per-event pricing, billed per app row returned, plus a negligible actor-start fee, platform usage included. Set Maximum cost per run and the Actor trims the app list to what the budget covers instead of overspending.

Google Play Scraper vs. manual lookups

Checking installs, rating trends or a competitor's latest update one listing at a time does not scale past a handful of apps. Google Play Scraper takes a whole portfolio or a whole search results page in one run, returns a flat dataset ready for a spreadsheet or BI tool, and can be scheduled to catch a rating drop or a policy change the day it happens.

Using Google Play Scraper with AI agents and MCP

Google Play Scraper is pay-per-event with limited permissions — the two requirements for an Actor to be callable through the Apify MCP server at mcp.apify.com. An agent passes apps and gets one structured row per app back, ready for an ASO audit, a competitor-monitoring step, or a "what does the market think of this app" reviews summary. The same run works from n8n, Make, Zapier and LangChain through Apify's integrations.

FAQ

Why are version and androidVersion null for most apps? Google Play serves large apps as multiple APK/AAB variants targeting different devices, and the web listing shows no single version number for those — only single-APK apps disclose one.

Is this legal to run? Yes. This Actor reads the same public HTML, structured data and review data Google already serves to any visitor's browser; no login or bypass of any access control is involved.

Can I look up an app by developer instead of package id? Not directly — search search:<developer name> for a keyword match, or scrape each of the developer's known package ids.

What happens if a package id doesn't exist? The row comes back with error set (e.g. "App not found, removed, or not available in the requested country") and every data field null, so the run still succeeds and you can see which ids failed.

Part of the webdatatools web-intelligence suite — every Actor is pay-per-event, runs without proxies or a headless browser, and returns one clean row per entity:

Website & domain intelligence

Content for AI, LLMs and RAG

Search, video and social

Leads, jobs and company data

Developer, app and research data

Support and feedback

Found a field that's come back empty on an app where it should be populated, or a parsing bug? Open an issue on the Issues tab.