# Google Play Scraper – Reviews, App Details, Search & Top Charts (`pardoning_vacation/google-play-scraper`) Actor

Scrape Google Play app reviews, full app details (installs, ratings, developer email), keyword search rankings and top charts by category and country. Fast, no login, no API key.

- **URL**: https://apify.com/pardoning_vacation/google-play-scraper.md
- **Developed by:** [Павел Тищенко](https://apify.com/pardoning_vacation) (community)
- **Categories:** Marketing, Developer tools, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

### What does Google Play Scraper do?

**Google Play Scraper** collects data from the Google Play Store in four modes:

1. **Reviews** — all reviews of any app: star rating, text, date, thumbs-up, app version, and the developer's reply. Filter by star rating (e.g. only 1-star reviews).
2. **App details** — the full app record: installs, rating and **ratings histogram**, review count, price and in-app purchases, genre, content rating, release and update dates, version, description, what's new, screenshots, and **developer email, website and address**.
3. **Search** — the apps Google Play shows for any keyword, **in ranking order** — ideal for ASO keyword tracking.
4. **Top charts** — Top free, Top paid and Top grossing for any category (Games, Finance, Health & Fitness, …) and any country.

Every mode works for **any country and language**. No login, no API key, no browser.

### Why use it?

- **Product & UX research**: mine thousands of reviews for bugs, feature requests and complaints — yours or competitors'.
- **Sentiment analysis & AI**: feed review text into LLMs to cluster issues and track satisfaction over time.
- **ASO (App Store Optimization)**: track where apps rank for keywords and how competitors describe themselves.
- **Market research**: size categories by installs and ratings, follow top-grossing charts by country.
- **Lead generation**: collect developer emails and websites of apps in any niche.

### How to use it

1. Choose **What to scrape**.
2. For Reviews / App details: paste app URLs or package IDs (e.g. `com.whatsapp`).
   For Search: enter keywords. For Top charts: choose the chart and category.
3. Set **Country** and **Language** if you need a store other than US English.
4. Click **Start** and download results as JSON, CSV or Excel, or use the API.

#### Input example — 1-star reviews of two apps

```json
{
  "mode": "reviews",
  "apps": ["com.whatsapp", "https://play.google.com/store/apps/details?id=com.spotify.music"],
  "maxReviewsPerApp": 1000,
  "reviewSort": "newest",
  "reviewRating": 1,
  "language": "en",
  "country": "us"
}
```

#### Review output

```json
{
  "type": "review",
  "appId": "com.whatsapp",
  "appTitle": "WhatsApp Messenger",
  "reviewId": "c0ac65ea-7d04-4ec7-a0a3-cb1908801621",
  "userName": "Muhluri Moyambo",
  "date": "2026-10-08T16:24:08.259Z",
  "score": 1,
  "text": "…",
  "thumbsUp": 0,
  "appVersion": "2.26.20.71",
  "replyText": null,
  "url": "https://play.google.com/store/apps/details?id=com.whatsapp&reviewId=…"
}
```

#### App output (abridged)

```json
{
  "type": "app",
  "appId": "org.isoron.uhabits",
  "title": "Loop Habit Tracker",
  "developer": "Álinson S Xavier",
  "developerEmail": "dev@loophabits.org",
  "developerWebsite": null,
  "score": 4.7198143,
  "ratings": 63436,
  "reviews": 3423,
  "installs": "5,000,000+",
  "histogram": {
    "1": 1860,
    "2": 880,
    "3": 1761,
    "4": 4117,
    "5": 54788
  },
  "free": true,
  "price": 0,
  "genre": "Productivity",
  "contentRating": "Everyone",
  "updated": "2025-09-14T22:56:06.000Z",
  "version": "2.3.1",
  "searchTerm": "habit tracker",
  "rank": 1,
  "url": "https://play.google.com/store/apps/details?id=org.isoron.uhabits&hl=en&gl=us"
}
```

### How much does it cost?

**Pay-per-event pricing** — you pay a small fixed price per review and per app record delivered (see the Pricing tab). Errors (wrong IDs, removed apps) are free. Platform usage is included, so there are no extra compute or proxy costs.

### Tips

- Use **Only reviews with this star rating = 1** to get just the complaints.
- Turn off **Full app details** in Search / Top charts for a quick, cheaper ranking list.
- Schedule the Actor daily to monitor new reviews or chart positions.

### FAQ

**How many reviews can I get?** As many as Google Play serves for the app — typically tens of thousands for popular apps.

**Is it legal?** The Actor reads only publicly available store pages. Use the data responsibly and in line with applicable laws (e.g. GDPR for reviewer names).

**Need the Apple App Store too?** See our App Store Scraper in the Store.

# Actor input Schema

## `mode` (type: `string`):

Choose the data you need.

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

Google Play app URLs or package IDs, e.g. com.whatsapp or https://play.google.com/store/apps/details?id=com.spotify.music

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

Reviews mode only.

## `reviewSort` (type: `string`):

Order in which reviews are collected.

## `reviewRating` (type: `integer`):

1–5 keeps only reviews with that many stars (e.g. 1 for complaint analysis). 0 = all ratings.

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

Each keyword returns the apps Google Play shows for it, in ranking order — useful for ASO.

## `maxSearchResults` (type: `integer`):

How many apps to take per keyword, in Google Play ranking order.

## `chart` (type: `string`):

Which Google Play chart to collect.

## `category` (type: `string`):

Store category for the chart, e.g. GAME, FINANCE, HEALTH_AND_FITNESS.

## `maxChartResults` (type: `integer`):

How many apps to take from the chart.

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

Fetch the complete app record (installs, ratings histogram, developer contacts, description...). Turn off for a faster, cheaper list.

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

Two-letter language code for texts and reviews, e.g. en, es, de, fr, pt.

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

Two-letter country code of the store, e.g. us, gb, de, br, in.

## Actor input object example

```json
{
  "mode": "reviews",
  "apps": [
    "com.whatsapp"
  ],
  "maxReviewsPerApp": 200,
  "reviewSort": "newest",
  "reviewRating": 0,
  "maxSearchResults": 30,
  "chart": "TOP_FREE",
  "category": "APPLICATION",
  "maxChartResults": 100,
  "includeAppDetails": true,
  "language": "en",
  "country": "us"
}
```

# Actor output Schema

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

Main results table.

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

Every field of every result item.

# 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("pardoning_vacation/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("pardoning_vacation/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 pardoning_vacation/google-play-scraper --silent --output-dataset

```

## MCP server setup

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