Google Play Scraper: App Details, Play Store Reviews & Search avatar

Google Play Scraper: App Details, Play Store Reviews & Search

Pricing

Pay per event

Go to Apify Store
Google Play Scraper: App Details, Play Store Reviews & Search

Google Play Scraper: App Details, Play Store Reviews & Search

Google Play scraper: app details, Play Store reviews, keyword search, developer apps and similar apps. Reviews filtered by stars, date, keyword and version. Installs, rating, price, developer email. No login.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Data Gleaner

Data Gleaner

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

6 hours ago

Last modified

Security

Limited permissions

Share

Google Play Scraper: App Data, Installs, Developer & Similar Apps

$0.30 per 1,000 apps ($0.0003 each), nothing else. Use it to research competitors, list every app of a developer, or track an app market: give it app IDs, a developer name or an app whose competitors you want, and get one clean row per Google Play app with installs, real install count, rating, star histogram, price, in-app purchases, ads, category, last update and the developer's public email, website and address.

Changed 2026-11-01. Google Play's robots.txt disallows /store/search and the reviews endpoint, so keyword search (searchQueries) and reviews (reviewAppIds) are discontinued and ignored. Data Gleaner follows each site's robots.txt. App details, developer apps, similar apps and sitemap discovery all work, and the competitor list you used to build from a keyword search now comes from similarAppIds.

Try it now

The input form is filled with Spotify in App IDs and in Similar apps, with 10 apps per seed. Click Start: you get Spotify's record plus the 10 apps Google Play lists next to it, 11 rows for about US$0.0033. With an empty input ({}, as from the API) the Actor runs a smaller built-in example: Spotify plus 4 similar apps, 5 rows, US$0.0015.

The Spotify row, from our saved test page (shortened):

{
"appId": "com.spotify.music",
"title": "Spotify: Music and Podcasts",
"developer": "Spotify AB",
"developerEmail": "support@spotify.com",
"developerWebsite": "https://www.spotify.com",
"developerAddress": "Regeringsgatan 19, 111 53 Stockholm, Sweden",
"installs": "1,000,000,000+",
"minInstalls": 1000000000,
"realInstalls": 3157353324,
"rating": 4.35,
"ratingCount": 36465012,
"histogram": {"1": 3714665, "2": 1063541, "3": 1312514, "4": 3099401, "5": 27274875},
"price": 0,
"free": true,
"offersInAppPurchases": true,
"containsAds": true,
"genre": "Music & Audio",
"updated": "2026-10-07T06:27:03+00:00",
"version": null,
"source": "appIds"
}

The similar-apps rows from the same test (one line each, source: "similar", similarTo: "com.spotify.music", position 1 to 4):

positionappIdtitledeveloperinstallsrating
1com.pinterestPinterestPinterest1,000,000,000+4.25
2com.google.android.apps.youtube.musicYouTube MusicGoogle LLC5,000,000,000+4.46
3com.snapchat.androidSnapchatSnap Inc1,000,000,000+4.19
4com.duolingoDuolingo: Learn LanguagesDuolingo500,000,000+4.75

Live numbers change daily; these come from the pages saved in our tests. Export the dataset as CSV or Excel, or read it through the API.

What it costs, per result

You getEventPrice
One app record (from appIds, developerIds, similarAppIds or the sitemap)appUS$0.0003 ($0.30 per 1,000)
An app that does not exist, is private or is not in your countrynonefree
The developer email look-up (findDeveloperEmails)billed by App Developer Email Finder on your accountUS$0.0015 per app whose developer has a public email; nothing here

No start fee, no compute or proxy charge. The run stops at your maximum total charge. The Pricing tab may still list a review event from before 2026-11-01; reviews are discontinued, no code path emits it and no run charges it.

Worked examples:

  • 50 app IDs from your tracking sheet: 50 x $0.0003 = $0.015. Daily for 30 days: about $0.45.
  • Competitors of 5 seed apps, 50 similar apps each, with details: 250 apps, $0.075.
  • A developer's full portfolio (about 20 apps for a name): $0.006.

What it does

It reads the public Google Play pages a visitor sees, with plain HTTP (no browser, no login, no Google account), in any country and language Google Play serves.

  • App details (appIds): package names (com.spotify.music) or Play URLs, one full record each.
  • Similar apps (similarAppIds): the apps Google Play lists as similar to each seed (up to about 50), each with similarTo and its position. The quickest competitor list for an app or a niche.
  • Developer apps (developerIds): everything a developer publishes, by the appId or app page URL of any one of its apps (com.todoist; the developer is found from that app's own page), its name exactly as shown on Google Play (Spotify AB), a numeric ID or a developer page URL. A name that is not exact (Doist Inc. instead of Doist) returns a free notice row suggesting an appId. Records carry developerQuery.
  • One row per app per run: an app that an earlier seed or mode already returned in the same run (for example a developer's own app that also appears in the similar-apps list, or the seed app itself) is not repeated and not charged twice, so a developer lookup after a similar-apps lookup can return fewer rows than maxItems. The run's status message says how many listed apps were left out for that reason. maxItems applies to each seed or developer separately.
  • Sitemap discovery (sitemapDiscovery): a random sample of the catalogue from the sitemaps Google Play publishes, filtered by package name (packagePrefixes: ["de."], packageContains: ["vpn"]).
  • Developer contacts: developerEmail, developerWebsite, developerAddress and developerPhone when the store page lists them (personal-looking emails are not returned, see Responsible use); findDeveloperEmails looks further (see below).

Use cases

  • Competitor and market research: seed your app or a category leader in similarAppIds, keep the rows with high realInstalls and low rating, and you have the gaps.
  • App tracking: schedule appIds daily and compare rating, ratingCount, version, updated, price and containsAds over time.
  • Lead lists of app developers: developerIds or similarAppIds plus findDeveloperEmails gives publisher, email, website and address per app.
  • Catalogue sampling: sitemap discovery for apps in one namespace or with a word in the package name.
  • AI agents: one tool call returns app facts as flat JSON.

Input

FieldMeaning
appIdsDetails mode. Package names or Google Play URLs. Apps that do not exist in the chosen country are skipped and not charged.
similarAppIdsSimilar-apps mode. Package names or URLs; returns up to about 50 similar apps per seed. The seed itself is not repeated.
developerIdsDeveloper mode. An appId or app page URL of any of the developer's apps (most reliable), a developer name exactly as shown on Google Play, a numeric developer ID or a developer page URL. An appId or a name lists about 20 apps and a numeric ID about 10. No match gives a free notice row.
maxItemsApps per developer or seed app, default 30 (the form prefills 10).
includeDetailsDefault on. One extra request per developer or similar-apps result adds rating count, histogram, version, update date, developer ID, website, address and phone, description and screenshots. Off gives a faster list from the cards only (title, developer, installs, rating, price, category, icon). Same price either way.
findDeveloperEmailsDefault off. Runs App Developer Email Finder on your account and adds developerEmails and developerEmailSource to each app record.
sitemapDiscovery, packagePrefixes, packageContains, sitemapMaxApps, sitemapShardsSitemap sampling, see "Discover apps in bulk".
country, languageStore country (US, GB, DE, JP) and language (en, de, pt-BR). Country changes prices, availability and ratings.
requestDelaySecsPacing between requests, default 0.5.
searchQueries, reviewAppIds and the review filtersDiscontinued 2026-11-01 and ignored (see the note at the top).

Input names used by other Google Play Actors are also accepted: startUrls, appUrls, countryCode, languageCode, maxResults.

Details, competitors and a developer's portfolio in one run:

{
"appIds": ["com.spotify.music", "org.isoron.uhabits"],
"similarAppIds": ["org.isoron.uhabits"],
"developerIds": ["Spotify AB"],
"maxItems": 30,
"country": "US",
"language": "en"
}

Discover apps in bulk from Google Play's sitemaps

Set sitemapDiscovery to true to sample the app catalogue from the sitemaps Google Play publishes for crawlers. Each app found is fetched from its normal store page, so you get the full record. Filter by package name with packagePrefixes (for example de.) or packageContains (for example vpn, fitness). sitemapMaxApps (default 50, up to 1,000) and sitemapShards (default 30, up to 150) bound the run. The sitemaps carry no dates and no categories, and apps are mixed with books, so this is a random sample (about 40 apps per shard); a rare filter needs more shards and may return few or no apps. Shards that match nothing are not charged. Example: {"sitemapDiscovery": true, "packageContains": ["vpn"], "sitemapMaxApps": 50, "sitemapShards": 60}. Records have source: "sitemap".

Get the developer's email in the same run

Set findDeveloperEmails to true and, once the apps are collected, this Actor runs App Developer Email Finder on your own Apify account for those apps. Each app record then carries developerEmails (every public email found: the store listing, the trader declaration and the developer's website) and developerEmailSource. That Actor bills its own $0.0015 for each app whose developer has a public email; this Actor adds no charge. With the option on, app records are written at the end of the run, and if the lookup fails or runs out of time they are still returned without the extra fields.

{ "similarAppIds": ["org.isoron.uhabits"], "maxItems": 30, "findDeveloperEmails": true }

Output

One record per app. Every record has source (appIds, similar, developer or sitemap), country, language and scrapedAt. Similar-apps records add similarTo, developer records add developerQuery, and position is the rank within that list. Full field list of an app record:

{
"appId": "org.isoron.uhabits",
"title": "Loop Habit Tracker",
"summary": "Create good habits and track their progress over time",
"description": "Loop helps you create and maintain good habits...",
"developer": "Ana Example",
"developerId": "7792440048329025379",
"developerUrl": "https://play.google.com/store/apps/developer?id=Ana+Example",
"developerWebsite": null,
"developerEmail": "dev@example.org",
"developerAddress": "United States",
"developerPhone": null,
"installs": "5,000,000+",
"minInstalls": 5000000,
"realInstalls": 7892890,
"rating": 4.72,
"ratingCount": 63451,
"reviewsCount": 3423,
"histogram": {"1": 1860, "2": 881, "3": 1762, "4": 4126, "5": 54793},
"price": 0,
"currency": "USD",
"free": true,
"offersInAppPurchases": false,
"containsAds": false,
"genre": "Productivity",
"genreId": "PRODUCTIVITY",
"released": "Feb 22, 2016",
"updated": "2025-09-14T22:56:06+00:00",
"version": "2.3.1",
"contentRating": "Everyone",
"recentChanges": "Loop 2.3.1: ...",
"url": "https://play.google.com/store/apps/details?id=org.isoron.uhabits",
"icon": "https://play-lh.googleusercontent.com/...",
"screenshots": ["https://play-lh.googleusercontent.com/..."],
"privacyPolicyUrl": null,
"source": "similar",
"similarTo": "com.spotify.music",
"position": 1,
"inputUrl": null,
"country": "US",
"language": "en",
"scrapedAt": "2026-10-12T08:00:00+00:00"
}

Which fields are filled

  • Always: appId, title, developer, installs, minInstalls, price, currency, free, genre, contentRating, url, icon, source, scrapedAt. rating is empty for apps without ratings yet.
  • With includeDetails on (default) and in details mode: ratingCount, reviewsCount, histogram, developerId, developerUrl, developerAddress, developerPhone, released, updated, recentChanges, description, screenshots, offersInAppPurchases, containsAds.
  • Sometimes empty by nature: version is empty when the store page says "Varies with device" (Spotify and many large apps). developerWebsite, developerEmail, developerAddress, developerPhone and privacyPolicyUrl are empty when the developer did not list them. realInstalls is empty when the page does not carry it.

FAQ: the three things that go wrong most

My run with searchQueries or reviewAppIds returned nothing. Why? Both were discontinued on 2026-11-01 because Google Play's robots.txt disallows them, and this Actor follows robots.txt. A run with only those fields ends SUCCEEDED with no rows and the status message "Discontinued: keyword search and reviews are no longer offered", and charges nothing. For a keyword-style competitor list, put the leading app of that niche in similarAppIds (for habit tracker: org.isoron.uhabits) and you get the apps Google Play lists next to it; add developerIds for a rival's whole portfolio.

An app ID I gave returned no row. The app was removed, is private, or is not available in the store country you set (the default is US). It is skipped, not charged, and named in the log; the status message counts it as "apps not found". Try its own market (country: "DE") or check the package name in the app's Play URL (id=...).

Some fields are empty, or a developer lists fewer apps than I expected. version is empty for "Varies with device" apps, and contact fields are empty when the developer did not publish them; that is the store page, not a parsing gap. A developer page shows about 20 apps for a name and about 10 for a numeric ID, so pass the name exactly as in the developer field. If a field that the store page does show comes back empty, open an issue on the Issues tab and it will be fixed.

More questions

Is there an official Google Play API for this? The Google Play Developer API only covers your own apps. This Actor reads the public store pages, so it works for any app.

Which countries work? Any two-letter store country Google Play serves, with any language code.

Do I need a proxy? No. The Actor uses no proxy: every request goes from the run's own IP, and if the store starts refusing requests the run backs off, then stops and keeps what it has. A proxyConfiguration in old saved tasks is ignored.

Limits

  • Similar-apps lists hold up to about 50 apps per seed and developer pages about 20 (name) or 10 (numeric ID). Use several seeds for wider coverage.
  • Installs are buckets (5,000,000+); minInstalls is the bucket as a number and realInstalls the exact count when the page carries it.
  • Prices and ratings depend on the country you set, and numbers change daily: schedule runs and compare scrapedAt.
  • At very high volume Google may refuse requests. The Actor backs off, retries the same request and finishes with what it has.

Use it from the API, Python or JavaScript

curl -X POST "https://api.apify.com/v2/acts/datagleaner~google-play-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"similarAppIds": ["com.spotify.music"], "maxItems": 10}'
# pip install apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("datagleaner/google-play-scraper").call(run_input={"similarAppIds": ["com.spotify.music"], "maxItems": 10})
for app in client.dataset(run["defaultDatasetId"]).iterate_items():
print(app["position"], app["title"], app["installs"], app["rating"], app.get("developerEmail"))
// npm install apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagleaner/google-play-scraper').call({ developerIds: ['Spotify AB'], maxItems: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const app of items) console.log(app.title, app.installs, app.rating);

Use it from n8n, Make, Zapier or an AI agent

Actor ID: datagleaner/google-play-scraper. Minimal input:

{"similarAppIds": ["com.spotify.music"], "maxItems": 10}
  • n8n: the Apify node (@apify/n8n-nodes-apify), Run an Actor and get dataset, Actor datagleaner/google-play-scraper, the input above.

  • Make: the Apify app's Run an Actor, then Get Dataset Items.

  • Zapier: the Apify action Run Actor, then Fetch dataset items.

  • AI agents (MCP): connect to https://mcp.apify.com?tools=datagleaner/google-play-scraper. In Claude Code:

    claude mcp add --transport http apify "https://mcp.apify.com?tools=datagleaner/google-play-scraper"
    

    Then run /mcp to sign in to Apify and ask in plain words, for example: "List the 20 apps Google Play shows as similar to com.spotify.music, with installs, rating and the developer's email."

  • App Developer Email Finder: developer email, website and socials for Google Play, App Store, Steam and Chrome Web Store apps. Pass this Actor's dataset as its datasetId.

Responsible use

This Actor reads publicly visible Google Play pages without logging in and follows Google Play's robots.txt. Use the data in line with Google Play's terms. App records are business data; if you combine developer contacts with other data about individuals, the data-protection obligations are yours.

Purpose limit. Use developer contacts only for your own lawful B2B or legitimate-interest purposes in the recipient's country. Do not resell bulk lists, and do not send cold outreach where the law or the recipient's objection forbids it. You are the controller of what you do with the data.

What is not returned. Personal-looking developer emails (free-mail such as gmail.com, or first.last@ style) are dropped from developerEmail and developerEmails, and when one is dropped the developer's developerAddress and developerPhone are blanked too, because an individual developer's contact details are personal data. The row then carries a privacyNotice. Role and company addresses (support@, info@, a company domain) stay.

Removal requests

If you are a developer listed on Google Play and do not want this Actor to return your contact details (email, address, phone, website or name), email datagleaner@gmail.com (Keencrest, the publisher; replies come from an AI agent, Crest, and the business is owner-operated) with your email address, domain or developer name. We add it to a blocklist (src/optout_dids.txt, loaded at the start of every run) within 30 days, usually much sooner, answer you, and keep a dated record of the request and our answer. Personal-looking addresses are not returned in the first place, and sites' advertising objections are honoured.

Feedback

If this Actor saved you time, a rating on its Store page helps others find it. Problems or requests: open an issue on the Issues tab.