# Google Play Scraper & API - App Data, Ratings & Reviews (`surefeed/google-play-scraper`) Actor

Scrape Google Play apps and reviews: rating, installs, star histogram, developer, version, plus reviews with stars, text, date, app version and developer replies. Search by keyword, filter by stars or words. Privacy-safe, verified.

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

## Pricing

from $0.10 / 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?

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 Scraper & API - App Data, Ratings & Reviews

Get **Google Play app data and reviews** for any app, country and language: rating, number of ratings, 1–5 star histogram, installs, developer, latest update — and reviews with stars, text, date, app version and developer replies, as a spreadsheet, JSON or a live API.

> ⭐ **Found this Actor useful?** [Leave a review](https://apify.com/surefeed/google-play-scraper/reviews) — it takes 30 seconds and helps other people find it.
>
> 🛠️ **Something not working?** [Open an issue](https://apify.com/surefeed/google-play-scraper/issues) with the run link and we'll fix it within 24–48 hours.

**What you get**

- ⭐ **App data**: rating, ratings and reviews count, **1–5 star histogram**, installs, price and in-app purchases, ads, developer and website, category, content rating, release and last update date, what's new, icon and screenshots
- 💬 **Reviews**: stars, full text, date, **app version**, helpful votes, **developer reply** and its date — newest, most relevant or by rating
- 🎯 **Only the reviews you need**: filter by stars (e.g. only 1–2★ complaints), by **words in the text** ("crash", "login"), by **app version** and by date — "reviews since yesterday" for daily monitoring stops as soon as it reaches older ones
- 🔎 **Find apps by keyword** ("photo editor", "budget tracker") and get the top results' data and reviews in the same run
- 🔒 **Privacy-safe by default**: no reviewer names or photos unless you ask for names

**Quick start:** click **Start** without changing anything to get WhatsApp's app data and its 100 newest reviews (about $0.02). Then add your own apps, by package name or Google Play link. No login or Google account needed — you pay only per result.

Real results — Spotify, Google Play Italy, most relevant reviews (October 2026):

| Stars | Date | Helpful votes | Review (start) |
|---|---|---|---|
| 2 | 2025-03-19 | 1,402 | "Per quanto riguarda la parte dell'ascolto, non ho nessun problema, per quello 5 stelle. Ma…" |
| 1 | 2025-04-12 | 4,589 | "Capisco la necessità della pubblicità, per dare l'opportunità a tutti di ascoltare musica…" |
| 1 | 2025-03-30 | 665 | "Congratulazioni, siete riusciti a rovinare l'app più utile e forse più bella che c'era…" |

#### Why this Google Play scraper?

| Typical scrapers | This Actor |
|---|---|
| Frequent failed runs, unverified data | **Verified accuracy**: we compared the output with the Google Play page by hand — **20 of 21 values identical** (app data, review stars, dates and texts); the only difference was a helpful-vote count that changed between the two checks |
| Reviews only, or app data only | **Both in one run**, linked by app |
| Reviewer names and photos in every row | **No personal data by default** — names only if you turn them on |
| Re-download thousands of reviews every day | **Reviews since** a date: daily runs return only new reviews and stop early |
| You need to know the package name | Package names, Play links **or keywords** (top results in store order — checked against the store: same first 10) |
| All reviews, then filter yourself | Filter at the source by stars, **words in the text**, **app version** and date — you pay only for what you keep |
| Bad app IDs make the run fail | An app that doesn't exist in that country is reported clearly and the run still succeeds |

#### Use cases

- **AI agents**: "what do users complain about in this app's latest version?" — reviews with version and date, ready to summarise.
- **App teams and product managers**: get every new review mentioning "crash" or "login" for the latest version, every morning.
- **Competitor research**: compare ratings, star histograms, installs and update frequency across apps and countries.
- **Market research and ASO**: collect reviews by country and language for sentiment and keyword analysis.

#### How to use

1. Enter **Apps** (one per line): `com.whatsapp` or `https://play.google.com/store/apps/details?id=com.whatsapp` — or keywords in **Or search apps by keyword**.
2. Set **Max reviews per app** (0 = only app data) and the **Review order**.
3. Optional filters: **Only these star ratings** (e.g. `[1, 2]`), **Only reviews mentioning**, **Only these app versions** and **Reviews since**.
4. Choose the store **Country** and **Language**, then click **Start**.

#### Input

```json
{
    "apps": ["com.spotify.music", "com.duolingo"],
    "searchTerms": ["budget tracker"],
    "resultsPerSearch": 3,
    "maxReviews": 500,
    "sortReviews": "newest",
    "starRatings": [1, 2],
    "reviewKeywords": ["crash", "login"],
    "reviewsSince": "2026-10-01",
    "country": "us",
    "language": "en"
}
```

#### Output

One item per app and one per review (real examples, shortened):

```json
{
    "type": "app",
    "appId": "com.whatsapp",
    "title": "WhatsApp Messenger",
    "rating": 4.617587,
    "ratingCount": 245318833,
    "reviewCount": 1951914,
    "ratingHistogram": { "1": 10910198, "2": 3460637, "3": 8926182, "4": 21915944, "5": 200084229 },
    "installs": "10,000,000,000+",
    "developer": "WhatsApp LLC",
    "category": "Communication",
    "containsAds": false,
    "inAppPurchases": "$0.40 - $199.99 per item",
    "released": "2010-10-18",
    "updated": "2026-10-03",
    "url": "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en&gl=us"
}
```

```json
{
    "type": "review",
    "appId": "com.whatsapp",
    "appTitle": "WhatsApp Messenger",
    "reviewId": "614370bf-e18b-4d06-bcce-4e53711b913e",
    "rating": 1,
    "text": "Good",
    "date": "2026-10-07T14:38:35.000Z",
    "appVersion": "2.26.38.73",
    "thumbsUp": 0,
    "developerReply": null,
    "developerReplyDate": null,
    "country": "us",
    "language": "en"
}
```

| Field | Meaning |
|---|---|
| `type` | `app` or `review` |
| `rating` | App: average rating (0–5). Review: the reviewer's stars (1–5) |
| `ratingCount` | Number of star ratings; `reviewCount` = ratings with a written review |
| `ratingHistogram` | Number of ratings with 1, 2, 3, 4 and 5 stars (all devices) |
| `appVersion` | App version the reviewer was using (when Google Play shows it) |
| `thumbsUp` | "Helpful" votes the review received |
| `developerReply` | The developer's public answer, with `developerReplyDate` |

#### How much does it cost?

**Pay per event** — no monthly rental, no start fee, no proxy or compute surcharge:

- **Review** — each review returned: **$0.15 per 1,000**.
- **App** — each app's data: **$1.50 per 1,000** apps.

Example: 10,000 reviews of 5 apps ≈ $1.51. Set **Max cost per run** for a hard cap on spending.

#### Automate & integrate

Schedule a daily run with **Reviews since** = yesterday to get only new reviews, trigger webhooks, or send results to Google Sheets, Slack, Make, Zapier or n8n. Call it from any language through the Apify API.

#### Use with AI assistants (MCP)

Add this Actor as a tool to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server (`https://mcp.apify.com`). Your assistant can then read and summarise app reviews on demand.

#### Agent-ready: autonomous payments (x402 & Skyfire)

AI agents can discover, run and pay for this Actor on their own — no Apify account or API key needed — using x402 (USDC on Base) or Skyfire.

#### FAQ

**How accurate is the data?**
We compared the output with the Google Play page in a browser (Spotify, Italy, October 2026): title, developer, rating, number of ratings, installs, content rating, ads, in-app purchases, last update, and the stars, dates and texts of the reviews shown on the page were identical; one helpful-vote count differed by one vote because someone voted between the two checks.

**Why is the star histogram different from the one on the app page?**
The app page shows the ratings from phones by default; the Actor returns the histogram of all devices, which adds up to the total number of ratings at the top of the page (give or take a few dozen out of millions, as Google updates the two counters separately).

**Why aren't per-feature ratings included?**
Some reviews carry Google's per-feature survey answers (e.g. about ads or offline play), but they come as internal codes whose meaning Google doesn't publish. We only return data we can verify, so they are left out.

**Can I get reviewer names?**
Turn on **Include reviewer names** only if you have a lawful reason to process them: names are personal data under GDPR and similar laws. Photos are never collected.

**Why do I get fewer reviews than I asked for?**
The app may have fewer reviews in that language and country, your filters (stars, words, version, date) removed some, or **Max cost per run** was reached. The status message tells you how many were returned.

**Is it legal to scrape Google Play?**
This Actor only collects publicly available data. Check Google's terms and your local laws (including GDPR) before using the data.

**Something is broken — what now?**
Open an issue on the **Issues** tab with the run link. We usually fix problems within 24–48 hours.

#### More tools from us

- [Kleinanzeigen Scraper & API](https://apify.com/surefeed/kleinanzeigen-scraper) — every listing for any search on Kleinanzeigen.de, past the 1,250 limit, with price drops and only-new monitoring.
- [Google Hotels Scraper & API](https://apify.com/surefeed/google-hotels-scraper) — hotel prices with taxes, every booking site's offer, and hotels near any address.
- [Google Flights Scraper & API](https://apify.com/surefeed/google-flights-scraper) — fares, stops, layovers and CO2 emissions for any route, flexible dates.
- [Google Trends Scraper & API](https://apify.com/surefeed/google-trends-scraper) — interest over time, by region, related queries and trending searches.
- [App Store Scraper & API](https://apify.com/surefeed/app-store-scraper) — iPhone app data, top charts and reviews by country.
- [Workday Jobs Scraper & API](https://apify.com/surefeed/workday-jobs-scraper) — every job from any Workday careers site, with exact posting date, salary range and remote status.
- [Eventbrite Scraper & API](https://apify.com/surefeed/eventbrite-scraper) — every event in any city or online, with ticket prices, sold out and organizer details.

#### Legal

**Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC. It only collects publicly available data. All trademarks belong to their respective owners.

# Actor input Schema

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

One app per line: its package name (e.g. com.whatsapp) or its Google Play link (https://play.google.com/store/apps/details?id=…).

## `searchTerms` (type: `array`):

Optional: keywords like "photo editor" or "budget tracker"; the first results of each search (in store order) are added.

## `resultsPerSearch` (type: `integer`):

How many apps to take from each keyword search.

## `includeAppDetails` (type: `boolean`):

One result per app: title, rating, number of ratings and reviews, 1–5 star histogram, installs, price, developer, category, content rating, release and update dates, what's new, icon and screenshots.

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

How many reviews to get for each app (0 = none). Reviews are fetched 150 at a time.

## `sortReviews` (type: `string`):

Same orders as in the store.

## `starRatings` (type: `array`):

Optional: keep only reviews with these ratings, e.g. \[1, 2] for complaints. Empty = all.

## `reviewKeywords` (type: `array`):

Optional: keep only reviews whose text contains at least one of these words (not case-sensitive), e.g. "crash", "login", "battery".

## `appVersions` (type: `array`):

Optional: keep only reviews written with these app versions, e.g. "2.26.38.73".

## `reviewsSince` (type: `string`):

Optional date (YYYY-MM-DD): skip older reviews. With "Newest first" the run stops as soon as it reaches older reviews — ideal for daily monitoring.

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

Two-letter store country (us, gb, it, de…): availability, price and reviews shown depend on it.

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

Language of the store texts and of the reviews returned (en, it, de, fr, es…).

## `includeReviewerNames` (type: `boolean`):

Off by default: reviewer names are personal data. Turn on only if you have a lawful reason to process them (GDPR and similar laws).

## Actor input object example

```json
{
  "apps": [
    "com.whatsapp"
  ],
  "resultsPerSearch": 5,
  "includeAppDetails": true,
  "maxReviews": 100,
  "sortReviews": "newest",
  "starRatings": [],
  "country": "us",
  "language": "en",
  "includeReviewerNames": false
}
```

# Actor output Schema

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

Items produced by the run.

## `runSummary` (type: `string`):

Duration, charged events and whether the spending limit was reached.

# 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("surefeed/google-play-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("surefeed/google-play-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.whatsapp"
  ]
}' |
apify call surefeed/google-play-scraper --silent --output-dataset

```

## MCP server setup

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