# Google Play Reviews Scraper — No API Key (`jamhimself/google-play-reviews-scraper`) Actor

Scrape Google Play app reviews in bulk — rating, text, author, date, thumbs-up, app version, developer reply. No API key, no login. Pay per result.

- **URL**: https://apify.com/jamhimself/google-play-reviews-scraper.md
- **Developed by:** [Jaime Martinez](https://apify.com/jamhimself) (community)
- **Categories:** Developer tools, Agents, AI
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 product 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/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 — No API Key

Scrape and export **Google Play app reviews** in bulk — star rating, review text, author name, date, thumbs-up count, app version, and the developer's reply — as clean structured JSON or CSV. No API key, no login. Point it at any app by package name (`com.spotify.music`) or Play Store URL and pay per result. Built for ASO teams, product managers, and developers who need public review data for **any** app, not just their own.

Google's official Play Developer API only returns reviews for apps **you own**. This Actor pulls public reviews for any app on the store.

Requests use got-scraping's browser-like TLS and header fingerprinting over rotating Apify datacenter proxy IPs, with automatic retries, so review pagination keeps flowing at volume.

### ⚡ Quick start

Paste this into the Actor's **Input** (JSON view) and hit **Start**:

```json
{
  "appId": "com.instagram.android",
  "maxReviews": 100
}
```

Each result row looks like:

```json
{
  "reviewId": "8c3f2a1e-5b7d-4e29-9f04-1d6c8a53b7e2",
  "author": "Daniel Okafor",
  "score": 4,
  "text": "Reels load fast now, but I wish the app had a proper dark mode schedule.",
  "thumbsUp": 37,
  "date": "2026-06-30T09:14:22.000Z",
  "appVersion": "389.0.0.49.81",
  "replyText": null
}
```

Or run it from the API:

```
POST https://api.apify.com/v2/acts/jamhimself~google-play-reviews-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN
```

### What you get

One row per review:

| Field | Type | Description |
|-------|------|-------------|
| `reviewId` | string | Unique review identifier |
| `author` | string | Reviewer's display name |
| `score` | number | Star rating, 1–5 |
| `text` | string | Full review text |
| `thumbsUp` | number | How many users found the review helpful |
| `date` | string | Review date, ISO 8601 timestamp |
| `appVersion` | string | App version the review was left on (when available) |
| `replyText` | string | The developer's reply, if any |
| `avatar` | string | URL of the reviewer's avatar image |

### Use cases

- **ASO & review sentiment** — track star ratings, recurring complaints, and feature requests over time to guide app store optimization.
- **Competitor monitoring** — mine rival apps' reviews for bugs, churn triggers, and feature gaps you can win on.
- **Product feedback at scale** — surface crash reports, UX friction, and requests straight from real users.
- **Market & UX research** — quantify sentiment across categories and geographies with `language` and `country` targeting.
- **LLM / RAG feed** — pipe structured review text into summarization, classification, and topic-modeling pipelines.
- **Dataset building** — assemble labeled review corpora (rating + text) for sentiment training and NLP.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `appId` | string | **Required.** Package name (e.g. `com.spotify.music`) or a Google Play app URL. |
| `maxReviews` | integer | Max reviews to return. Default `200`, max `20000`. |
| `sort` | string | `newest`, `rating`, or `relevance`. Default `newest`. |
| `language` | string | ISO 639-1 language code, e.g. `en`. Default `en`. |
| `country` | string | ISO 3166-1 country code, e.g. `US`. Default `US`. |
| `proxyConfiguration` | object | Proxy settings. Apify Proxy (datacenter) is recommended and enough. |

### Pricing

Pay per review delivered. No subscription.

If the Actor works well for you, a quick review on the Apify Store is genuinely appreciated — it helps others find it.

### Notes

- Reviews come from Google Play's public web endpoint; `language` and `country` change which reviews are returned.
- Google adjusts its internal response format periodically; this Actor is actively maintained.

# Actor input Schema

## `appId` (type: `string`):

The app's package name (e.g. "com.spotify.music") or its Google Play URL.

## `maxReviews` (type: `integer`):

Maximum number of reviews to return.

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

Order to fetch reviews in.

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

Language code (ISO 639-1), e.g. "en".

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

Country code (ISO 3166-1), e.g. "US".

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

Proxy settings. Apify Proxy (datacenter) is enough and recommended for IP rotation.

## Actor input object example

```json
{
  "appId": "com.spotify.music",
  "maxReviews": 200,
  "sort": "newest",
  "language": "en",
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per review: author, rating, text, thumbs-up, date, app version, and reply.

# 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 = {
    "appId": "com.spotify.music",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jamhimself/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 = {
    "appId": "com.spotify.music",
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/XOSFC1RbMTq9jj75v/builds/jZw4erKebIY0eIJc6/openapi.json
