# Google Play Scraper: Apps, Developer Emails, Ratings & Reviews (`torix33/google-play-scraper`) Actor

Scrape Google Play apps by keyword, package name or developer: ratings, installs, prices, categories, update dates and developer email, website, address and phone — plus unlimited reviews with developer replies. Fast, no browser. Pay per result.

- **URL**: https://apify.com/torix33/google-play-scraper.md
- **Developed by:** [Torix](https://apify.com/torix33) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 Scraper — Apps, Developer Emails, Ratings & Unlimited Reviews

Scrape the **Google Play Store**: search apps by keyword, look up apps by URL or package name, list every app of a developer, and discover **similar apps**. Every app comes with **rating, rating count, star histogram, installs, price, in-app purchases, category, update date, version and changelog** — plus the developer's **email, website, address, legal name and phone number**.

Turn on reviews to export **unlimited reviews** (fully paginated, not capped at a few hundred) with star rating, text, helpful votes, app version and the **developer's reply**.

No browser, no login, no API key.

### How to run it in 3 steps

1. **Add your input.** In **Search terms** paste keywords, or Google Play links / package names in **Start URLs** — e.g. `habit tracker` or `com.spotify.music`. The form is already filled with a working example, so you can skip this step for a first try.
2. **Press Start.** The prefilled run returns 23 apps in about 13 s and costs about **$0.069**. Set **Max results (cost cap)** to cap the cost of bigger runs; you only pay for apps actually delivered.
3. **Get the data.** Open the **Output** tab and export JSON, CSV or Excel — or run it from the API, Make, Zapier, n8n or an AI agent (see below).

### Features

- **B2B lead data on every app:** `developerEmail` (100% of apps in our test), `developerWebsite`, `developerAddress`, `developerLegalName`, `developerLegalEmail`, `developerLegalPhone`.
- **Unlimited reviews** with developer replies — ideal for sentiment analysis and support benchmarking.
- **All entry points:** keywords, app URLs, package names, developer pages; optional **similar apps** expansion.
- **Any country & language** (`country`, `language`).
- **Two price points:** apps and reviews are billed separately, so review-only runs are billed at the lower review price.
- **Fast:** thousands of reviews per minute; rotating datacenter proxies are used automatically if Google throttles.

### Use cases

- **Lead generation:** collect app publishers in a niche with their emails and websites.
- **ASO & competitor research:** rankings per keyword, ratings, installs, update cadence, monetization.
- **Review mining:** find bugs, feature requests and churn reasons with an LLM — for your app or competitors.
- **Market sizing:** installs and rating counts across a category or developer portfolio.

### Input

```json
{
  "searchTerms": ["habit tracker"],
  "startUrls": [
    "https://play.google.com/store/apps/details?id=com.spotify.music",
    "com.duolingo",
    "https://play.google.com/store/apps/dev?id=5700313618786177705"
  ],
  "country": "us",
  "language": "en",
  "scrapeDetails": true,
  "includeSimilar": false,
  "scrapeReviews": true,
  "maxReviewsPerApp": 1000,
  "reviewSort": "newest"
}
```

### Output — app (`type: "app"`)

#### Real output (default input)

First 2 of 31 records from a run with the prefilled input (4.2 s on a test machine; long values shortened here):

```json
[
  {
    "type": "app",
    "appId": "net.sarasarasa.lifeup",
    "name": "LifeUp: Gamify Tasks & Habits",
    "url": "https://play.google.com/store/apps/details?id=net.sarasarasa.lifeup&hl=en&gl=us",
    "summary": "Turn tasks &amp; habits into your own RPG. Custom skills, rewards, loot &amp; crafting.",
    "description": "LifeUp turns your real-life tasks, habits, and goals into an RPG adventure. Build skills, earn coins, unlock achievements, and design your o…",
    "developer": "LifeUp Apps",
    "developerId": "4629038381404180944",
    "developerEmail": "lifeup@ulives.io",
    "developerWebsite": "https://lifeupapp.fun/",
    "developerAddress": null,
    "developerLegalName": "黄天浩",
    "developerLegalEmail": "kei.ayagi@gmail.com",
    "developerLegalPhone": null,
    "privacyPolicy": "https://docs.lifeupapp.fun/en/#/introduction/privacy-terms",
    "rating": 4.67,
    "ratingCount": 7132,
    "reviewCount": 633,
    "histogram": {
      "1": 182,
      "2": 145,
      "3": 218,
      "4": 728,
      "5": 5849
    },
    "installs": "100,000+",
    "minInstalls": 100000,
    "maxInstalls": 317633,
    "free": false,
    "price": 4.99,
    "currency": "USD",
    "offersIAP": true,
    "iapRange": "$2.99 per item",
    "adSupported": false,
    "genre": "Productivity",
    "genreId": "PRODUCTIVITY",
    "categories": [
      "Productivity"
    ],
    "contentRating": "Everyone",
    "released": "Apr 27, 2019",
    "updated": "2026-10-13T09:57:17.000Z",
    "version": "1.106.0",
    "androidVersion": "6.0",
    "recentChanges": null,
    "icon": "https://play-lh.googleusercontent.com/3PcAh-2kHvqQ9-ugARRHnOmFdbYDCrb6q_NL2IP1MnvsytZvnbLOSLaIUTC3x6HDC_BYpYUvayLhlqfKFFDiMQ",
    "headerImage": "https://play-lh.googleusercontent.com/B9eZOFe02QOlVVOljoGWji9qsoDoMwWfZjX-h0Fo6wGZ8CwZ7sjXtJFoO37j5B6T_iawLroy2jnf0UVnSTIJ",
    "screenshots": [
      "https://play-lh.googleusercontent.com/xkObsB04GAOvMWDCWCaOQjBDCegbpnDaDLwSanw69jbt4yq5rsoFKgll7DpP6uuXBpLvZNBtFxHEw0L04Xwpfw",
      "https://play-lh.googleusercontent.com/uPl5aoXdJAi-4HeaDqLI6Pf7HkwP9w_fNkUeob6IdmR7gESlPogNT7ov4w2Wz0dqmPlXxd_ArUnEE7tDL8n4Vg",
      "https://play-lh.googleusercontent.com/knQfJQnpU6vty8JjdvWXNqTZJi5LbyYa8a34kBu6H4COeaoWTbViqAEGjaE8OOzOFEcH7OBm1e0JdpoOWpkUSQ"
    ],
    "video": "https://www.youtube.com/embed/SRugl3-_6J0?vq=large&rel=0&autohide=1&showinfo=0",
    "country": "us",
    "language": "en",
    "source": "search:habit tracker",
    "rank": 8,
    "scrapedAt": "2026-10-15T12:16:21.330Z"
  },
  {
    "type": "app",
    "appId": "com.habitnow",
    "name": "HabitNow Daily Routine Planner",
    "url": "https://play.google.com/store/apps/details?id=com.habitnow&hl=en&gl=us",
    "summary": "To-do list, Habit Tracker, Routine Planner and Reminders. All in just one app!",
    "description": "Maximize Your Productivity with HabitNow: Your Ultimate Todo List and Habit Tracker! 🚀\nKeeping your life organized has never been easier! Wi…",
    "developer": "HabitNow Apps",
    "developerId": "HabitNow+Apps",
    "developerEmail": "habitnow.apps@gmail.com",
    "developerWebsite": null,
    "developerAddress": null,
    "developerLegalName": "GARCIA RAMPINI, AGUSTIN EZEQUIEL",
    "developerLegalEmail": "habitnow.apps@gmail.com",
    "developerLegalPhone": "+54 351 772-2793",
    "privacyPolicy": "https://www.habitnow.app/privacy-policy",
    "rating": 4.74,
    "ratingCount": 93199,
    "reviewCount": 2871,
    "histogram": {
      "1": 2319,
      "2": 804,
      "3": 2319,
      "4": 7682,
      "5": 80026
    },
    "installs": "5,000,000+",
    "minInstalls": 5000000,
    "maxInstalls": 7262395,
    "free": true,
    "price": 0,
    "currency": "USD",
    "offersIAP": true,
    "iapRange": "$0.99 - $11.99 per item",
    "adSupported": false,
    "genre": "Productivity",
    "genreId": "PRODUCTIVITY",
    "categories": [
      "Productivity"
    ],
    "contentRating": "Everyone",
    "released": "May 17, 2019",
    "updated": "2026-07-26T22:27:33.000Z",
    "version": "2.5.4a",
    "androidVersion": "6.0",
    "recentChanges": "Latest changes:<br><br>    ✅ In-app events have been added to the application, including templates and challenges, offers, and developer ann…",
    "icon": "https://play-lh.googleusercontent.com/HsjWZ5h3QDDNPL-0xKP9j4CXG6dxaojS2PtyuRnylitzLm5huDOCMkwc8gYF1glrr1laiRNospq5uNB0HUIo",
    "headerImage": "https://play-lh.googleusercontent.com/rFBjMvOr9AMlbcXyoEcCmd68k7yOPeEwbfmaZar1Anz5nfZZxQvEoWOTj914GRyunw4rCEHtbbt_mtMUivcncQ",
    "screenshots": [
      "https://play-lh.googleusercontent.com/4_x2XH6oemmQ0_d9X_k7sRvq_yQmrb3lUB4ZA7WNZCDhn_kQ9zRzZS2XffNEbBnVcDK-fCm-NowhjTs0VdQJcO8",
      "https://play-lh.googleusercontent.com/58H0BAGBiSYeRYK4pixVsgYyebULGiYM2S1mBgxTWCFfGS11wbO4uo0e9eF3JmtFWJ99xgnQEh3-ufpmVztj1Q",
      "https://play-lh.googleusercontent.com/Nwb7e4hd53oPd6WyCGKeT-4Q4yBwe4o7oDUdD6Lbpg3RZp-fpkgXceqIs6PLL1Xon8DaxMeZxPGn6XWB6JQDwG8"
    ],
    "video": null,
    "country": "us",
    "language": "en",
    "source": "search:habit tracker",
    "rank": 2,
    "scrapedAt": "2026-10-15T12:16:21.407Z"
  }
]
```

```json
{
  "type": "app",
  "appId": "com.spotify.music",
  "name": "Spotify: Music and Podcasts",
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us",
  "summary": "Play millions of songs and podcasts on your device.",
  "developer": "Spotify AB",
  "developerId": "Spotify+AB",
  "developerEmail": "support@spotify.com",
  "developerWebsite": "https://www.spotify.com",
  "developerAddress": "Regeringsgatan 19, 111 53 Stockholm, Sweden",
  "developerLegalName": "Spotify AB",
  "developerLegalPhone": null,
  "privacyPolicy": "https://www.spotify.com/legal/privacy-policy/",
  "rating": 4.35,
  "ratingCount": 36475016,
  "reviewCount": 1251203,
  "histogram": { "1": 2400000, "2": 800000, "3": 1500000, "4": 3600000, "5": 28100000 },
  "installs": "1,000,000,000+",
  "minInstalls": 1000000000,
  "free": true,
  "offersIAP": true,
  "genre": "Music & Audio",
  "contentRating": "Teen",
  "updated": "2026-10-07T06:27:03.000Z",
  "version": "Varies with device",
  "icon": "https://play-lh.googleusercontent.com/…",
  "screenshots": ["https://play-lh.googleusercontent.com/…"],
  "country": "us",
  "language": "en",
  "source": "url",
  "rank": null
}
```

### Output — review (`type: "review"`)

```json
{
  "type": "review",
  "reviewId": "54e7759a-1f94-4785-9f68-dcd071d7b713",
  "appId": "com.spotify.music",
  "appName": "Spotify: Music and Podcasts",
  "rating": 5,
  "text": "Best music app…",
  "author": "kingpinz Music",
  "date": "2026-10-12T21:15:57.680Z",
  "thumbsUp": 0,
  "appVersion": "9.0.80.1063",
  "replyText": null,
  "replyDate": null
}
```

Use the **Apps** and **Reviews** dataset views to export each type separately.

### Use with AI agents (MCP), LangChain, RAG & the API

This actor is a ready-made **tool for AI agents**: an LLM can call it, wait for the run and read clean JSON back.

**MCP server (Claude Desktop, Claude Code, Cursor, VS Code, any MCP client)** — add Apify's hosted MCP server with this actor enabled as a tool:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=torix33/google-play-scraper",
      "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
    }
  }
}
```

**LangChain / LangGraph** (`pip install langchain-apify`, set `APIFY_API_TOKEN`):

```python
import json
from langchain_apify import ApifyActorsTool, ApifyWrapper
from langchain_core.documents import Document

## 1) give the actor to an agent as a tool
tool = ApifyActorsTool("torix33/google-play-scraper")

## 2) or load results as Documents for a RAG index
loader = ApifyWrapper().call_actor(
    actor_id="torix33/google-play-scraper",
    run_input={"searchTerms": ["habit tracker"], "startUrls": ["https://play.google.com/store/apps/details?id=com.spotify.music", "com.duolingo", "https://play.google.com/store/apps/dev?id=5700313618786177705"], "country": "us", "language": "en", "scrapeDetails": True, "includeSimilar": False, "scrapeReviews": True, "maxReviewsPerApp": 1000, "reviewSort": "newest"},
    dataset_mapping_function=lambda item: Document(page_content=json.dumps(item, ensure_ascii=False), metadata={"url": item.get("url")}),
)
docs = loader.load()
```

**REST API — one synchronous call, dataset items in the response:**

```bash
curl -X POST "https://api.apify.com/v2/acts/torix33~google-play-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["habit tracker"], "startUrls": ["https://play.google.com/store/apps/details?id=com.spotify.music", "com.duolingo", "https://play.google.com/store/apps/dev?id=5700313618786177705"], "country": "us", "language": "en", "scrapeDetails": true, "includeSimilar": false, "scrapeReviews": true, "maxReviewsPerApp": 1000, "reviewSort": "newest"}'
```

Also works with the Apify Python/JS clients, **Make, Zapier, n8n**, Google Sheets, webhooks and schedules. Export as JSON, CSV, Excel, XML or RSS.

**RAG tip:** Review rows include developer replies — give the model both to benchmark how fast and how well competitors answer users.

### Lead-generation workflow: works well with

The same people who use this actor usually need one of these next:

- **[Google Maps Scraper: Leads with Phones, Emails & Socials](https://apify.com/torix33/google-maps-scraper)** — find local businesses on Google Maps with phones, emails and social links
- **[Contact Info & Contact Details Scraper: Emails, Phone Numbers](https://apify.com/torix33/website-contact-details-extractor)** — turn any list of websites into emails, phones and social profiles
- **[Website Tech Stack Detector: CMS, Analytics, CRM & More](https://apify.com/torix33/website-tech-stack-detector)** — qualify the leads by the technologies their websites use (Shopify, HubSpot, Stripe…)
- **[LinkedIn Company Scraper: Size, Industry, HQ, Employees](https://apify.com/torix33/linkedin-company-scraper)** — enrich companies with LinkedIn industry, size, headquarters and website
- **[TikTok Profile Scraper: Followers, Likes, Bio Emails](https://apify.com/torix33/tiktok-profile-scraper)** — find TikTok creators with follower counts and bio emails
- **[Shopify Store & Product Scraper: Prices, Variants, Stock](https://apify.com/torix33/shopify-store-scraper)** — scrape the product catalog of any Shopify store you found

### Pricing

- **$3.00 per 1,000 apps** ($0.003 per app).
- **$0.80 per 1,000 reviews** ($0.0008 per review).
- The prefilled input is billed for 31 apps + 0 reviews → **$0.093**.
- Example: 1,000 apps → $3.00; 10,000 → $30.00. Set **Max results (cost cap)** to limit any run.

### Limitations

- Google returns up to ~30 apps per search term; use more terms, developer pages or *similar apps* for wider coverage.
- Developer contact details are public on each app's Google Play page. Process personal data in line with GDPR and similar laws.

### FAQ

**Does it return developer emails?**
Yes. `developerEmail` was present for 100% of apps in our test, plus website, address and legal contacts where published.

**Is there a review limit?**
No hard limit; set `maxReviewsPerApp`. Reviews are priced separately at $0.80 per 1,000.

**Why do I get only ~30 apps per keyword?**
Google Play returns about 30 apps per search. Add more terms, developer pages or turn on `includeSimilar`.

# Actor input Schema

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

Keywords as typed into the Google Play search (Google returns up to ~30 apps per term — enable similar apps to go wider).

## `startUrls` (type: `array`):

Google Play app URLs, package names (<code>com.spotify.music</code>) or developer URLs (<code>play.google.com/store/apps/dev?id=…</code> / <code>…/developer?id=…</code>) — a developer URL returns all of their apps.

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

Two-letter country code (<code>us</code>, <code>gb</code>, <code>de</code>, <code>in</code>…).

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

Language code for texts and reviews (<code>en</code>, <code>de</code>, <code>es</code>, <code>uk</code>…).

## `scrapeDetails` (type: `boolean`):

Open each app for developer email, website, address, phone, installs, rating count, histogram and more. Off = list data only (faster).

## `includeSimilar` (type: `boolean`):

Also collect Google's "similar apps" for every app found — great for competitor and lead discovery.

## `maxSimilarPerApp` (type: `integer`):

Only used when similar apps are added.

## `scrapeReviews` (type: `boolean`):

Also export reviews (rows with <code>type: "review"</code>), including developer replies.

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

No hard limit — Google Play reviews are fully paginated.

## `reviewSort` (type: `string`):

Newest, most relevant or by rating.

## `maxResults` (type: `integer`):

Stop after this many rows (apps + reviews). <code>0</code> = no limit.

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

Parallel requests.

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

Requests go direct first; if Google throttles, retries switch to these proxies with a fresh IP each time.

## Actor input object example

```json
{
  "searchTerms": [
    "habit tracker"
  ],
  "startUrls": [
    "https://play.google.com/store/apps/details?id=com.spotify.music"
  ],
  "country": "us",
  "language": "en",
  "scrapeDetails": true,
  "includeSimilar": false,
  "maxSimilarPerApp": 10,
  "scrapeReviews": false,
  "maxReviewsPerApp": 100,
  "reviewSort": "newest",
  "maxResults": 0,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `apps` (type: `string`):

No description

## `reviews` (type: `string`):

No description

## `runStats` (type: `string`):

No description

# 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"
    ],
    "startUrls": [
        "https://play.google.com/store/apps/details?id=com.spotify.music"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("torix33/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"],
    "startUrls": ["https://play.google.com/store/apps/details?id=com.spotify.music"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("torix33/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"
  ],
  "startUrls": [
    "https://play.google.com/store/apps/details?id=com.spotify.music"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call torix33/google-play-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,torix33/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/PsyCeOsVMJ2euOvIx/builds/5dCj4wRgsCsig1fGM/openapi.json
