# Google Play Reviews Scraper – GDPR-friendly (`stevenkramp/google-play-reviews-scraper`) Actor

Scrape Google Play app reviews at scale: rating, text, date, app version, thumbs-up and developer replies – without reviewer names or profile pictures. Filter by stars, sort by newest, any language. $0.25 per 1,000 reviews.

- **URL**: https://apify.com/stevenkramp/google-play-reviews-scraper.md
- **Developed by:** [Steven Kramp](https://apify.com/stevenkramp) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / 1,000 reviews

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 Reviews Scraper – GDPR-friendly

Scrape **Google Play app reviews** at scale, for your own apps or your competitors'. The Actor returns everything you need for sentiment analysis, product research and support monitoring. It does **not** return reviewer names or profile pictures, so you can process the data without collecting personal data.

**$0.25 per 1,000 reviews.** You only pay for reviews returned.

### What you get for each review

| Field | Example |
|---|---|
| `appId` | com.spotify.music |
| `reviewId` | 5f863143-e046-4008-… |
| `score` | 4 (1–5 stars) |
| `text` | "Works well, but the navigation could be clearer…" |
| `date` | 2026-10-01T09:09:03+00:00 |
| `appVersion` | 9.1.86.2432 |
| `thumbsUp` | 12 (how many users found it helpful) |
| `replyText`, `replyDate` | the developer's public reply, if any |
| `language`, `country`, `scrapedAt` | run context |

**Not included on purpose:** reviewer name, avatar and profile link. This makes the data safer to store and share inside EU companies (GDPR data minimisation).

### Use cases

- **Sentiment and feature analysis:** feed thousands of reviews into your LLM or BI tool.
- **Competitor research:** find what users hate about competing apps, e.g. filter by 1-star reviews.
- **Release monitoring:** sort by newest and schedule daily runs to catch problems after an update, using the `appVersion` field.
- **Support quality:** see which reviews got a developer reply.

### How to use

1. Add one or more **app IDs or Play Store URLs**.
2. Set **max reviews per app** (up to 50,000), **sort** (newest, most relevant, rating) and optionally a **star filter**.
3. Choose the **language** (`en`, `de`, `fr` …) and **country**. Google returns reviews mainly in that language.

```json
{
  "apps": ["com.spotify.music", "com.whatsapp"],
  "maxReviewsPerApp": 2000,
  "sort": "newest",
  "stars": "1",
  "language": "en",
  "country": "us"
}
```

### Pricing

Pay per event: **$0.00025 per review** ($0.25 per 1,000 reviews), plus Apify's tiny actor-start fee. Platform usage is included.

### Use with AI agents (MCP)

This Actor works as a tool for AI assistants and agents – Claude, ChatGPT, Cursor, VS Code, n8n and other MCP clients – through Apify's hosted MCP server. Add this server URL to your client:

```
https://mcp.apify.com?tools=stevenkramp/google-play-reviews-scraper
```

Sign in with your Apify account when asked. Your agent can then call the Actor in plain language, for example: *"Fetch the newest 200 reviews of com.spotify.music and summarize the main complaints."* – and gets clean, structured JSON back. Runs started by your agent are normal Actor runs on your Apify account at the same pay-per-event price.

### FAQ

**How fast is it?** About 200 reviews per request, so typically several thousand reviews per minute.

**Why don't I get exactly the number I asked for?** Some apps simply have fewer reviews in the selected language or star rating.

**Do you have app details too?** Yes, see our [Google Play Store Scraper](https://apify.com/stevenkramp/google-play-store-scraper) for ratings, installs, prices and search rankings.

# Actor input Schema

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

Package names like com.spotify.music or full Play Store URLs.

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

Stop after this many reviews per app (up to 50,000). You only pay for reviews returned.

## `sort` (type: `string`):

Order in which Google Play returns reviews.

## `stars` (type: `string`):

E.g. only 1-star reviews to find complaints.

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

Two-letter language code, e.g. en, de, fr, es. Google returns reviews mainly in this language.

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

Two-letter country code, e.g. us, gb, de.

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

Apify Proxy is used by default. Usually no change needed.

## Actor input object example

```json
{
  "apps": [
    "com.spotify.music"
  ],
  "maxReviewsPerApp": 500,
  "sort": "newest",
  "stars": "",
  "language": "en",
  "country": "us",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One item per review.

## `overview` (type: `string`):

Key fields as a table.

# 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.spotify.music"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("stevenkramp/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.spotify.music"] }

# Run the Actor and wait for it to finish
run = client.actor("stevenkramp/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 '{
  "apps": [
    "com.spotify.music"
  ]
}' |
apify call stevenkramp/google-play-reviews-scraper --silent --output-dataset

```

## MCP server setup

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