# Google Play Scraper (`automly/google-play-scraper`) Actor

Scrape Google Play apps by keyword, package name, developer or similar apps, in any country: name, developer, description, price, in-app purchases, rating, ratings by stars, installs, content rating, category, screenshots, data safety. Plus app reviews and the top free, paid and grossing charts.

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

## Pricing

from $0.16 / 1,000 apps

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 - Apps, Details, Reviews & Charts

### What is Google Play Scraper?

**Google Play Scraper** is a tool that lets you **scrape Android apps, reviews and rankings from the Google Play Store**: name, developer, description, price, in-app purchases, rating, rating count, **ratings by stars**, installs, content rating, category, update date, screenshots, icon, developer email and website, **data safety and permissions**. Search by keyword, paste package names or links, list a developer's apps, find similar apps, read **app reviews**, or download the **top free, paid and grossing charts** for any country and category. Click **Start** and download the data as Excel, CSV or JSON.

- ⚡ **Fast:** thousands of apps and reviews per run, with full details
- 🌍 **Any country:** every Google Play country, with local prices and availability, in one run
- 📊 **Full details:** ratings by stars, in-app purchases, categories, data safety, permissions
- 💬 **Reviews:** rating, text, date, helpful votes and the developer's reply
- 🔓 **No login:** no Google account needed

### What can Google Play Scraper do?

- **Search Google Play by keyword**, like `photo editor` or `budget planner`, in one or many countries
- **Scrape Google Play app details by package name or link**: everything the app's listing shows
- **Get the Google Play top charts**: top free, paid and grossing, overall or per category, like Games, Education or Finance
- **Scrape a Google Play developer's apps**, the apps listed on their developer page
- **Find similar Android apps**: the "Similar apps" for any app
- **Scrape Google Play reviews** for any app: rating, text, date, helpful votes and developer reply
- **Track Google Play ratings, installs, prices and update dates** over time
- **Collect data safety and permissions**: what data apps share and collect, and what they ask for
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Google Play?

| | | |
|---|---|---|
| 📱 App name and package name | 👤 Developer, developer ID, email and website | 💵 Price, currency and in-app purchases |
| ⭐ Rating and rating count | 📊 Ratings by stars (1 to 5) | ⬇️ Installs (min and max) |
| 🗂️ Category and all categories | 🔞 Content rating | 🆕 What's new and last update date |
| 🖼️ Icon, screenshots and promo video | 📝 Full description and summary | 🔒 Data safety and permissions |
| 💬 Reviews: rating, text, date, votes, reply | 🏆 Chart, category and place | 🔗 Website and privacy policy links |

### How to scrape Google Play

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Google Play Scraper**.
3. Choose **What to scrape**: Apps, App details, Top charts or Reviews.
4. Enter search terms, package names or links, developers, the charts you want, or the apps to read reviews for, and the countries.
5. Click **Start**, then download the data as Excel, CSV, JSON or HTML.

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

You pay only for the rows you get: one price per app or chart place, a higher one per app with full details (description, ratings by stars, categories, data safety and more), and one per review. Platform usage is included, so there is nothing else to pay.

Every Apify account gets **$5 of free usage each month**, so you can try it at no cost. **Max results** keeps the cost of a run under control, and you can set a maximum cost per run. See the **Pricing** tab for the price on your plan.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **What to scrape** | **Apps**: one row per app found. **App details**: the same apps with description, ratings by stars, categories, data safety and more. **Top charts**: one row per chart place. **Reviews**: one row per review |
| **Search terms** | Words to search Google Play for, like `photo editor`. About 30 apps per term and country |
| **App IDs or links** | Package names (`com.spotify.music`) or links (`https://play.google.com/store/apps/details?id=com.spotify.music`). Used for Apps, App details and Reviews |
| **Developers** | Developer names (`Spotify AB`), numeric IDs or links, to get the apps listed on their developer page |
| **Find similar apps for** | Package names or links whose "Similar apps" you want |
| **Countries** | Two-letter country codes, like `us`, `gb`, `de`, `jp` (default `us`) |
| **Language** | Display language for names and text, like `en`, `de` or `pt-br` |
| **Charts** | Top free, top paid, top grossing (Top charts) |
| **Chart categories** | Category IDs, like `APPLICATION` (all apps), `GAME` (all games), `GAME_PUZZLE`, `EDUCATION`, `FINANCE` |
| **Reviews options** | Sort newest, rating or most relevant; only one star rating; a per-app review limit |
| **Max results** | The most rows the whole run saves (default 100). Set 0 for no limit |

Connection settings: the default works for most runs.

Search results in two countries:

```json
{
  "dataType": "apps",
  "searchTerms": ["photo editor", "budget planner"],
  "countries": ["us", "gb"],
  "maxResults": 500
}
```

Full details of two apps, with data safety:

```json
{
  "dataType": "details",
  "appIds": ["com.spotify.music", "https://play.google.com/store/apps/details?id=com.instagram.android"],
  "includeDataSafety": true
}
```

Reviews of an app, newest first:

```json
{
  "dataType": "reviews",
  "appIds": ["com.spotify.music"],
  "reviewsSort": "newest",
  "maxResults": 2000
}
```

Top free and top grossing games in the US and Japan:

```json
{
  "dataType": "charts",
  "chartTypes": ["topfree", "topgrossing"],
  "chartCategories": ["GAME"],
  "countries": ["us", "jp"],
  "maxResults": 0
}
```

### ⬆️ Output

Every app is one row. An **App details** row (lists shortened):

```json
{
  "appId": "com.spotify.music",
  "title": "Spotify: Music and Podcasts",
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music",
  "developer": "Spotify AB",
  "developerId": "Spotify AB",
  "developerUrl": "https://play.google.com/store/apps/developer?id=Spotify+AB",
  "icon": "https://play-lh.googleusercontent.com/IzQgYCcnCFCD08GR-3bdtc",
  "price": 0.0,
  "currency": "USD",
  "free": true,
  "inAppPurchases": true,
  "inAppPurchaseRange": "$4.99 - $203.88 per item",
  "score": 4.35,
  "scoreText": "4.3",
  "ratings": 36463641,
  "reviewsCount": 1855751,
  "ratingHistogram": {"1": 3714478, "2": 1063550, "3": 1312155, "4": 3099503, "5": 27273932},
  "summary": "Listen to music & podcasts, free.",
  "description": "With the Spotify music and podcast app, you can play millions of songs...",
  "installs": "1,000,000,000+",
  "minInstalls": 1000000000,
  "released": "May 27, 2014",
  "updatedAt": "2026-10-07T06:27:03Z",
  "recentChanges": "We're always making changes and improvements to Spotify.",
  "contentRating": "Teen",
  "adSupported": true,
  "genre": "Music & Audio",
  "genreId": "MUSIC_AND_AUDIO",
  "categories": [{"name": "Music & Audio", "id": "MUSIC_AND_AUDIO"}],
  "available": true,
  "screenshots": ["https://play-lh.googleusercontent.com/shot1"],
  "developerEmail": "support@spotify.com",
  "developerWebsite": "https://www.spotify.com",
  "privacyPolicyUrl": "https://www.spotify.com/legal/privacy-policy/",
  "dataSafety": {
    "dataShared": [{"category": "Location", "data": "Approximate location", "optional": false, "purposes": "Advertising or marketing"}],
    "dataCollected": [{"category": "Personal info", "data": "Name", "optional": false, "purposes": "App functionality"}],
    "securityPractices": [{"practice": "Data is encrypted in transit", "description": "Your data is transferred over a secure connection"}],
    "privacyPolicyUrl": "https://www.spotify.com/legal/privacy-policy/"
  },
  "position": null,
  "country": "US",
  "language": "en",
  "source": "com.spotify.music",
  "sourceType": "app",
  "scrapedAt": "2026-10-12T14:43:42Z"
}
```

An **Apps** row has the app's main fields (name, developer, price, rating, icon, summary); the detail fields are empty. A **Top charts** row adds `chartType`, `chartCategory` and `position`. A **Reviews** row looks like:

```json
{
  "appId": "com.spotify.music",
  "reviewId": "f6838cb6-afea-431c-a481-5128b23221de",
  "reviewUserName": "Jane D.",
  "reviewScore": 5,
  "reviewText": "Great app, works perfectly.",
  "reviewDate": "2026-10-10T17:46:30Z",
  "reviewThumbsUp": 17,
  "reviewReplyText": null,
  "reviewAppVersion": "9.1.80.2221",
  "country": "US",
  "source": "com.spotify.music",
  "sourceType": "reviews"
}
```

The **Overview** tab lists every app with its icon, the **Details** tab shows the full fields, the **Charts** tab shows chart places in order, and the **Reviews** tab shows one row per review. The run report lists any app or developer that does not exist.

### Which fields come with which choice?

| Field | Apps | App details | Top charts | Reviews |
|---|---|---|---|---|
| Name, developer, price, rating, icon, summary | ✅ | ✅ | ✅ | |
| Description, installs, ratings by stars, categories, screenshots, content rating, update date | | ✅ | | |
| In-app purchases, developer email and website, privacy policy | | ✅ | | |
| Data safety and permissions (when enabled) | | ✅ | | |
| Chart, chart category and place | | | ✅ | |
| Review rating, text, date, helpful votes, developer reply | | | | ✅ |

### Top chart categories

`APPLICATION` (all apps), `GAME` (all games), and specific ones like `ART_AND_DESIGN`, `BOOKS_AND_REFERENCE`, `BUSINESS`, `COMMUNICATION`, `DATING`, `EDUCATION`, `ENTERTAINMENT`, `FINANCE`, `FOOD_AND_DRINK`, `HEALTH_AND_FITNESS`, `LIFESTYLE`, `MAPS_AND_NAVIGATION`, `MEDICAL`, `MUSIC_AND_AUDIO`, `NEWS_AND_MAGAZINES`, `PERSONALIZATION`, `PHOTOGRAPHY`, `PRODUCTIVITY`, `SHOPPING`, `SOCIAL`, `SPORTS`, `TOOLS`, `TRAVEL_AND_LOCAL`, `WEATHER`, plus game categories like `GAME_ACTION`, `GAME_PUZZLE`, `GAME_RACING`, `GAME_ROLE_PLAYING`, `GAME_STRATEGY` and more.

### How can I use Google Play data?

- **App store optimization (ASO):** see which apps rank for your keywords, with their titles, ratings and installs
- **Competitor tracking:** follow competitors' updates, prices, ratings, installs and reviews
- **Market research:** find the top apps per category and country, and the developers behind them
- **Review analysis:** collect reviews to understand what users love and complain about
- **Lead generation:** build lists of developers with their emails and websites
- **Privacy research:** see what data apps share and collect, and what they request

### How many apps and reviews can I get?

Keyword search returns about 30 apps per term and country (add more terms or countries to collect more), the apps listed on a developer's page, about 50 similar apps per app, and up to 200 places per top chart per country and category. Reviews are read page by page with no fixed limit — set **Max results** or **Max reviews per app** to choose how many. An app found by two inputs in the same country is saved once.

### ❓FAQ

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

You pay per row: one price per app or chart place, a higher one per app with full details, and one per review. Platform usage is included, and every account gets $5 of free usage a month. See the **Pricing** tab for the exact price on your plan.

#### Do I need a Google account?

No. The scraper reads the same public Google Play pages anyone can see without signing in.

#### Which countries and languages are supported?

Every Google Play country. Use two-letter codes like `us`, `gb`, `de`, `fr`, `jp`, `br` or `in`, and a language like `en`, `de` or `pt-br`. Prices, availability and text come in that country and language.

#### Can I get app reviews?

Yes. Set **What to scrape** to **Reviews** and add the app IDs. Each review has its rating, text, date, helpful votes, the app version and the developer's reply.

#### How many results can I get per search?

Logged-out Google Play search returns about 30 apps per term, so add more search terms or countries to collect more. Similar apps (~50), top charts (up to 200) and reviews return far more.

#### Why are the version number or minimum Android version sometimes empty?

Google no longer shows the exact version number and minimum Android version on the public app page for every app, so these fields are returned only where Google still publishes them and may be empty. Everything else — installs, rating, ratings by stars, update date, description and more — is always included.

#### What happens with a removed app or a wrong package name?

The run goes on with the other inputs, and the run report lists the apps and developers that do not exist. An app available in one country but not another is marked as unavailable there.

#### Can I connect Google Play Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape Google Play?

This scraper only collects public app information that developers chose to publish on Google Play. It does not collect private data such as user accounts. Some fields, like a developer's name or email or a reviewer's name, can still be personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Google Play Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Google or Google Play.

#### Something isn't working, or I need another field?

Open the **Issues** tab with your input and what you expected. We read every one and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Tell us on the **Issues** tab. If Google Play Scraper saved you time, a short review on the **Reviews** tab helps other people find it and tells us what to improve.

# Actor input Schema

## `dataType` (type: `string`):

Apps: one row per app found by your search terms, package names, developers and similar apps. App details: the same apps with every detail the store shows. Top charts: one row per chart place. Reviews: one row per review for the app IDs below.

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

Words to search Google Play for, e.g. photo editor or budget planner, one per line. Logged-out search returns up to about 30 apps per term and country.

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

Google Play package names, e.g. com.spotify.music, or app links like https://play.google.com/store/apps/details?id=com.spotify.music, one per line. Used for Apps, App details and Reviews.

## `developerIds` (type: `array`):

Developer names, e.g. Spotify AB, numeric developer IDs, or developer links, to get every app they publish.

## `similarToAppIds` (type: `array`):

Package names or links whose "Similar apps" you want, e.g. com.spotify.music.

## `searchPrice` (type: `string`):

Limit keyword search results to free or paid apps. Applies to Search terms only.

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

Two-letter country codes, e.g. us, gb, de or jp. Each input is read in every country listed, and prices and availability are shown for that country.

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

Display language for names and text, e.g. en, de or pt-br.

## `chartTypes` (type: `array`):

Which charts to get when What to scrape is Top charts.

## `chartCategories` (type: `array`):

Categories by their Google Play ID, e.g. APPLICATION for all apps, GAME for all games, or a specific one like GAME_PUZZLE, EDUCATION, FINANCE, PHOTOGRAPHY, SOCIAL (see the README for the full list).

## `reviewsSort` (type: `string`):

The order reviews are read in, when What to scrape is Reviews.

## `reviewsStars` (type: `integer`):

Read only reviews with this star rating (1-5). Leave empty for all reviews.

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

The most reviews to read per app. Leave empty or 0 for no per-app limit (the run-wide Max results still applies).

## `includeDataSafety` (type: `boolean`):

In App details runs, also read each app's Data safety section (data shared and collected). Adds one more page per app.

## `includePermissions` (type: `boolean`):

In App details runs, also read each app's requested permissions.

## `maxResults` (type: `integer`):

The most rows this run saves, across all inputs and countries. Set 0 for no limit.

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

The default works for most runs. If results come back empty, try a different proxy option.

## Actor input object example

```json
{
  "dataType": "apps",
  "searchTerms": [
    "photo editor"
  ],
  "searchPrice": "all",
  "countries": [
    "us"
  ],
  "language": "en",
  "chartTypes": [
    "topfree"
  ],
  "chartCategories": [
    "APPLICATION"
  ],
  "reviewsSort": "newest",
  "includeDataSafety": false,
  "includePermissions": false,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `details` (type: `string`):

No description

## `charts` (type: `string`):

No description

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

No description

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

No description

## `report` (type: `string`):

No description

# 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 = {
    "searchTerms": [
        "photo editor"
    ],
    "countries": [
        "us"
    ],
    "language": "en",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/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 = {
    "searchTerms": ["photo editor"],
    "countries": ["us"],
    "language": "en",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/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 '{
  "searchTerms": [
    "photo editor"
  ],
  "countries": [
    "us"
  ],
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/google-play-scraper --silent --output-dataset

```

## MCP server setup

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