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

Scrape Google Play app reviews by package name or store URL. Extract user name, score, review text, date, thumbs-up count, app version, and developer reply. Sort by newest or rating, filter by star, paginate to thousands per app. Pay per result.

- **URL**: https://apify.com/jdtpnjtp/google-play-reviews-scraper.md
- **Developed by:** [Data Forge](https://apify.com/jdtpnjtp) (community)
- **Categories:** SEO tools, Developer tools, Integrations
- **Stats:** 8 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.11 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

**Scrape Google Play app reviews from $0.10 / 1,000 results, and pull 50,000+ reviews in one run.** Get user name, star score, review text, date, thumbs-up count, app version and developer reply as clean rows ready for CSV, Excel, JSON or the API. No HTML parsing, no maintenance - you pay only per review returned.

***

### Why this Actor?

| Capability | Data Forge - Google Play Reviews | Typical alternatives |
|---|---|---|
| Review freshness | **Minutes-fresh, same-day timestamps** | Stale cached snapshots |
| Star-score filter | **1 to 5 star targeting** | Rarely offered |
| Sort modes | **3 modes (newest, rating, relevance)** | Newest only |
| Localization | **Country + language (German reviews from the German market)** | US / English only |
| Fields per row | **Text + score + date + app version + developer reply** | Text + score only |
| Billing | **Pay per review returned ($0.10 / 1,000)** | Monthly subscription |

Data Forge pulls the live review feed on each run, so a `newest` sort surfaces reviews posted within hours - not a weeks-old cache. Set the 2-letter country and language codes and you read the market you care about: `de` + `de` returns German reviews from the German market, not a US / English mirror.

### What does the Google Play Reviews Scraper do?

The Google Play Reviews Scraper turns any Android app on the Google Play Store into a structured review dataset. Feed it one or more apps - by name (`Spotify`), package (`com.spotify.music`) or Play Store URL - and it returns each review as a flat row: who wrote it, the star score, the written review text, the date, how many users found it helpful, the app version reviewed and the developer's reply. Sort by newest, rating or relevance, narrow to a single star rating from 1 to 5, and set **Max reviews per app** to any depth - 100, 10,000 or up to 1,000,000 - and the Actor auto-paginates until it reaches your number. This is the fast, low-cost way to pull Google Play reviews at scale without touching a browser.

### What data can you get from a Google Play review?

Each review row carries the fields buyers ask for:

- 👤 **User name** - the reviewer's display name
- ⭐ **Score** - star rating from 1 to 5
- 📝 **Review text** - the written review content
- 📅 **Date** - when the review was posted (ISO 8601)
- 👍 **Thumbs-up count** - how many users marked it helpful
- 💬 **Developer reply** - the developer's response text and reply date
- 🔢 **App version** - the build the user reviewed
- 🆔 **Review ID** - a stable identifier for deduping
- 🖼 **Avatar** - the reviewer's profile image URL

The full raw review object is also attached under `data`, so you can access the untouched payload too.

### How to scrape Google Play reviews

1. Open the Google Play Reviews Scraper and click **Try for free**. The input form is prefilled with a working example app, so a first run returns real reviews with zero setup.
2. In **Apps**, paste one or more package names (`com.spotify.music`), Play Store URLs, or plain app names (`Spotify`). Mix freely.
3. Pick a **Sort** order - newest, rating or most relevant - and optionally set a **Star filter** to pull only 1 to 5 star reviews.
4. Set **Max reviews per app** to control depth and cost, then choose **Country** and **Language** for localized reviews.
5. Click **Start**, then export the results to CSV, Excel, JSON or the API.

#### Input example

```json
{
  "appIds": ["Spotify", "com.whatsapp", "https://play.google.com/store/apps/details?id=com.instagram.android"],
  "sort": "newest",
  "filterScore": 5,
  "maxReviewsPerApp": 2000,
  "country": "us",
  "lang": "en"
}
```

#### Output example

```json
{
  "query": "com.spotify.music",
  "row_type": "review",
  "review_id": "8c4e1f2a9b...",
  "user_name": "Jordan M.",
  "score": 5,
  "content": "Best music app I have used. The offline mode works great on my commute.",
  "at": "2026-06-09T14:32:11Z",
  "thumbs_up_count": 128,
  "reply_content": "Thanks for the kind words! Glad offline mode is working for you.",
  "replied_at": "2026-06-10T09:15:00Z",
  "app_version": "8.9.74.123",
  "user_image": "https://play-lh.googleusercontent.com/a/...",
  "data": { "...": "complete review object" }
}
```

Each run also writes a summary record to the `OUTPUT` key with the review count, error count and estimated cost. Error rows carry an `error_code` and are free - you pay only for real reviews.

### Input modes

Five ready-made recipes cover the jobs buyers run most. Each one maps 1:1 to a saved example task on this Actor's page - pick one, press **Start**, and adjust `maxReviewsPerApp` to taste. Each example uses `com.spotify.music`, so swap in your own package name, Play URL or app name.

#### 1. Build a sentiment dataset

For the data scientist who wants a broad, balanced 200-review sample to train or benchmark a sentiment model.

```json
{"appIds": ["com.spotify.music"], "maxReviewsPerApp": 200}
```

#### 2. Mine 1-star bug reports

For the QA or product team hunting the crash reports, freezes and feature gaps hidden in 1-star reviews.

```json
{"appIds": ["com.spotify.music"], "filterScore": "1", "maxReviewsPerApp": 200}
```

#### 3. Monitor newest reviews first

For the release manager who needs the freshest reviews at the top the moment a new app version ships.

```json
{"appIds": ["com.spotify.music"], "sort": "newest", "maxReviewsPerApp": 200}
```

#### 4. Read a localized German market

For the localization or regional growth team reading German reviews from the German (`de`) market, not a US mirror.

```json
{"appIds": ["com.spotify.music"], "country": "de", "lang": "de", "maxReviewsPerApp": 200}
```

#### 5. Pull 5-star social proof

For the marketing team collecting glowing 5-star quotes for landing pages, ads and testimonials.

```json
{"appIds": ["com.spotify.music"], "filterScore": "5", "maxReviewsPerApp": 200}
```

### How much does it cost to scrape Google Play reviews?

Reviews are billed at **$0.10 per 1,000 results** ($0.0001 each). The math is simple:

- **$5** in free Apify trial credits = roughly **50,000 reviews** ($5 / $0.0001)
- **1,000 reviews** = **$0.10**
- **50,000 reviews** = **$5.00**
- **100,000 reviews** = **$10.00**

You are charged only for review rows actually returned. Errors and empty results cost nothing, so a misconfigured run never burns your budget. Live per-event pricing is shown on this actor's Apify Store page.

### What can you use Google Play reviews for?

- **Sentiment analysis** - track how users feel about an app release over time.
- **Product feedback mining** - surface bugs, feature requests and pain points at scale.
- **Competitor CX intelligence** - read how rival apps handle complaints in their developer replies.
- **App Store Optimization (ASO)** - find the keywords and phrases real users repeat in reviews.
- **Release monitoring** - watch scores and themes shift right after each app version ships.
- **Support automation** - feed reviews into an LLM to auto-tag issues and route them to teams.
- **Churn research** - read 1 and 2 star reviews to learn why users uninstall.
- **Market research** - benchmark ratings and review volume across a category of apps.
- **Brand monitoring** - get a heads-up when negative reviews spike on your app.

### Is it legal to scrape Google Play?

Scraping publicly available data, including public app reviews on Google Play, is broadly legal in the US and EU and has been upheld in cases such as hiQ v. LinkedIn. This actor collects only public review data that any visitor can see, never private accounts or hidden content. You are responsible for using the output in line with Google's terms, GDPR/CCPA and your local laws - for compliance-sensitive projects, consult your legal team.

### FAQ

**Is it legal to scrape Google Play reviews?**
Yes for public data. Public app reviews are visible to any visitor, and scraping public pages has been upheld in cases such as hiQ v. LinkedIn. This Actor never touches private accounts or hidden content. You stay responsible for using the output in line with Google's terms, GDPR/CCPA and your local laws.

**How fresh are the reviews?**
Data Forge pulls the review feed live on each run - there is no shared cache. Under the `newest` sort, reviews posted the same day appear at the top. In a verified sample run on 2026-06-18, the WhatsApp feed returned reviews stamped 2026-06-17, so you read reactions within hours of them being written.

**How does country and language localization work?**
Set **Country** and **Language** to 2-letter codes (default `us` + `en`). Google serves each store front differently, so `country: "de"` with `lang: "de"` returns German reviews from the German market, while `jp` + `ja` returns the Japanese market. Localization changes both the reviews you get and their language.

**Can I schedule this to monitor release health?**
Yes. Each Apify actor ships a scheduler, webhooks and an MCP server. A common setup is a daily run on the `newest` sort for your app: pipe the output to a sheet or an LLM and watch the star average and complaint themes move after each version ships. You pay per review each run, so a lightweight 200-review health check costs about $0.02.

**How many reviews can I pull per app?**
As many as the app has. Set **Max reviews per app** to 100, 10,000 or up to 1,000,000 - the Actor keeps pulling the review feed until it reaches your number or runs out of reviews, and you pay only per review returned.

**Can I filter by star rating and sort?**
Yes. Set the **Star filter** to keep only 1, 2, 3, 4 or 5 star reviews, and pick one of 3 **Sort** modes - newest, rating or most relevant.

**Can I call this from the API or an integration?**
Yes. Each Apify actor ships a REST API, scheduler, webhooks and an MCP server, so you can run the Google Play Reviews Scraper from your own code, Make, Zapier or an AI agent.

**Do I pay for failed runs?**
No. Error and empty rows are free - you are billed only for real review results.

### Related actors

Part of the **Data Forge** Google Play suite:

- **[Google Play Apps Scraper](https://apify.com/jdtpnjtp/google-play-apps-scraper)** - pull rich app metadata: title, developer, installs, rating, price, screenshots and description.
- **[Google Play Scraper](https://apify.com/jdtpnjtp/google-play-scraper)** - the umbrella actor for app search, app details and reviews in one place.
- **[Amazon Reviews Scraper](https://apify.com/jdtpnjtp/amazon-reviews)** - deep review sampling for Amazon products by ASIN or product URL, with star score, date and verified-purchase flags.

Need Walmart, TripAdvisor, Booking or Google Maps data too? The broader Data Forge fleet covers those.

### Support

I personally support customers directly - reach out on any channel.

[![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge\&logo=telegram\&logoColor=white)](https://t.me/j4dtpnj2tp)
[![WhatsApp](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge\&logo=whatsapp\&logoColor=white)](https://wa.me/380686031542)
[![Email](https://img.shields.io/badge/Email-D14836?style=for-the-badge\&logo=gmail\&logoColor=white)](mailto:jdtpnjtp@gmail.com)

# Actor input Schema

## `appIds` (type: `array`):

Apps to pull reviews for - package name (com.whatsapp), Play URL, or just the app name (WhatsApp).

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

How deep to go per app - from a quick 100 up to a 100,000-review deep dive. The Actor pulls reviews until it reaches this number or the app runs out. Each review is one paid result.

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

Order reviews are pulled in (newest, by rating, or most relevant).

## `filterScore` (type: `string`):

Keep only reviews with this star rating (1-5). Leave blank for all.

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

2-letter country code.

## `lang` (type: `string`):

2-letter language code.

## Actor input object example

```json
{
  "appIds": [
    "WhatsApp"
  ],
  "maxReviewsPerApp": 100,
  "sort": "newest",
  "filterScore": "",
  "country": "us",
  "lang": "en"
}
```

# Actor output Schema

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

Default dataset; one flat row per review, full payload under data.

## `summary` (type: `string`):

OUTPUT key: reviews, apps, errors, total\_rows, estimated\_cost\_usd, limit\_reached, actor\_version.

# 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 = {
    "appIds": [
        "WhatsApp"
    ],
    "maxReviewsPerApp": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("jdtpnjtp/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 = {
    "appIds": ["WhatsApp"],
    "maxReviewsPerApp": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("jdtpnjtp/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 '{
  "appIds": [
    "WhatsApp"
  ],
  "maxReviewsPerApp": 100
}' |
apify call jdtpnjtp/google-play-reviews-scraper --silent --output-dataset

```

## MCP server setup

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