# App Store & Google Play Reviews Scraper - Ratings & Dev Leads (`emancip/app-store-google-play-reviews-scraper`) Actor

Scrape App Store (iOS) & Google Play (Android) reviews, star ratings, review text, app versions, developer replies, app metadata, and developer contact emails. Fast, dual-platform, no proxies or API keys needed.

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

## Pricing

from $2.00 / 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

## 📱 App Store & Google Play Reviews Scraper

> Ultra-fast, dual-platform customer review scraper for **Apple App Store (iOS)** and **Google Play Store (Android)**. Extract star ratings, full review text, user names, app versions, developer replies, helpful vote counts, and verified **developer support contact emails** — with **zero browser overhead and zero proxy costs**.

***

### ⚡ Key Features

- **Dual-Platform in One Tool:** Automatically detects and extracts reviews from both Apple App Store and Google Play Store via package IDs, numeric app IDs, or direct store URLs.
- **Developer Contact Email Extraction:** Scrapes verified developer support emails and official websites for B2B outreach and lead generation.
- **Full Review Anatomy:** Extracts review title, body text, star rating (1–5), submission timestamp, author name, app version, and helpfulness vote count.
- **Developer Reply Tracking:** Captures official developer responses and reply timestamps to monitor competitor customer support speed and quality.
- **Sentiment & Star Rating Filtering:** Filter reviews by star ratings (e.g. only 1–2 stars for competitor pain-point discovery, or 4–5 stars for positive testimonials).
- **Zero Proxies & Zero Browser Needed:** Runs lightning-fast in pure Python with 100% datacenter IP compatibility and zero blocking.

***

### 📥 Input Parameters

| Field | Type | Default | Description |
|---|---|---|---|
| `appIdentifiers` | `array` | *WhatsApp, Spotify, Duolingo* | List of Google Play package IDs (`com.whatsapp`), Apple App Store IDs (`310633997`), or direct store URLs. |
| `maxReviewsPerApp` | `integer` | `50` | Maximum customer reviews to extract per application (5 to 500). |
| `country` | `string` | `"us"` | Two-letter country code for store localization (`us`, `gb`, `ca`, `de`, `fr`, `au`, etc.). |
| `sortBy` | `select` | `"most_recent"` | Sort order: `most_recent` or `most_relevant`. |
| `minRating` | `integer` | `1` | Minimum star rating (1 to 5). |
| `maxRating` | `integer` | `5` | Maximum star rating (1 to 5). Set to `2` to scrape only negative feedback. |
| `scrapeAppMetadata` | `boolean` | `true` | Enrich with developer support emails, websites, and total rating counts. |

***

### 📤 Output Data Format (JSON)

```json
{
  "platform": "Google Play",
  "app_id": "com.whatsapp",
  "app_name": "WhatsApp",
  "review_id": "0bb2619d-c5b1-4af1-b5ff-c663458481f6",
  "user_name": "Suresh Chandra",
  "rating": 5,
  "review_title": "good",
  "review_text": "Simple, reliable and great voice call quality even on low connectivity.",
  "review_date": "2026-10-27 15:46:18",
  "app_version": "2.26.40.76",
  "helpful_count": 0,
  "developer_reply_text": "",
  "developer_reply_date": "",
  "developer_name": "WhatsApp LLC",
  "developer_email": "android@support.whatsapp.com",
  "developer_website": "https://www.whatsapp.com",
  "app_average_rating": 4.3,
  "app_rating_count": 195000000,
  "app_category": "COMMUNICATION",
  "app_url": "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en&gl=us"
}
```

***

### 🎯 High-Value Use Cases

1. **Competitor Pain Point & Churn Mining:** Scrape 1-star and 2-star reviews of rival mobile apps to uncover bugs, missing features, and customer frustrations to exploit.
2. **AI Sentiment & Topic Modeling:** Feed thousands of customer reviews into LLMs (GPT-4o, Claude, Gemini) to automatically categorize bugs, feature requests, and UX bottlenecks.
3. **App Developer B2B Lead Generation:** Extract developer support emails and websites from thousands of top-ranking apps across Google Play and iOS App Store.
4. **App Store Optimization (ASO):** Benchmark version-by-version customer sentiment and track impact of major product updates.

***

### 💰 Pay-Per-Event (PPE) Pricing

- **Actor Start:** `$0.01`
- **Per Extracted Review:** `$0.002` (`$2.00` per 1,000 enriched reviews)
- **Proxy Cost:** `$0.00` (100% pure profit)

# Actor input Schema

## `appIdentifiers` (type: `array`):

Enter Google Play package IDs (e.g. 'com.spotify.music', 'com.whatsapp') or URLs ('https://play.google.com/store/apps/details?id=com.duolingo'), and/or Apple App Store IDs (e.g. '310633997', '324684580') or URLs ('https://apps.apple.com/us/app/duolingo-language-lessons/id570060128'). Dual-platform support is automatic.

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

Maximum number of customer reviews to scrape per application.

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

Two-letter country code for store localization (e.g. 'us', 'gb', 'ca', 'de', 'fr', 'au').

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

Sort order for extracted reviews.

## `minRating` (type: `integer`):

Filter reviews by minimum stars (set 1 to include all, or 4-5 to focus on positive feedback).

## `maxRating` (type: `integer`):

Filter reviews by maximum stars (set 5 to include all, or 1-2 to focus on customer complaints and pain points).

## `scrapeAppMetadata` (type: `boolean`):

Fetch overall app rating, install count, developer website, and developer support email for lead generation.

## Actor input object example

```json
{
  "appIdentifiers": [
    "com.whatsapp",
    "310633997",
    "https://play.google.com/store/apps/details?id=com.spotify.music",
    "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128"
  ],
  "maxReviewsPerApp": 50,
  "country": "us",
  "sortBy": "most_recent",
  "minRating": 1,
  "maxRating": 5,
  "scrapeAppMetadata": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing customer reviews, star ratings, review text, app versions, developer replies, app metadata, and developer contact emails.

# 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 = {
    "appIdentifiers": [
        "com.whatsapp",
        "310633997",
        "https://play.google.com/store/apps/details?id=com.spotify.music",
        "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("emancip/app-store-google-play-reviews-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 = { "appIdentifiers": [
        "com.whatsapp",
        "310633997",
        "https://play.google.com/store/apps/details?id=com.spotify.music",
        "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("emancip/app-store-google-play-reviews-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 '{
  "appIdentifiers": [
    "com.whatsapp",
    "310633997",
    "https://play.google.com/store/apps/details?id=com.spotify.music",
    "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128"
  ]
}' |
apify call emancip/app-store-google-play-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,emancip/app-store-google-play-reviews-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/U6KEIcunlw1wEo2gL/builds/xj8OaibbZ3fC4B1QY/openapi.json
