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

2

Total users

2

Monthly active users

8 hours ago

Last modified

Share

A Google Play scraper for app details, Play Store reviews, keyword search, developer portfolios and similar apps, in one Actor. Pull app details by package name or URL (installs, rating, histogram, price, version, update date, developer email, website, address and phone), Play Store reviews with sort, star, date, keyword and app-version filters, and ranked search results by keyword. Plain HTTP, no browser, no login and no Google account. Any country and language Google Play serves.

It costs $0.0003 per app and $0.0001 per review ($0.30 per 1,000 apps, $0.10 per 1,000 reviews), with no start fee and no separate platform charge. Filtered-out reviews and apps that do not exist are never billed.

What does Google Play Scraper do?

It returns the data a visitor sees on Google Play, through the Apify dataset and API as JSON, CSV or Excel. Typical uses:

  • App review monitoring: pull the newest reviews of your app every day, or only the 1-star ones with reviewScore: 1, with text, stars, version, helpful votes and your reply. reviewsLastDays: 1 returns only the past day and stops reading as soon as it reaches older reviews, so a daily monitor is a request or two. Send new complaints to Slack, email or a ticket system.
  • Release checks: reviewVersions: ["9.1"] keeps reviews of one version, and reviewKeywords: ["crash", "refund", "login"] keeps only reviews that mention those words.
  • Competitor discovery: similarAppIds lists the apps Google Play shows as similar to yours (up to about 50 each), and developerIds lists everything a developer publishes.
  • ASO and competitor tracking: search a keyword and record which apps rank where (position), with installs bucket, rating, rating count, price, category and last update. Schedule it daily to see rank, rating and release-cadence changes over time.
  • Market and category research: list the apps for habit tracker, invoice maker or period tracker with installs, rating histograms, price and monetisation flags (offersInAppPurchases, containsAds) before you build.
  • Voice of customer: feed thousands of reviews of a competitor into your own analysis or an LLM to find what users ask for and complain about.
  • Release and pricing watch: version, updated, recentChanges and price per app, per country.
  • AI agents and apps: feed live Play Store data into an agent or product.

Developer contacts come with the app details: developerEmail, developerWebsite, developerAddress and developerPhone when the app's store page shows them. For a developer's other emails and socials across Google Play, App Store, Steam and Chrome Web Store, use app-developer-email-finder.

Input

FieldMeaning
appIdsDetails mode. Package names (com.spotify.music) or Google Play URLs. One app record each. Apps that do not exist in the chosen country are skipped and not charged.
searchQueriesSearch mode. Keywords as typed in the Play Store. Up to maxItems apps per keyword in store rank order.
similarAppIdsSimilar-apps mode. Package names or URLs. Returns the apps Google Play lists as similar to each one (up to about 50), each record with similarTo. The seed app itself is not returned.
developerIdsDeveloper mode. A developer name exactly as shown on Google Play (Spotify AB), a numeric developer ID, or a developer page URL. Returns the apps on that developer's page, each record with developerQuery. A name lists about 20 apps and a numeric ID about 10, so prefer the name (the developer field of any app record).
reviewAppIdsReviews mode. Apps whose reviews to fetch, up to maxReviews each. Returns review records only (no app record).
maxItemsApps per search keyword, developer or seed app, default 30. Google Play shows about 20 to 30 results per keyword.
includeDetailsDefault on. One extra request per search, 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. The price per app is the same.
maxReviewsReviews to keep per app after filters, default 100, up to 100,000.
reviewSortnewest (default, best for monitoring), relevant or rating.
reviewScoreOptional, 1 to 5. Only reviews with exactly that many stars.
reviewsSinceOptional date, YYYY-MM-DD. Skips older reviews. With reviewSort: "newest" the Actor stops reading at the first older page.
reviewsLastDaysOptional number of days, for example 7. If you also set reviewsSince, the later cut-off applies.
reviewKeywordsOptional list of words. Keeps reviews whose text or developer reply contains any of them (case-insensitive). The Actor reads up to 50,000 reviews per app looking for matches, and you pay only for the matches.
reviewVersionsOptional list of version prefixes. 9.1 matches 9.1.90.2270.
country, languageStore country (US, GB, DE, JP) and language (en, de, pt-BR). Country changes prices, availability and which reviews appear.
requestDelaySecsPacing between requests, default 0.5.
proxyConfigurationOptional, off by default.

With no input at all, the Actor runs a built-in example (1 app, 2 search results for habit tracker, 2 reviews) and says so in the run's status message. If you already call another Google Play Actor, these input names are also accepted: startUrls, queries, searchTerms, countryCode, languageCode, maxResults, sortBy, maxReviewsPerApp.

App details and a keyword search in one run:

{
"appIds": ["com.spotify.music", "https://play.google.com/store/apps/details?id=org.isoron.uhabits"],
"searchQueries": ["habit tracker"],
"maxItems": 30,
"country": "US",
"language": "en"
}

Reviews of two apps, newest first:

{
"reviewAppIds": ["com.spotify.music", "org.isoron.uhabits"],
"maxReviews": 200,
"reviewSort": "newest"
}

Only the 1-star reviews of an app:

{ "reviewAppIds": ["org.isoron.uhabits"], "reviewScore": 1, "maxReviews": 100 }

Daily monitor: new reviews from the last day that mention a problem word.

{ "reviewAppIds": ["com.spotify.music"], "reviewsLastDays": 1, "reviewKeywords": ["crash", "bug", "refund"], "reviewSort": "newest" }

Competitor discovery: similar apps to yours, plus everything a rival developer publishes.

{ "similarAppIds": ["org.isoron.uhabits"], "developerIds": ["Spotify AB"], "maxItems": 50 }

Output

Every record has source (appIds, search, similar, developer or reviews), country, language and scrapedAt. App records:

{
"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": "Álinson S Xavier",
"developerId": "7792440048329025379",
"developerUrl": "https://play.google.com/store/apps/developer?id=%C3%81linson+S+Xavier",
"developerWebsite": null,
"developerEmail": "dev@loophabits.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": "search",
"searchQuery": "habit tracker",
"position": 1,
"inputUrl": null,
"country": "US",
"language": "en",
"scrapedAt": "2026-10-12T08:00:00+00:00"
}

Similar-apps records add "similarTo": "<seed appId>" and developer-mode records add "developerQuery": "<name or ID>"; position is the rank within that list.

Review records:

{
"reviewId": "aa37a247-402b-4d90-a8a8-d113d330fabf",
"appId": "com.spotify.music",
"userName": "Jon T.",
"userImage": "https://play-lh.googleusercontent.com/a/...",
"text": "constantly crackling, pausing and jumping for podcasts I've downloaded",
"score": 1,
"thumbsUp": 0,
"version": "9.1.90.2270",
"at": "2026-10-10T23:25:10+00:00",
"replyText": "Hi. Thanks for sharing this with us. ...",
"repliedAt": "2026-10-11T00:12:57+00:00",
"reviewSort": "newest",
"source": "reviews",
"inputUrl": "com.spotify.music",
"country": "US",
"language": "en",
"scrapedAt": "2026-10-12T08:00:00+00:00"
}

The dataset has an Apps view and a Reviews view with the main columns.

Which fields are filled

  • Always, on every app record: appId, title, developer, installs, minInstalls, price, currency, free, genre, contentRating, url, icon, source, scrapedAt. rating is empty for apps without ratings yet.
  • Details, search, developer and similar-apps records with includeDetails on (default): ratingCount, reviewsCount, histogram, developerId, developerUrl, developerAddress, developerPhone, released, updated, recentChanges, description, screenshots, offersInAppPurchases, containsAds.
  • Sometimes empty by nature: version is empty for apps whose store page says "Varies with device" (Spotify, many large apps). developerWebsite, developerEmail, developerAddress, developerPhone and privacyPolicyUrl are empty when the developer did not list them (a phone number is rare). realInstalls is empty when the store page does not carry it.
  • Reviews: reviewId, userName, score, thumbsUp, at are always there. text is empty for star-only ratings. version is empty on some older reviews. replyText and repliedAt are only set when the developer replied, which is most often a small share of reviews.

Get more developer contacts for these apps

The app records already carry the email, website, address and phone the store page lists. To look further (other emails, socials, other stores), run app-developer-email-finder on this Actor's dataset. Pass the run's default dataset ID as datasetId. It reads appId from each app record and returns the developer's published email, website and social links. Review records have no appId and are skipped.

{
"datasetId": "YOUR_DEFAULT_DATASET_ID"
}
  • Apple App Store Scraper: the same fields for iOS apps (title, developer, developerWebsite, rating, ratingCount, price, genre, updated, version, url), so one pipeline can read both stores.
  • app-developer-email-finder: developer email, website and socials for Google Play, App Store, Steam and Chrome Web Store apps.

Pricing

Pay per event, two events, and nothing else: $0.0003 per app record ($0.30 per 1,000) and $0.0001 per review record ($0.10 per 1,000). There is no start fee and no extra charge for compute or proxies. An app record is any app pushed to the dataset, whether it came from appIds, a keyword search, a developer page or a similar-apps list. You pay only for records pushed: apps that do not exist cost nothing, and reviews removed by reviewScore, reviewsSince, reviewsLastDays, reviewKeywords or reviewVersions cost nothing. The run stops at your maximum charge.

Worked examples:

  • 3 keywords at 30 apps each (90 apps) plus the 200 newest reviews of 5 apps (1,000 reviews): 90 x $0.0003 + 1,000 x $0.0001 = $0.127. Run daily for 30 days that is about $3.80.
  • A daily review monitor: reviewsLastDays: 1 on 10 apps with about 30 new reviews each is 300 reviews, $0.03 a day, about $0.90 a month.
  • Similar apps for 5 seed apps at 50 apps each, with details: 250 apps, $0.075.
  • A 10-app test run costs $0.003.

How this compares

Other Google Play Actors on the Apify Store price between about $0.0001 and $0.01 per result, and many do only one job: app details, or search, or reviews. A few single-purpose Actors charge as little as $0.0001 per item, so if you only need one thing in very large volume, compare. This Actor's case is one input format, one dataset schema and one bill for app details, search, developer pages, similar apps and reviews, at a price in the same range as the cheapest of them, with date, keyword and version filters on reviews that only bill the reviews you keep.

Use it from the API

Run it synchronously and get the records back as JSON. Replace <YOUR_APIFY_TOKEN> with your token.

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 '{"reviewAppIds": ["com.spotify.music"], "maxReviews": 50, "reviewSort": "newest"}'

It also works from n8n, Make or Zapier through the Apify integrations, since the output is a flat JSON record.

Use with Python

pip install apify-client, set the APIFY_TOKEN environment variable, and run. This input returns 20 reviews, about $0.002.

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("datagleaner/google-play-scraper").call(run_input={
"reviewAppIds": ["com.spotify.music"],
"maxReviews": 20,
"reviewScore": 1,
})
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
print(review["at"], review["score"], review["text"])

Use with JavaScript / Node.js

npm install apify-client, set APIFY_TOKEN, and run it as an ES module (.mjs).

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagleaner/google-play-scraper').call({
searchQueries: ['habit tracker'],
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const app of items) console.log(app.position, app.title, app.installs, app.rating);

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

Actor ID: datagleaner/google-play-scraper

Minimal input:

{"searchQueries": ["habit tracker"], "maxItems": 10}

Each tool below runs this Actor with your own Apify API token.

  • n8n: add the Apify node (@apify/n8n-nodes-apify). On n8n Cloud you install it from the community node registry. Choose Run an Actor and get dataset, set Actor to datagleaner/google-play-scraper and paste the input above.

  • Make: use the Apify app's Run an Actor module, then Get Dataset Items to read the results. Watch Actor Runs can trigger a scenario when a run finishes.

  • Zapier: use the Apify action Run Actor, then the search Fetch dataset items. The trigger Finished Actor run starts a Zap when a run ends.

  • 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 in your browser. Then ask in plain language, for example: "Get the 50 newest 1-star reviews of com.spotify.music and summarise the top complaints." An agent without the Actor preloaded can find it with Apify's search-actors tool by searching "google play".

  • LangChain (Python):

# pip install langchain-apify, then set APIFY_TOKEN in your environment
import json
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("datagleaner/google-play-scraper")
result = tool.invoke({"run_input": json.loads('{"reviewAppIds": ["com.spotify.music"], "maxReviews": 20}')})

Limits

  • Search returns one page. Google Play shows about 20 to 30 apps per keyword, and this Actor returns them in store rank order. For wider coverage, search several related keywords or use similarAppIds (up to about 50 apps per seed).
  • Developer pages are short. A developer name lists about 20 apps and a numeric ID about 10; a publisher with hundreds of apps is not listed in full.
  • Installs are buckets. The store shows 5,000,000+, not an exact number. minInstalls is that bucket as a number.
  • Reviews are what Google Play shows. Deep pagination worked to 6,000 reviews of one app in testing. Reviews are filtered by the store country and language you set, so the same app can show different reviews in US and DE. Reviewer names are the public display names Google Play shows.
  • Prices and ratings depend on country. Set country to the market you care about.
  • Rankings and numbers change by the minute. Schedule runs and compare scrapedAt.
  • At very high volume Google may start refusing requests. The Actor backs off, refreshes its connection and finishes what it has. Enable proxyConfiguration if that happens.
  • Google Play changes its page structure now and then. If a field starts coming back empty, report it and it will be fixed.

FAQ

Is there an official Google Play API for this? The Google Play Developer API only gives you data about your own apps. This Actor reads the public store pages instead, so it works for any app, yours or a competitor's.

How do I monitor new reviews? Schedule the Actor daily with reviewSort: "newest" and a small maxReviews (say 100), and use reviewId to skip the ones you have seen. Add reviewScore: 1 to watch only complaints.

How do I track keyword rankings? Run searchQueries daily for your keywords and store position for your app and its rivals. position is the 1-based store rank for that keyword.

Can I get the developer's email, address or phone? Yes, when the app's store page lists them: developerEmail, developerAddress and developerPhone are on every details record. For other emails, socials and other stores, use app-developer-email-finder.

How do I find competitors of my app? Put your app in similarAppIds for the apps Google Play lists next to it, and a rival's developer name in developerIds for everything they publish.

How do I get only new or relevant reviews? Combine reviewsLastDays (or reviewsSince), reviewScore, reviewKeywords and reviewVersions. Only the reviews that pass are returned and billed.

Which countries work? Any two-letter store country Google Play serves, with any language code: set country and language. The reviews and ratings you get are the ones that store shows.

What happens when an app is not available in a country? It is skipped and not charged; the log says which app.

Do I need a proxy? No, it works without one on Apify in testing. A proxy option is there for very high volume.

Responsible use

This Actor reads publicly visible Google Play pages without logging in. Use the data in line with Google Play's terms. App records are business data. Reviews contain the display names and text that users posted publicly; if you store or combine them with other data about individuals, the data-protection obligations are yours.