# Google Play Reviews Scraper — Android App Reviews (`darknezz/google-play-reviews-scraper`) Actor

Scrape customer reviews for any Android app from Google Play. Multiple apps, countries and languages, sorted by newest, rating or relevance. Clean JSON with rating, text, votes, version and developer replies — perfect for ASO, competitor research and sentiment analysis.

- **URL**: https://apify.com/darknezz/google-play-reviews-scraper.md
- **Developed by:** [Oaida Adrian](https://apify.com/darknezz) (community)
- **Categories:** Marketing, E-commerce, AI
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 review scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Play Reviews Scraper — Android App Reviews

Scrape customer reviews for **any Android app** on the Google Play Store — across countries and languages, sorted by newest, rating, or relevance. You get one clean JSON item per review, including developer replies and the app version each review refers to. No account, no Play Console access, no API key.

### Why this Actor

Google's official Play Developer API only returns reviews for apps **you own**, capped at the last 7 days. This Actor reads the public storefront, so you can pull the full public review history for **any app** — yours or a competitor's — in any market Google serves. Point it at a package name or a Play Store URL and it walks the pagination tokens until it hits your limit.

### What you get per review

- Star rating (1–5) and full review text
- Reviewer name, review date, thumbs-up count
- App version the review refers to
- Developer reply text and date (when present)
- App metadata: name, developer, overall rating, install count

### Who is this for?

- **ASO & product teams** — track how a release lands, catch bug-report spikes the day they start
- **Competitor research** — mine competitors' 1-star reviews for feature gaps and churn drivers
- **Sentiment analysis / AI** — clean, rating-labeled text for training data and dashboards
- **Support & QA** — route recurring complaints (crashes, billing, login) into your tracker
- **Agencies** — automated review monitoring across a portfolio of client apps

Need iOS coverage too? Use the companion [App Store Reviews Scraper](https://apify.com/darknezz/app-store-reviews-scraper) — same output shape, both platforms in one pipeline.

### How it works

1. Give it package names (`com.whatsapp`) or full Play Store URLs — mixed is fine.
2. Pick your markets (`countries`) and review `language`.
3. Choose a sort order and a per-app cap.

The scraper fetches each app's public listing, then follows Google's review continuation tokens page by page. Reviews stream to the dataset as they are found, so partial runs still produce usable output.

### Input

```json
{
  "apps": ["com.whatsapp", "https://play.google.com/store/apps/details?id=com.spotify.music"],
  "countries": ["us", "gb"],
  "language": "en",
  "sortBy": "newest",
  "maxReviewsPerApp": 200
}
```

| Field | Description |
|-------|-------------|
| `apps` | Package names or full Play Store URLs (required) |
| `countries` | Store country codes — `us`, `gb`, `de`, `ro`… (default `["us"]`) |
| `language` | Review language code (default `en`) |
| `sortBy` | `newest`, `rating`, or `mostRelevant` (default `newest`) |
| `maxReviewsPerApp` | Cap per app **per country** (default 100, max 100000) |

### Output (one item per review)

```json
{
  "appId": "com.whatsapp",
  "appName": "WhatsApp Messenger",
  "developer": "WhatsApp LLC",
  "country": "us",
  "rating": 1,
  "content": "After the update the app keeps crashing on startup...",
  "author": "Jane D",
  "thumbsUp": 41,
  "appVersion": "2.26.13.75",
  "createdAt": "2026-07-08T14:22:31",
  "replyContent": "Hi, please update to the latest version...",
  "repliedAt": "2026-07-09T09:02:11"
}
```

Export straight to JSON, CSV, or Excel from the dataset, or pull it via the API.

### Run on a schedule / via API

Monitor an app daily and push new reviews wherever you need them:

```bash
curl -X POST "https://api.apify.com/v2/acts/darknezz~google-play-reviews-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apps":["com.spotify.music"],"countries":["us"],"sortBy":"newest","maxReviewsPerApp":100}'
```

Attach a **Schedule** in the Apify console to run it every morning; combine with a webhook to alert on rating drops.

### Pricing

Pay per event: a small fee **per review scraped**. No subscription — scrape 100 reviews or 100,000, pay only for what you pull.

### FAQ

**How many reviews can I get?** Unlike the iOS feed, Google Play pagination is effectively unlimited — the scraper walks continuation tokens until it hits your `maxReviewsPerApp`.

**Does it include developer replies?** Yes — `replyContent` and `repliedAt` are populated whenever the developer responded.

**Can I scrape several countries at once?** Yes. Each entry in `countries` is scraped independently, so `maxReviewsPerApp` applies per app **per country**.

**Do I need a Google account or API key?** No. It reads the public storefront — no login, no Play Console, no key.

**How fresh are the reviews?** Sort by `newest` and the most recent reviews come first, so a scheduled daily run captures everything posted since the last run.

# Actor input Schema

## `apps` (type: `array`):

Android package names (e.g. com.whatsapp) or full Play Store URLs.

## `countries` (type: `array`):

Play Store country codes (e.g. us, gb, de, ro).

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

Review language code (e.g. en, de, ro).

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

Review sort order.

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

Maximum reviews to scrape per app per country.

## Actor input object example

```json
{
  "apps": [
    "com.whatsapp"
  ],
  "countries": [
    "us"
  ],
  "language": "en",
  "sortBy": "newest",
  "maxReviewsPerApp": 100
}
```

# Actor output Schema

## `results` (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 = {
    "apps": [
        "com.whatsapp"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("darknezz/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 = { "apps": ["com.whatsapp"] }

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

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

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

```

## CLI example

```bash
echo '{
  "apps": [
    "com.whatsapp"
  ]
}' |
apify call darknezz/google-play-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=darknezz/google-play-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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