# Google Play Reviews Scraper (`clearrun/google-play-reviews`) Actor

Google Play reviews by Play Store URL or package id: rating, text, date, helpful votes, app version and developer replies, across any store country and language. Free app metadata (name, developer, average rating, rating count) on every record.

- **URL**: https://apify.com/clearrun/google-play-reviews.md
- **Developed by:** [Clearrun Data](https://apify.com/clearrun) (community)
- **Categories:** Business, Agents, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.40 / 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?

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

Get an app's public Google Play reviews as structured JSON. Give it a Play Store URL or a bare package id, and you
get every review with its star rating, text, date, app version, "helpful" votes and the developer's public reply
if there is one. Every record also carries the app's free metadata: name, developer, average rating and total
rating count. Works across any Play Store country and language, needs no browser, and runs from Apify's regular
datacenter proxies.

Built for app-store monitoring, competitor research, release-quality tracking and feeding review data to AI agents.
Only public review data is read; the only reviewer data collected is the display name shown on the review.

### What you get

```json
{
  "appId": "com.Slack",
  "appName": "Slack",
  "developer": "Slack Technologies, L.L.C.",
  "country": "us",
  "language": "en",
  "reviewId": "a5e0d3e5-ce5a-4cff-b940-1d19a5a0743f",
  "userName": "Jordan",
  "rating": 5,
  "text": "We use this daily across three teams. Threads and search work well.",
  "date": "2026-08-14T09:21:33.000Z",
  "thumbsUp": 3,
  "appVersion": "26.08.40.0",
  "replyText": null,
  "replyDate": null,
  "url": "https://play.google.com/store/apps/details?id=com.Slack&hl=en&gl=us",
  "appScore": 4.6,
  "appRatingCount": 214412,
  "scrapedAt": "2026-09-10T10:15:00.000Z"
}
```

| Field | Notes |
|---|---|
| `appId`, `url` | Google Play's package id and the app's public store URL |
| `reviewId` | Google Play's review id |
| `rating` | 1–5 (number) |
| `appVersion` | App version the review was written against, when Google reports it |
| `date` | ISO 8601 |
| `userName` | Public display name shown on the review; nothing else about the reviewer is collected |
| `thumbsUp` | "Helpful" votes on the review |
| `replyText`, `replyDate` | The developer's public reply, if any |
| `appScore`, `appRatingCount` | The app's overall rating in that store, repeated on every record |

A `STATS` record in the run's key-value store holds one summary per app: reviews delivered, errors, rating
distribution and average rating of the delivered reviews. An app that cannot be found in a given country produces
one record with an `error` field, which is not charged.

### Input

| Field | Default | Notes |
|---|---|---|
| `apps` | — | Play Store URLs or bare package ids, one per line |
| `countries` | `["us"]` | 2-letter Play Store codes, e.g. `us`, `gb`, `de` |
| `language` | `en` | 2-letter language code reviews and metadata are fetched in |
| `maxReviewsPerApp` | `200` | Cap per app, per country; up to `5000` |
| `sortBy` | `newest` | `newest`, `rating` or `helpfulness` |
| `proxyConfiguration` | Apify datacenter | Google Play's review endpoint works fine from datacenter IPs; residential is rarely needed |

```json
{ "apps": ["https://play.google.com/store/apps/details?id=com.Slack", "com.spotify.music"], "countries": ["us", "gb"], "maxReviewsPerApp": 300, "sortBy": "helpfulness" }
```

### Pricing

Pay per review delivered. The app metadata on each record and in `STATS` is free, duplicates within a run are never
charged, and an app that isn't found in a given country costs nothing.

#### Speed & cost

This is a plain HTTP actor (no browser), so it runs in roughly 30–60 seconds per 100 reviews. A 100-review run
costs about $0.04 in `review` events (at $0.0004/review) plus roughly $0.01–0.05 of Apify platform usage for the
run itself.

### Typical uses

- Tracking user sentiment across app releases and versions
- Competitor and category monitoring across Play Store countries
- Mining low-rated reviews for bugs and support issues
- Giving an AI agent live customer feedback about an app

### Use from an AI agent

Available through the Apify MCP server: "Get the most helpful Google Play reviews for Slack and summarise the
complaints."

API call:

```bash
curl -X POST "https://api.apify.com/v2/acts/clearrun~google-play-reviews/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apps": ["https://play.google.com/store/apps/details?id=com.Slack"], "maxReviewsPerApp": 100, "sortBy": "helpfulness"}'
```

### Support

Open an issue on the Issues tab with the app, the input you used and the run ID. Issues are answered within one working day.

# Actor input Schema

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

One app per line: a Play Store URL (https://play.google.com/store/apps/details?id=com.Slack) or a bare package id.

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

2-letter Play Store codes, e.g. us, gb, de.

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

2-letter language code reviews and app metadata are fetched in.

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

Stop after this many reviews per app in each country.

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

Order Google Play returns reviews in.

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

Google Play's review endpoint works fine from Apify's datacenter proxies; residential is rarely needed.

## Actor input object example

```json
{
  "apps": [
    "https://play.google.com/store/apps/details?id=com.Slack"
  ],
  "countries": [
    "us"
  ],
  "language": "en",
  "maxReviewsPerApp": 200,
  "sortBy": "newest",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One record per Google Play review with the app's free metadata repeated on every record

## `stats` (type: `string`):

Per app: reviews delivered, errors, rating distribution and average rating of the delivered reviews

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

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearrun/google-play-reviews"
        }
    }
}

```

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/rfGL31AFR7eCbBn7x/builds/YmJsuczH3mUZTKuLq/openapi.json
