# Google Play Store Scraper - Apps, Reviews & Developer Leads (`scrapesage/google-play-scraper`) Actor

Scrape Google Play: search apps, full app details (50+ fields), top charts, developer portfolios and reviews. Pulls developer contacts (email, website, legal name/address/phone) as B2B leads, plus a monitoring mode for new apps and reviews. No browser, no login.

- **URL**: https://apify.com/scrapesage/google-play-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, SEO tools, Agents
- **Features:** Limited permissions
- **Stats:** 35 total users, 4 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.75 / 1,000 app scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Play Store Scraper - Apps, Reviews & Developer Leads

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Google Play" is referenced only to describe the publicly available website this Actor collects data from.

Extract **everything public on the [Google Play Store](https://play.google.com/store/apps)** - full **app details** (50+ fields), **user reviews**, **top free/paid/grossing charts**, and an entire **developer's app portfolio**. Every app also yields the publisher's **contact data - developer email, website, and (for registered traders) legal name, address and phone** - so the same run that powers your app research also builds a **B2B lead list of app publishers**.

No login, no cookies, no browser - fast, reliable HTTP extraction with an optional **monitoring mode** that returns only new apps and new reviews on each run.

### Google Play API alternative for public app data

Looking for a **Google Play API** or **Google Play Store API** that returns public app data? This Actor needs no API key and no Google account. Use it to **scrape Google Play** by keyword, app ID, top chart or developer, then read the rows as JSON, CSV or Excel. You can also start it from your own code through the [Apify API](https://docs.apify.com/api/v2).

### Why this Google Play scraper?

This actor ships **a complete dataset** from a single tool, and turns app data into sales leads.

| Data | This actor |
| --- | --- |
| App search by keyword | ✅ |
| Full app details (installs, histogram, version, what's-new, screenshots…) | ✅ 50+ fields |
| **Developer contact leads** (email, website) | ✅ |
| **Trader legal details** (name, address, phone - EU DSA) | ✅ when published |
| Top charts (free / paid / grossing) by category | ✅ |
| Whole developer portfolio | ✅ |
| User reviews (rating, text, version, dev reply) | ✅ |
| Data-safety & permissions sections | ✅ optional |
| **Monitoring mode** - only new apps / reviews | ✅ |
| One run, five jobs (search · details · charts · developer · reviews) | ✅ |

### Google Play data use cases

- **App-publisher lead generation** - pull a category chart or a keyword search, keep `fullDetails` on, and export a list of apps **with the developer's email and website** to feed your CRM or outreach for agencies, SDK/tooling vendors, and ASO/marketing services.
- **Review intelligence & monitoring** - track ratings and user feedback for your app and competitors; run on a schedule with monitoring mode to capture only the newest reviews for sentiment and bug-signal alerts.
- **ASO & market research** - see who ranks for a keyword or tops a category, with install ranges, ratings histograms, pricing, in-app-purchase ranges, release/update dates and what's-new notes.
- **Competitive & portfolio tracking** - scrape a rival developer's entire catalogue, or monitor a category chart to catch new entrants the moment they appear.
- **Compliance & due diligence** - capture each app's data-safety declarations, requested permissions, privacy-policy URL and trader transparency details.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) - the free plan is enough to try this actor.
2. Open the **Google Play Store Scraper**, pick a **mode** (Search, App details, Top charts, Developer apps, or Reviews), fill in the matching field, and click **Start**.
3. Watch results stream into the dataset table as each record is parsed.
4. **Export** as JSON, CSV, Excel, XML, or RSS - or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

Search a keyword and enrich every result with full details + developer leads:

```json
{
    "mode": "search",
    "searchTerms": ["habit tracker", "crypto wallet"],
    "maxAppsPerQuery": 50,
    "fullDetails": true,
    "includeDeveloperContacts": true,
    "country": "us",
    "language": "en"
}
```

Pull the newest reviews for specific apps, on a schedule, getting only new ones each run:

```json
{
    "mode": "reviews",
    "appIds": ["com.spotify.music", "https://play.google.com/store/apps/details?id=org.isoron.uhabits"],
    "maxReviewsPerApp": 200,
    "reviewsSort": "NEWEST",
    "monitorMode": true
}
```

- **mode** - `search`, `appDetails`, `topCharts`, `developerApps`, or `reviews`. Each mode uses the field that matches it (`searchTerms`, `appIds`, `collection`+`category`, `developerIds`, or `appIds`).
- **appIds** - package names (`com.spotify.music`) or full Google Play URLs; both are accepted.
- **fullDetails** *(default true)* - open each app's page for the complete record. Turn off for a faster, lighter listing.
- **includeDeveloperContacts** *(default true)* - include the developer email/website and trader legal details (the lead-gen payload).
- **includeDataSafety / includePermissions** *(default false)* - add the data-safety and permissions sections (one extra request per app each).
- **collection / category** - for `topCharts`: `TOP_FREE` / `TOP_PAID` / `GROSSING`, in a category or `All apps`.
- **country / language** - storefront and language (e.g. `us`/`en`, `de`/`de`, `in`/`en`).
- **monitorMode / monitorStoreName** - emit only records not seen in previous runs (see **Monitoring** below).
- **proxyConfiguration** - proxy settings (Apify proxy by default).

### Output

One dataset; every row is tagged with a `type` (`app` or `review`). Use the **Apps**, **Developer leads**, and **Reviews** views to switch the columns.

An app record (`type: "app"`, abridged - 50+ fields in total):

```json
{
    "type": "app",
    "appId": "com.spotify.music",
    "title": "Spotify: Music and Podcasts",
    "developer": "Spotify AB",
    "developerId": "Spotify+AB",
    "developerEmail": "support@spotify.com",
    "developerWebsite": "https://www.spotify.com",
    "developerLegalName": "Spotify AB",
    "developerLegalAddress": "Regeringsgatan 19, Stockholm…",
    "developerLegalPhoneNumber": "+46…",
    "score": 4.33,
    "ratings": 35758142,
    "histogram": { "1": 3710206, "2": 1085011, "3": 1333889, "4": 3061670, "5": 26567349 },
    "installs": "1,000,000,000+",
    "minInstalls": 1000000000,
    "free": true,
    "price": 0,
    "offersIAP": true,
    "IAPRange": "$0.99 - $99.99 per item",
    "genre": "Music & Audio",
    "contentRating": "Teen",
    "released": "Oct 7, 2008",
    "updated": 1781196440000,
    "version": "VARY",
    "recentChanges": "We're always making changes…",
    "screenshots": ["https://…"],
    "url": "https://play.google.com/store/apps/details?id=com.spotify.music",
    "scrapedAt": "2026-06-14T12:00:00.000Z"
}
```

A review record (`type: "review"`):

```json
{
    "type": "review",
    "appId": "org.isoron.uhabits",
    "reviewId": "f2b3…",
    "userName": "Billie Ramirez",
    "score": 5,
    "title": null,
    "text": "Best habit tracker I've used, clean and free.",
    "thumbsUp": 12,
    "version": "9.1.52",
    "date": "2026-06-13T10:49:06.000Z",
    "replyText": null,
    "replyDate": null,
    "url": "https://play.google.com/store/apps/details?id=org.isoron.uhabits&reviewId=f2b3…",
    "scrapedAt": "2026-06-14T12:00:00.000Z"
}
```

**Field-coverage notes.** Developer contact fields are present when the developer published them - `developerEmail` and `developerWebsite` are near-universal; the trader legal name/address/phone appear for developers registered as traders (common under the EU Digital Services Act) and are blank otherwise. A blank field means Google Play didn't publish that value for that record - nothing is dropped, so you always get the richest data available. Empty results (e.g. an app with no reviews) are reported as a successful run.

### Monitoring - get only new apps & reviews

Turn on **`monitorMode`** to make repeat runs incremental. The actor remembers what it has already returned (app IDs for search/charts/developer modes; review IDs for reviews mode) in a named key-value store (**`monitorStoreName`**) and emits **only records that are new since the last run**.

- Track a **category chart** or a **keyword** and get alerted only when a *new app* appears.
- Track an **app's reviews** and capture only the *newest reviews* each run - perfect for sentiment dashboards and support alerts.
- It works **alongside [Apify Schedules](https://docs.apify.com/platform/schedules)**, not against them: the schedule triggers the run on your cron; monitoring mode dedupes against earlier runs so each run yields only fresh data. Use a distinct `monitorStoreName` per tracked target so their histories stay separate.

### How much does it cost to scrape Google Play?

This Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

- **App Scraped** - One Google Play app - full metadata (50+ fields) plus developer contact/lead data (email, website, legal name/address/phone) when published.
- **Review Scraped** - One user review - rating, title, text, app version, thumbs-up, date and any developer reply.

The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** - start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** - official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** - run it on a cron to keep your data fresh.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** - trigger downstream actions the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/google-play-scraper').call({
    mode: 'topCharts',
    collection: 'TOP_FREE',
    category: 'FINANCE',
    maxAppsPerQuery: 50,
    fullDetails: true,
    includeDeveloperContacts: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} records`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps - no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** - multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** - push new records straight into your CRM or sheet.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** - get notified when a run finds something new.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** - auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** - pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** - trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** - ask your assistant to "find the top 50 free finance apps on Google Play and list each developer's contact email" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready**: AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)**: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), with no account and no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)**: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **app-market & lead-gen stack** - pair Play Store intelligence with ad, hiring and outreach signals:

- **[Google Ads Transparency Scraper](https://apify.com/scrapesage/google-ads-transparency-scraper)** - see exactly which ads any advertiser is running.
- **[Facebook Ad Library Scraper](https://apify.com/scrapesage/facebook-ad-library-scraper)** - competitor ad creatives on Meta & Instagram.
- **[LinkedIn Jobs Scraper](https://apify.com/scrapesage/linkedin-jobs-scraper)** - job postings as hiring-intent signals.
- **[Multi-ATS Job Scraper](https://apify.com/scrapesage/multi-ats-job-scraper)** - jobs from Greenhouse, Lever, Ashby, Workday & more.
- **[SAM.gov Scraper](https://apify.com/scrapesage/sam-gov-scraper)** - US federal contract opportunities & contacts.
- **[Bark Listing Scraper](https://apify.com/scrapesage/bark-listing-scraper)** - service-provider directory leads.
- **[Eventbrite Scraper](https://apify.com/scrapesage/eventbrite-scraper)** - events plus organizer leads with contacts.
- **[Telegram Scraper](https://apify.com/scrapesage/telegram-scraper)** - channels, messages, media & search.

### Tips

- **Lead lists:** run `search` or `topCharts` with `fullDetails` and `includeDeveloperContacts` on, then use the **Developer leads** view to export emails and websites straight to CSV.
- **Reviews at scale:** keep review concurrency modest and let each app paginate internally; for very large pulls (thousands of reviews across many apps), switch the proxy to residential.
- **Monitoring:** give each tracked target its own `monitorStoreName`, then schedule the run - you'll only ever pay for and process new records.
- **Localize:** set `country` and `language` to match the storefront you care about; rankings, pricing and the review pool all change by country.
- **Lighter, cheaper runs:** turn `fullDetails` off when you only need the basic listing fields (title, score, developer, price) and don't need contacts.

### FAQ

**Do I need a Google account or API key?** No. This actor reads the same public pages and endpoints the Play Store serves to any visitor - no login, key, or cookies.

**Is this a Google Play API?** It works like one for public data: you start a run through the Apify API and get app, review and chart rows back as JSON. It reads public store data only, so it cannot reach your own Play Console data.

**Where do the developer email and contact details come from?** From the app's own Google Play listing, where Google publishes the developer's contact email and website, plus trader legal details (name, address, phone) for developers registered as traders. Fields are blank only when the developer didn't publish them.

**How many reviews can I get per app?** Newest-first pagination reaches into the thousands per app; set `maxReviewsPerApp` to whatever you need. Use monitoring mode to grab only new reviews on each scheduled run.

**Can I scrape a specific country's store?** Yes - set `country` (and `language`). Charts, prices and reviews are all storefront-specific.

**Can I export to Google Sheets, CSV, or Excel?** Yes - one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**Is scraping Google Play legal?** This actor collects publicly available data only. You're responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA for personal data) and Google's terms.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"Google Play" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Google Play product, is not authorised or certified by Google LLC, and does not distribute Google Play software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome - this actor is actively maintained.

# Actor input Schema

## `mode` (type: `string`):

Pick a job. `Search` discovers apps by keyword. `App details` pulls the full record (incl. developer contacts) for specific apps. `Top charts` lists the top free/paid/grossing apps in a category. `Developer apps` returns a developer's whole portfolio. `Reviews` pulls user reviews for specific apps.

## `searchTerms` (type: `array`):

Keywords to search the Play Store for, e.g. `habit tracker`, `crypto wallet`. One row per term. (Mode: Search.)

## `appIds` (type: `array`):

Package names (e.g. `com.spotify.music`) or full Google Play URLs. Used by the App details and Reviews modes.

## `collection` (type: `string`):

Which ranking to pull. (Mode: Top charts.)

## `category` (type: `string`):

Category for the top chart, or `All apps` for the overall chart. (Mode: Top charts.)

## `developerIds` (type: `array`):

Developer names (e.g. `Spotify AB`), numeric developer IDs, or developer page URLs. Returns every app in their portfolio. (Mode: Developer apps.)

## `maxAppsPerQuery` (type: `integer`):

Cap the number of apps returned per search term, chart, or developer (Google Play returns up to ~250 per listing).

## `fullDetails` (type: `boolean`):

Open each discovered app's page for the complete 50+ field record - developer contacts, ratings histogram, install range, version, what's-new, screenshots, content rating and more. Turn off for a faster, lighter listing (basic fields only). Always on for App details mode.

## `includeDeveloperContacts` (type: `boolean`):

Include the developer's public contact data - email, website, and (where the developer is a registered trader under the EU Digital Services Act) legal name, address and phone. This is the lead-gen payload. Requires full details.

## `includeDataSafety` (type: `boolean`):

Also fetch each app's Data safety section (data shared, data collected, security practices). Adds one request per app.

## `includePermissions` (type: `boolean`):

Also fetch each app's requested Android permissions. Adds one request per app.

## `maxReviewsPerApp` (type: `integer`):

How many reviews to fetch per app, newest first by default (Google Play exposes up to a few thousand per app). (Mode: Reviews.)

## `reviewsSort` (type: `string`):

Order in which reviews are pulled. (Mode: Reviews.)

## `country` (type: `string`):

Two-letter storefront country code (e.g. `us`, `gb`, `in`, `de`). Affects rankings, pricing and review pool.

## `language` (type: `string`):

Two-letter language code (e.g. `en`, `es`, `de`) for titles, descriptions and reviews.

## `monitorMode` (type: `boolean`):

Remember what was already returned and emit ONLY records not seen in previous runs (new apps for a search/chart, or new reviews for an app). Pairs with Apify Schedules to track changes over time. State is kept in the key-value store below.

## `monitorStoreName` (type: `string`):

Named key-value store that holds the 'already seen' ids for monitoring mode. Use a different name per tracked target/query to keep their histories separate.

## `maxConcurrency` (type: `integer`):

Maximum parallel requests. Lower it if you hit rate limits on very large runs.

## `proxyConfiguration` (type: `object`):

Proxy settings. Google Play has no hard anti-bot, so the default Apify proxy is plenty; switch to residential for very large or high-frequency runs.

## Actor input object example

```json
{
  "mode": "search",
  "searchTerms": [
    "habit tracker"
  ],
  "appIds": [
    "com.spotify.music"
  ],
  "collection": "TOP_FREE",
  "category": "APPLICATION",
  "maxAppsPerQuery": 50,
  "fullDetails": true,
  "includeDeveloperContacts": true,
  "includeDataSafety": false,
  "includePermissions": false,
  "maxReviewsPerApp": 200,
  "reviewsSort": "NEWEST",
  "country": "us",
  "language": "en",
  "monitorMode": false,
  "monitorStoreName": "google-play-monitor",
  "maxConcurrency": 6,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped records in the default dataset. App rows carry full metadata and developer contacts; review rows carry the user feedback.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "habit tracker"
    ],
    "appIds": [
        "com.spotify.music"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/google-play-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["habit tracker"],
    "appIds": ["com.spotify.music"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/google-play-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "habit tracker"
  ],
  "appIds": [
    "com.spotify.music"
  ]
}' |
apify call scrapesage/google-play-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/google-play-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/I0h1oRz6ezV757QGu/builds/nkwC40RQy8vKsIXgP/openapi.json
