# Google Play Reviews, App Details & B2B Leads Scraper (`mamang_warkop/google-play-reviews-and-leads-scraper`) Actor

Extract Google Play Store user reviews (with 1-5 star filter), full app stats & installs, or build B2B mobile app developer lead lists (verified developer email, website, address) by keyword.

- **URL**: https://apify.com/mamang_warkop/google-play-reviews-and-leads-scraper.md
- **Developed by:** [Wilda Adri Perta](https://apify.com/mamang_warkop) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Reviews, App Details & B2B Developer Leads Scraper (3-in-1)

Extract **Google Play Store user reviews** (with 1–5 star filtering + automatic pain-point & bug tagging), full **App Intelligence & Real Install Metrics**, or generate **B2B Mobile App Publisher Lead Lists** (verified developer email, website, physical address, lead score, and cold-outreach pitch angle) by keyword — with **zero browser overhead**.

***

### Why Choose This Actor Over Other Google Play Scrapers?

| Feature | Our Actor (`mamang_warkop`) | Typical Play Store Scrapers |
| :--- | :--- | :--- |
| **3-in-1 Workflow** | **`reviews` + `app_details` + `search_leads`** in a single Actor. | Separate Actors for reviews vs app details vs search. |
| **Automatic Pain-Point & Bug Tagging** | Tags every review with **`sentiment`** and **`painPointCategories`** (`crash_or_bug`, `login_auth`, `pricing_paywall`, `ads_experience`, `performance_slow`, `customer_support`). | Raw text only — requires manual filtering. |
| **B2B App Publisher Lead Score & Pitch** | Automatically calculates **`b2bLeadScore` (0–100)** and **`agencyPitchAngle`** based on install count, star rating, and monetization setup. | No lead scoring or outreach insights. |
| **Flexible Input Parsing** | Accepts **package IDs** (`com.whatsapp`), **full Google Play URLs**, or **search keywords** (`fitness tracker`). | Often breaks if you paste a full URL with query params. |
| **Speed & Cost** | **Pure HTTP API** (`$0.50 / 1,000 results`) — no slow headless browser required. | Higher compute usage & slower pagination. |

***

### Step-by-Step Usage Guide (Panduan Penggunaan)

#### Option A: Run in Apify Console UI (Zero Coding)

1. **Enter Target Queries (`queries`):**
   - For **`reviews`** or **`app_details`** mode: enter one or more package IDs (`com.spotify.music`, `com.duolingo`) or paste full `https://play.google.com/store/apps/details?id=...` URLs.
   - For **`search_leads`** mode: enter niche keywords (`"invoice maker"`, `"habit tracker"`, `"shopify pos"`).
2. **Choose Mode (`mode`):**
   - **`Scrape User Reviews (reviews)`**: Extract reviews with optional 1–5 star filter (`starFilter`) and sort order (`newest`, `most_relevant`, `rating`).
   - **`App Details & Developer Contacts (app_details)`**: Extract real installs, rating histograms, pricing, and verified developer email/website/address.
   - **`Keyword to B2B App Developer Leads (search_leads)`**: Search Google Play by keyword and automatically enrich every matching app with developer contact details and B2B lead score.
3. **Set Country & Language (`country`, `lang`):** Defaults to `"us"` and `"en"`. Supports any Google Play market (`"gb"`, `"de"`, `"id"`, `"br"`, `"in"`, `"jp"`, etc.).
4. Click **Start**, then export your dataset as **CSV, Excel, or JSON**.

***

#### Option B: Automate with Clay, n8n, or Make.com

```bash
curl -X POST "https://api.apify.com/v2/acts/mamang_warkop~google-play-reviews-and-leads-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "queries": ["com.spotify.music"],
    "mode": "reviews",
    "starFilter": "1",
    "sortBy": "newest",
    "maxItemsPerQuery": 25
  }'
```

***

#### Option C: Python & Node.js SDK

##### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")
run = client.actor("mamang_warkop/google-play-reviews-and-leads-scraper").call(
    run_input={
        "queries": ["fitness tracker", "calorie counter"],
        "mode": "search_leads",
        "maxItemsPerQuery": 20,
        "country": "us",
        "lang": "en",
    }
)

for lead in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(lead["title"], lead["developerEmail"], lead["b2bLeadScore"], lead["agencyPitchAngle"])
```

***

### Input Parameters Reference

| Field | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `queries` | `array` | `["com.whatsapp", "com.spotify.music"]` | App package IDs, full Google Play URLs, or search keywords (when `mode` is `"search_leads"`). |
| `mode` | `string` | `"reviews"` | `"reviews"`, `"app_details"`, or `"search_leads"`. |
| `maxItemsPerQuery` | `integer` | `10` | Max reviews or app leads per query (1–2,000). |
| `sortBy` | `string` | `"newest"` | Review sort order: `"newest"`, `"most_relevant"`, or `"rating"`. |
| `starFilter` | `string` | `"all"` | Filter reviews by star rating: `"all"`, `"1"`, `"2"`, `"3"`, `"4"`, or `"5"`. |
| `country` | `string` | `"us"` | 2-letter country code (`"us"`, `"gb"`, `"de"`, `"id"`, `"sg"`, `"in"`, `"br"`). |
| `lang` | `string` | `"en"` | 2-letter language code (`"en"`, `"id"`, `"es"`, `"de"`, `"pt"`, `"ja"`). |

***

### Output Examples

#### 1. Mode `reviews` (with Pain-Point Classification)

```json
{
  "appId": "com.spotify.music",
  "reviewId": "eb71b060-9d2a-4c6e-9f12-112233445566",
  "userName": "Alex M.",
  "score": 1,
  "sentiment": "negative",
  "painPointCategories": ["crash_or_bug", "performance_slow"],
  "content": "App keeps crashing and freezing after the latest update whenever I open offline playlists.",
  "thumbsUpCount": 42,
  "reviewCreatedVersion": "8.9.80.512",
  "appVersion": "8.9.80.512",
  "at": "2026-10-20T11:24:00",
  "hasDeveloperReply": false,
  "replyContent": null,
  "repliedAt": null,
  "country": "us",
  "lang": "en"
}
```

#### 2. Mode `app_details` / `search_leads` (B2B Publisher Lead Enrichment)

```json
{
  "appId": "com.example.fittracker",
  "title": "FitTracker Pro - Daily Workout",
  "installs": "100,000+",
  "realInstalls": 148520,
  "score": 3.72,
  "ratings": 4120,
  "free": true,
  "offersIAP": true,
  "inAppProductPrice": "$4.99 - $49.99 per item",
  "developer": "FitLabs Mobile Inc.",
  "developerEmail": "support@fitlabsmobile.io",
  "developerWebsite": "https://fitlabsmobile.io",
  "developerAddress": "Austin, TX, United States",
  "b2bLeadScore": 95,
  "agencyPitchAngle": "High-install app (148,520 installs) with low rating (3.72 stars) — prime prospect for QA, bug-fixing, reputation management, or ASO.",
  "genre": "Health & Fitness",
  "url": "https://play.google.com/store/apps/details?id=com.example.fittracker"
}
```

***

### Transparent Pricing

- **Pay-Per-Event:** `$0.0005` per result (`$0.50 per 1,000 results`).
- Apify's free `$5.00` monthly credit covers up to **10,000 results every month for free**.

# Actor input Schema

## `queries` (type: `array`):

Enter package IDs (e.g. com.whatsapp, com.shopify.mobile), full play.google.com URLs, or keywords (when using 'search_leads' mode).

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

Choose 'reviews' to extract user reviews, 'app_details' for full app stats & developer contact info, or 'search_leads' to search by keyword and extract developer emails/websites.

## `maxItemsPerQuery` (type: `integer`):

Maximum reviews per app (1-2000) in 'reviews' mode, or max apps per keyword (1-30) in 'search_leads' mode.

## `sortBy` (type: `string`):

How to sort reviews in 'reviews' mode.

## `starFilter` (type: `string`):

Filter reviews by star rating (e.g. choose '1' or '2' to analyze competitor user complaints).

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

2-letter country code (e.g. us, gb, id, sg, in, de, br, jp).

## `lang` (type: `string`):

2-letter language code (e.g. en, id, es, de, pt, fr).

## Actor input object example

```json
{
  "queries": [
    "com.whatsapp",
    "com.shopify.mobile"
  ],
  "mode": "reviews",
  "maxItemsPerQuery": 15,
  "sortBy": "newest",
  "starFilter": "all",
  "country": "us",
  "lang": "en"
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "queries": [
        "com.whatsapp",
        "com.shopify.mobile"
    ],
    "country": "us",
    "lang": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mamang_warkop/google-play-reviews-and-leads-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 = {
    "queries": [
        "com.whatsapp",
        "com.shopify.mobile",
    ],
    "country": "us",
    "lang": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("mamang_warkop/google-play-reviews-and-leads-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 '{
  "queries": [
    "com.whatsapp",
    "com.shopify.mobile"
  ],
  "country": "us",
  "lang": "en"
}' |
apify call mamang_warkop/google-play-reviews-and-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mamang_warkop/google-play-reviews-and-leads-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/QcwFqNiuYAHM3MHcf/builds/94kNAyNz2bOoG9zS9/openapi.json
