# Google Play Store App - Full Detail & Reviews (`ryyos/google-play-apps-scraper`) Actor

\[$1.5/1000] Crawl every Google Play Store category, then get full detail per app: description, screenshots, rating breakdown, real reviews with author and text, permissions, price, install count, chart rank, developer info and similar apps.

- **URL**: https://apify.com/ryyos/google-play-apps-scraper.md
- **Developed by:** [Rio Dwi Saputra](https://apify.com/ryyos) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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

Extract complete Google Play Store app data at scale - every app and game category, and full detail on every app - without touching a browser or writing a single line of scraping code.

### What does Google Play Store App Scraper do?

This Actor crawls [Google Play Store](https://play.google.com/store/apps) across all 50 app and game categories, then opens every app it finds to pull complete detail: full description, every screenshot in full resolution, the rating breakdown by star, real user reviews with author name and full text, the complete permissions list, price and in-app purchase range, install count, current chart rank (if any), developer contact info, and similar apps. Run it directly from the [Apify Console](https://console.apify.com), on a schedule, or through the [Apify API](https://docs.apify.com/api/v2) and pull results via integrations with Make, Zapier, Google Sheets and more.

### Why use Google Play Store App Scraper?

- **App store optimization (ASO)** - benchmark your app's description, screenshots and rating against competitors in your category.
- **Market research** - track which apps dominate top charts by category, country and language over time.
- **Review mining** - read what real users actually say (not just star averages) to spot feature requests and complaints.
- **Lead generation** - pull developer contact info (website, email) across an entire category.
- **Competitive monitoring** - schedule runs to catch price changes, new releases and ranking shifts.

### How to use Google Play Store App Scraper

1. Open the Actor's **Input** tab.
2. Optionally pick specific categories - leave empty to crawl all 50.
3. Set your storefront **country** and **language** (defaults to `us` / `en`).
4. Click **Start** and watch results land in the **Output** tab as they're scraped.
5. Export the dataset as JSON, CSV, Excel, HTML or via the API.

### Input

| Field | Description | Default |
|---|---|---|
| `categories` | Which category pages to crawl (see the dropdown for all 50). Leave empty for all. | all categories |
| `country` | Two-letter Play Store storefront country code (`gl`), e.g. `us`, `gb`, `id`. | `us` |
| `language` | Language code for scraped text (`hl`), e.g. `en`, `id`, `ja`. | `en` |
| `maxAppsPerSource` | Cap on apps taken per category page. `0` = take everything Google server-renders on that page. | `100` |
| `maxReviewsPerApp` | Cap on reviews kept per app. `0` = skip reviews. | `50` |
| `proxyConfiguration` | Apify Proxy settings. Not required (no anti-bot encountered), but recommended for large runs. | Apify Proxy on |

### Output

Each dataset item is one app, for example:

```json
{
  "packageId": "com.whatsapp",
  "title": "WhatsApp Messenger",
  "developer": "WhatsApp LLC",
  "category": "Communication",
  "ratingValue": 4.6,
  "ratingHistogram": { "1": 10698150, "2": 3314744, "3": 8756631, "4": 21752398, "5": 197168225 },
  "installs": "10,000,000,000+",
  "isFree": true,
  "priceFormatted": "Free",
  "reviews": [
    { "author": "Jane Doe", "rating": 4, "text": "Great app overall.", "helpfulCount": 18, "postedAt": "2026-08-16T17:38:49+00:00" }
  ],
  "permissions": [ { "group": "Location", "items": ["precise location (GPS and network-based)"] } ],
  "similarAppIds": ["com.facebook.katana", "com.instagram.android"],
  "url": "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en&gl=us"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel from the **Output** tab or the API.

### Data table

| Field | Description |
|---|---|
| `title`, `summary`, `description` | App name, tagline, full description |
| `iconUrl`, `featureImageUrl`, `screenshotUrls` | Full-resolution image URLs |
| `category`, `categoryCode` | Category name and Play Store code |
| `developer`, `developerId`, `developerUrl`, `developerWebsite`, `developerEmail`, `developerAddress` | Developer identity and contact info |
| `ratingValue`, `ratingText`, `ratingCount`, `ratingHistogram` | Average rating and full 1-5 star breakdown |
| `installs`, `installsExact` | Install count, text and approximate number |
| `contentRating` | Age/content rating |
| `isFree`, `price`, `priceCurrency`, `priceFormatted`, `inAppPurchaseRange` | Pricing |
| `chartRankLabel`, `chartRank` | Current top-chart position, if any |
| `releasedAt`, `updatedAt`, `whatsNew` | Release date, last update date, release notes |
| `permissions` | Full permission list, grouped |
| `reviews` | Author, avatar, rating, full text, date, helpful count, app version reviewed |
| `similarAppIds`, `moreByDeveloperAppIds`, `relatedAppClusters` | Related apps |
| `sourceCategory` | Which crawled category first surfaced this app |

### Pricing / Cost estimation

This Actor is priced at **$1.5 per 1,000 apps scraped** (pay-per-result), below comparable full-detail-plus-reviews Google Play scrapers on Apify Store (which range up to $2/1,000). Metadata-only or reviews-only scrapers charge less ($0.10-$0.50/1,000) but require running two separate Actors to get the same coverage this one gives you in a single run. Apify's free plan includes monthly platform credit, so small test runs cost nothing.

### Tips or advanced options

- Leave `categories` empty for full coverage on the first run, then narrow to just what you need for scheduled/repeat runs to save compute time.
- The same app is only ever detail-scraped once per run even if it appears in multiple categories (deduplicated automatically); check `sourceCategory` to see where it was first discovered. Every app also reports its own `chartRank`/`chartRankLabel` when it currently has one, so chart leaders are still identifiable without a separate top-charts crawl.
- Set `maxReviewsPerApp` to `0` if you only need app metadata - this skips nothing else, reviews are just not requested.

### FAQ, disclaimers and support

This Actor only extracts publicly visible data from Google Play Store pages that anyone can view in a browser without logging in. It does not access, bypass or attempt to circumvent any login wall, CAPTCHA or paid content. Reviews returned are the batch Google Play itself renders on the app's own page; this Actor does not paginate beyond what Google serves on that page. Google Play's own layout can change over time, which may require an update to this Actor - please report any issue via the Issues tab. Need a custom scraper or a feature this Actor doesn't cover? Reach out and a tailored solution can be built.

# Actor input Schema

## `categories` (type: `array`):

Which Google Play app/game category pages to browse for apps. Leave empty to crawl all 50 categories (every app category plus every game sub-category).

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

Two-letter Google Play storefront country code, e.g. 'us', 'gb', 'id', 'jp'. Affects pricing, availability and ranking.

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

Language code for the scraped text (title, description, reviews UI), e.g. 'en', 'id', 'ja'.

## `maxAppsPerSource` (type: `integer`):

Upper bound on how many apps to take from each individual category page. Set to 0 to take every app Google Play server-renders on that listing page (typically several dozen). The same app found under multiple categories is only detail-scraped once.

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

Upper bound on how many individual reviews (author, rating, text, date, helpful count) to keep per app, taken from the featured reviews Google Play itself renders on the app page. Set to 0 to skip review extraction entirely.

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

play.google.com did not require proxies during testing (no CAPTCHA/anti-bot challenge on listing or detail pages), but Apify Proxy is recommended for large runs to keep your IP healthy given the request volume of crawling many categories.

## Actor input object example

```json
{
  "categories": [
    "COMMUNICATION",
    "SOCIAL",
    "PRODUCTIVITY",
    "GAME_ACTION",
    "GAME_CASUAL",
    "TOOLS"
  ],
  "country": "us",
  "language": "en",
  "maxAppsPerSource": 100,
  "maxReviewsPerApp": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `runInfo` (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 = {
    "categories": [
        "COMMUNICATION",
        "SOCIAL",
        "PRODUCTIVITY",
        "GAME_ACTION",
        "GAME_CASUAL",
        "TOOLS"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ryyos/google-play-apps-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 = { "categories": [
        "COMMUNICATION",
        "SOCIAL",
        "PRODUCTIVITY",
        "GAME_ACTION",
        "GAME_CASUAL",
        "TOOLS",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ryyos/google-play-apps-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 '{
  "categories": [
    "COMMUNICATION",
    "SOCIAL",
    "PRODUCTIVITY",
    "GAME_ACTION",
    "GAME_CASUAL",
    "TOOLS"
  ]
}' |
apify call ryyos/google-play-apps-scraper --silent --output-dataset

```

## MCP server setup

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