# Google Play Real-Time Data Scraper (`b2b_leads/google-play-charts-real-time-data-scraper`) Actor

Live Google Play intelligence: keyword app search, ranked Top Charts with live positions, full app details, developer portfolios, similar apps, and user reviews — streamed as structured JSON from 30+ markets. Checkbox features, webhooks, and a 2-result free trial.

- **URL**: https://apify.com/b2b_leads/google-play-charts-real-time-data-scraper.md
- **Developed by:** [Emmanuel](https://apify.com/b2b_leads) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 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/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 Real-Time Data

Live Google Play app intelligence: keyword search, ranked Top Charts (Top free, Top paid, Top grossing), full app details, developer portfolios, similar-app mapping, featured user reviews, and URL collection — streamed to your dataset as structured JSON in real time.

> **Free trial:** free Apify plans get **2 results per run**. Upgrade to a paid Apify plan for unlimited exports. See [Free-tier & pricing](#free-tier--pricing) below.

### Who it's for

- **App marketers & ASO teams** — track keyword coverage, chart ranks, ratings, and review sentiment per market.
- **Competitive-intelligence & research teams** — map competitor portfolios, similar-app neighborhoods, and category leaders.
- **Agencies & publishers** — monitor launches, pricing moves, and top-chart entries across countries.
- **Review & sentiment analysts** — mine featured reviews for bugs, feature requests, and support issues.
- **Data teams & AI agents** — a clean structured feed of the Play catalog for models, dashboards, and CRMs.

Use cases: rank tracking, launch monitoring, competitor portfolio mapping, category sizing by installs, pricing and in-app-purchase research, review sentiment mining, lead discovery for app services, store-listing audits.

### Features

| Checkbox | What you get |
|---|---|
| 🔍 App Search *(default on)* | Keyword search with rating, installs, price, developer per app. Optional enrich merges full details into the same row. |
| 🏆 Top Charts *(default on)* | Ranked Top free / Top paid / Top grossing per category (Games, Apps, subcategories) and country, with live `chartRank`. Optional enrich on the same rows. |
| 📦 App Details | Full record by package name or URL: description, ratings, installs, screenshots, update info, content rating, developer contacts. |
| 🏢 Developer Apps | Full portfolio per developer — catalog size and launch tracking. |
| 🔗 Similar Apps | Similar-app recommendations per reference app — competitive neighborhoods. |
| ⭐ App Reviews | Featured reviews with author, stars, date, text, helpful votes. |
| 🔗 Scrape By URL | Any Play URL: app, developer, search, category, or collection page. Auto-detected. |
| 🔔 Delivery | Optional webhook (JSON or Slack) pushed per record, in addition to the dataset. |
| 🌐 Connection | Residential proxy recommended, matched to the market country. |

Every discovered app is always saved — runs never silently drop rows. Enrich toggles add fields to the **same** row (`detailsFetched: true`), never a second row.

### Input reference

- `country` (string, default `"US"`) — market country code. `UK` routes through `GB` proxies.
- `language` (string, default `"en"`) — storefront language.
- **App Search:** `enableAppSearch` (default `true`), `searchQueries` (default `["spotify", "minecraft"]`), `searchMaxResults` (1–100, default `10`), `searchFetchFullDetails` (default `false`).
- **Top Charts:** `enableTopCharts` (default `true`), `chartCollections` (default `["top_free"]`; `top_free` · `top_paid` · `top_grossing`), `chartCategory` (default `"GAME"`; `GAME`, `APPLICATION`, game genres, app categories), `chartsMaxResults` (1–200, default `10`), `chartsFetchFullDetails` (default `false`).
- **App Details:** `enableAppDetails` (default `false`), `appIds` (e.g. `com.spotify.music`), `appUrls`.
- **Developer Apps:** `enableDeveloperApps` (default `false`), `developerIds` (e.g. `Spotify AB`), `developerUrls`, `developerMaxApps` (1–200, default `30`).
- **Similar Apps:** `enableSimilarApps` (default `false`), `similarAppIds`, `similarAppUrls`, `similarMaxResults` (1–100, default `10`).
- **Reviews:** `enableReviews` (default `false`), `reviewAppIds`, `reviewUrls`, `reviewsMaxPerApp` (1–50, default `10`), `reviewsSort` (`most_helpful` · `newest` · `highest` · `lowest`).
- **Scrape By URL:** `enableScrapeByUrl` (default `false`), `scrapeUrls`.
- **Delivery:** `webhookUrl`, `webhookFormat` (`json` · `slack`).
- **Connection:** `proxyConfiguration` (Residential `US` default).

Click **Start** with defaults and you get search + chart results in seconds.

### Output reference

One dataset row per app or review. Key fields:

- Shared: `featureType`, `scrapedAt`, `url`, `appId`, `appUrl`, `title`, `developer`, `developerId`, `developerUrl`, `iconUrl`, `rating`, `ratingsCount`, `installs`, `installsMin`, `price`, `priceText`, `currency`, `isFree`, `category`, `contentRating`.
- Details/enriched: `description`, `shortDescription`, `screenshotUrls`, `videoUrl`, `updatedOn`, `whatsNew`, `editorsChoice`, `containsAds`, `inAppPurchases`, `developerEmail`, `developerWebsite`, `privacyPolicyUrl`, `reviewsCount`, `detailsFetched`.
- Charts: `chartName`, `chartRank`. Developer: `developerQuery`. Similar: `similarToAppId`.
- Reviews: `author`, `authorAvatarUrl`, `rating`, `text`, `reviewDate`, `helpfulCount`, `appVersion`, `developerReply`.
- URL scrape: `pageType`.

The `OUTPUT` object reports `totalPushed`, `spendingLimitReached`, and `paywall` status.

### Webhooks

Set `webhookUrl` to receive each record in real time as JSON (`webhookFormat: json`, the full row) or as a Slack message (`webhookFormat: slack`, title + rating + installs + link). Delivery is fire-and-forget: failures never stop the run, and the dataset always has every row.

### MCP / AI-agent usage

Works with the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp): connect it, then ask things like:

> “Get the current Top free Games chart in the US with ratings and installs, plus the 5 most helpful reviews for the #1 app.”

### FAQ

- **Which markets?** Any Play country via `country` + matching residential proxy country. Prices, charts, and ratings are market-localized.
- **How fresh?** Every run reads the live storefront — ranks, ratings, and reviews reflect the moment of the run.
- **Do I need a proxy?** Residential is recommended and preconfigured; match its country to `country`.
- **Free-tier?** Free Apify plans are capped at 2 results per run (or blocked, depending on the Actor owner's setting). The cap is disclosed in the run log and `OUTPUT.paywall`.
- **Enrich cost?** Enrich toggles add a little extra time per record because they fetch each app's full page. Keep them off for the fastest runs.

### Free-tier & pricing

This Actor charges **1 `result` event per dataset row** (pay-per-event). Set a max cost per run in Apify Console to bound spend — the run stops gracefully when the limit is hit. Free-plan runs are capped at 2 rows with an upgrade notice in the log.

# Actor input Schema

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

Two-letter country code for localized storefront data (ratings, prices, charts). Affects currency and the recommended proxy country.

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

Two-letter language code for titles and descriptions, e.g. en, es, de, fr, pt, ja.

## `enableAppSearch` (type: `boolean`):

Live keyword search across Google Play — apps and games by name, category, or topic. On by default and prefilled so you can click Start and get results in seconds.

## `searchQueries` (type: `array`):

One or more search terms, e.g. "spotify", "photo editor", "minecraft". Required when App Search is on.

## `searchMaxResults` (type: `integer`):

Maximum apps to return for each query (1–100). Default 10 — perfect for instant demo runs.

## `searchFetchFullDetails` (type: `boolean`):

When on, each search result stays ONE row (featureType app_search, detailsFetched=true) but is enriched with description, screenshots, update date, developer contacts, and install totals. Adds a little extra time per app. When off, you get fast search cards with title, rating, installs, and price. Every discovered app is always saved — never filtered out.

## `enableTopCharts` (type: `boolean`):

Ranked Top free, Top paid, and Top grossing apps and games per category and country — with live rank positions.

## `chartCollections` (type: `array`):

Which ranked charts to collect (one or more of: top_free, top_paid, top_grossing). Required when Top Charts is on.

## `chartCategory` (type: `string`):

App category for the charts: GAME, APPLICATION, or a subcategory such as GAME_ACTION, GAME_PUZZLE, COMMUNICATION, SOCIAL, PHOTOGRAPHY, MUSIC_AND_AUDIO.

## `chartsMaxResults` (type: `integer`):

Maximum ranked apps to return per chart (1–200). Default 10.

## `chartsFetchFullDetails` (type: `boolean`):

When on, each chart row stays ONE row (featureType top_charts, detailsFetched=true) but is enriched with description, screenshots, and developer contacts. Adds a little extra time per app.

## `enableAppDetails` (type: `boolean`):

Fetch the full record for specific apps by package name or store URL.

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

Google Play package names, e.g. com.spotify.music, com.mojang.minecraftpe.

## `appUrls` (type: `array`):

Full Google Play app URLs (https://play.google.com/store/apps/details?id=...).

## `enableDeveloperApps` (type: `boolean`):

Collect the full app portfolio of any developer — track competitor catalogs and launch velocity.

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

Developer names as shown on Google Play (e.g. Spotify AB, Mojang) or numeric dev ids. Shared with Developer URLs below.

## `developerUrls` (type: `array`):

Full Google Play developer page URLs (https://play.google.com/store/apps/developer?id=...).

## `developerMaxApps` (type: `integer`):

Maximum apps to collect per developer (1–200).

## `enableSimilarApps` (type: `boolean`):

Collect the similar-app recommendations shown on any app's page — map competitive neighborhoods.

## `similarAppIds` (type: `array`):

Package names to find similar apps for, e.g. com.spotify.music.

## `similarAppUrls` (type: `array`):

Full Google Play app URLs to find similar apps for.

## `similarMaxResults` (type: `integer`):

Maximum similar apps to collect per reference app (1–100).

## `enableReviews` (type: `boolean`):

Collect featured user reviews — author, star rating, date, text, and helpful counts. Ideal for sentiment and support-issue mining.

## `reviewAppIds` (type: `array`):

Package names to collect reviews for, e.g. com.spotify.music.

## `reviewUrls` (type: `array`):

Full Google Play app URLs to collect reviews for.

## `reviewsMaxPerApp` (type: `integer`):

Maximum featured reviews to collect per app (1–50).

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

Which featured reviews to prefer.

## `enableScrapeByUrl` (type: `boolean`):

Paste any Google Play URL — app page, developer page, search, category, or collection.

## `scrapeUrls` (type: `array`):

Any Google Play store URL: app, developer, search, category, or collection page.

## `webhookUrl` (type: `string`):

Optional. Every record is always saved to the run dataset — this webhook is an ADDITIONAL real-time push. Each new row is also POSTed to this URL (Slack, Discord, Zapier, Make, n8n, custom monitoring bot).

## `webhookFormat` (type: `string`):

json = full record object; slack = Slack-friendly message payload.

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

Residential proxy recommended. Match the country to the Market country above (US by default).

## Actor input object example

```json
{
  "country": "US",
  "language": "en",
  "enableAppSearch": true,
  "searchQueries": [
    "spotify",
    "minecraft"
  ],
  "searchMaxResults": 10,
  "searchFetchFullDetails": false,
  "enableTopCharts": true,
  "chartCollections": [
    "top_free"
  ],
  "chartCategory": "GAME",
  "chartsMaxResults": 10,
  "chartsFetchFullDetails": false,
  "enableAppDetails": false,
  "appIds": [],
  "appUrls": [],
  "enableDeveloperApps": false,
  "developerIds": [
    "Spotify AB"
  ],
  "developerUrls": [],
  "developerMaxApps": 30,
  "enableSimilarApps": false,
  "similarAppIds": [],
  "similarAppUrls": [],
  "similarMaxResults": 10,
  "enableReviews": false,
  "reviewAppIds": [],
  "reviewUrls": [],
  "reviewsMaxPerApp": 10,
  "reviewsSort": "most_helpful",
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://play.google.com/store/apps/details?id=com.spotify.music"
  ],
  "webhookUrl": "",
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `allResults` (type: `string`):

Full dataset for this run (every featureType).

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

Core fields across features, including detailsFetched for search and chart rows.

## `search` (type: `string`):

featureType=app_search only. One app = one row; full details are merged when enrich is enabled.

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

featureType=top_charts only, with chartName and chartRank per row.

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

featureType=app_details — only from the App Details feature (specific IDs/URLs), not from search/chart enrichment.

## `developer_apps` (type: `string`):

No description

## `similar_apps` (type: `string`):

No description

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

No description

## `scrape_by_url` (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 = {
    "country": "US",
    "language": "en",
    "enableAppSearch": true,
    "searchQueries": [
        "spotify",
        "minecraft"
    ],
    "searchMaxResults": 10,
    "searchFetchFullDetails": false,
    "enableTopCharts": true,
    "chartCollections": [
        "top_free"
    ],
    "chartCategory": "GAME",
    "chartsMaxResults": 10,
    "chartsFetchFullDetails": false,
    "enableAppDetails": false,
    "appIds": [],
    "appUrls": [],
    "enableDeveloperApps": false,
    "developerIds": [
        "Spotify AB"
    ],
    "developerUrls": [],
    "developerMaxApps": 30,
    "enableSimilarApps": false,
    "similarAppIds": [],
    "similarAppUrls": [],
    "similarMaxResults": 10,
    "enableReviews": false,
    "reviewAppIds": [],
    "reviewUrls": [],
    "reviewsMaxPerApp": 10,
    "reviewsSort": "most_helpful",
    "enableScrapeByUrl": false,
    "scrapeUrls": [
        "https://play.google.com/store/apps/details?id=com.spotify.music"
    ],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("b2b_leads/google-play-charts-real-time-data-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 = {
    "country": "US",
    "language": "en",
    "enableAppSearch": True,
    "searchQueries": [
        "spotify",
        "minecraft",
    ],
    "searchMaxResults": 10,
    "searchFetchFullDetails": False,
    "enableTopCharts": True,
    "chartCollections": ["top_free"],
    "chartCategory": "GAME",
    "chartsMaxResults": 10,
    "chartsFetchFullDetails": False,
    "enableAppDetails": False,
    "appIds": [],
    "appUrls": [],
    "enableDeveloperApps": False,
    "developerIds": ["Spotify AB"],
    "developerUrls": [],
    "developerMaxApps": 30,
    "enableSimilarApps": False,
    "similarAppIds": [],
    "similarAppUrls": [],
    "similarMaxResults": 10,
    "enableReviews": False,
    "reviewAppIds": [],
    "reviewUrls": [],
    "reviewsMaxPerApp": 10,
    "reviewsSort": "most_helpful",
    "enableScrapeByUrl": False,
    "scrapeUrls": ["https://play.google.com/store/apps/details?id=com.spotify.music"],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("b2b_leads/google-play-charts-real-time-data-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 '{
  "country": "US",
  "language": "en",
  "enableAppSearch": true,
  "searchQueries": [
    "spotify",
    "minecraft"
  ],
  "searchMaxResults": 10,
  "searchFetchFullDetails": false,
  "enableTopCharts": true,
  "chartCollections": [
    "top_free"
  ],
  "chartCategory": "GAME",
  "chartsMaxResults": 10,
  "chartsFetchFullDetails": false,
  "enableAppDetails": false,
  "appIds": [],
  "appUrls": [],
  "enableDeveloperApps": false,
  "developerIds": [
    "Spotify AB"
  ],
  "developerUrls": [],
  "developerMaxApps": 30,
  "enableSimilarApps": false,
  "similarAppIds": [],
  "similarAppUrls": [],
  "similarMaxResults": 10,
  "enableReviews": false,
  "reviewAppIds": [],
  "reviewUrls": [],
  "reviewsMaxPerApp": 10,
  "reviewsSort": "most_helpful",
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://play.google.com/store/apps/details?id=com.spotify.music"
  ],
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call b2b_leads/google-play-charts-real-time-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,b2b_leads/google-play-charts-real-time-data-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/J8VxTJu9fvaiXbEO3/builds/lQv4NQRnmFkNyLxgL/openapi.json
