# Google Play App Growth Tracker Scraper (`googleapi/google-play-app-growth-tracker-scraper`) Actor

Track public Google Play app installs, ratings, reviews, release signals, and changes across scheduled snapshots.

- **URL**: https://apify.com/googleapi/google-play-app-growth-tracker-scraper.md
- **Developed by:** [Google API](https://apify.com/googleapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

Capture public Google Play app listing snapshots and compare download, rating, and review counts with a previous snapshot. Each dataset item describes an app and includes the values Google Play displays, such as its rating, download tier, update date, price, and listing details.

When `includeGrowth` is enabled, the Actor stores public metrics by app and storefront. A later run can include a `growth` object with the prior values and the change since that snapshot. The first snapshot has no comparison.

### How to use

1. Choose search or detail mode.
2. Enter Android package IDs, app URLs, or public Google Play search/category/developer pages.
3. Set storefront and page limits.
4. Run the Actor again later with the same app and storefront to compare snapshots.

Example:

```json
{
  "appIds": ["com.google.android.apps.maps", "com.google.android.youtube"],
  "mode": "details",
  "locale": "en-US",
  "includeGrowth": true,
  "maxApps": 2,
  "maxItems": 2
}
```

### Input

| Input | Description | Default |
|---|---|---:|
| `mode` | Search public Google Play pages or inspect provided app details. Details mode requires app IDs or detail URLs. | `search` |
| `appIds` / `appId` | Android package IDs. | — |
| `startUrls` | Public Google Play app, search, category, or developer pages. `sourceUrls`, `urls`, and `url` are aliases. | — |
| `queries` / `query` | Search terms when no explicit source is provided. `searchQuery` and `keyword` are aliases. | — |
| `language` / `location` | Language and storefront country. `country` is an alias for location; `locale` can set both. | `en` / `US` |
| `page` / `maxPages` | Starting page and maximum observed pages per listing source. | 1 / 1 |
| `maxApps` | Maximum source pages to request across app and listing sources. | 10 |
| `maxItems` | Maximum app snapshots saved across the run. `maxResults` is an alias. | 25 |
| `includeGrowth` | Store public download, rating, and review counts for later comparison. | `true` |
| `deduplicate` | Remove duplicate apps across the input sources. | `true` |
| `proxyConfiguration` | Optional Apify Proxy configuration for public requests. | — |

### Output

Each dataset row represents an app and includes `appId`, `title`, and `appPageUrl`. It can also include:

- **App listing:** name, package ID, public app URL, description, category, tags, release notes, version, and update date.
- **Publisher and compatibility:** developer, public support details, supported platforms, and Android requirements.
- **Ratings and adoption:** average rating, rating and review counts, review distribution, and displayed download tier.
- **Price and content:** listed price, in-app purchases, ads, content rating, and Editors’ Choice label when shown.
- **Media and safety:** app icon, screenshots, public Data safety disclosure, and promotional video link.
- **Growth comparison:** previous and current download, rating, and review counts when a prior snapshot is available.

Download labels such as `500M+` remain visible and are marked as lower bounds. Google Play can show different counts in separate sections; the Actor preserves them separately. Aggregate metrics do not include individual review text or reviewer details.

Example growth fields:

```json
{
  "appId": "com.example.app",
  "title": "Example App",
  "installsText": "500M+",
  "installsLowerBound": 500000000,
  "installsIsLowerBound": true,
  "ratingValue": 4.5,
  "reviewCount": 55500000,
  "growth": {
    "previous": {
      "installs": 450000000,
      "ratingCount": 12000000,
      "reviewCount": 53000000,
      "observedAt": "2026-09-01T00:00:00.000Z"
    },
    "delta": {
      "installs": 50000000,
      "ratingCount": 500000,
      "reviewCount": 2500000
    }
  }
}
```

The Output tab shows the available result fields. Run summary information is available with the run output in Apify.

### Limits and responsible use

Google Play listing values and page availability can vary by storefront and time. Growth comparisons use the displayed public counts and do not represent exact installs or user activity. Use the same app and storefront when comparing snapshots. The Actor does not install apps, sign in, or bypass access checks.

Use public listing information responsibly and follow applicable privacy requirements and Google Play terms. This Actor is not affiliated with Google.

# Actor input Schema

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

Android package IDs such as com.example.reader. At most 50 sources are accepted.

## `appId` (type: `string`):

Compatibility alias for one Android package ID.

## `startUrls` (type: `array`):

Public HTTPS app detail, search, category, or developer pages. String entries are accepted by the runtime.

## `sourceUrls` (type: `array`):

Compatibility alias for public Google Play URLs.

## `urls` (type: `array`):

Compatibility alias for public Google Play URLs.

## `url` (type: `string`):

Compatibility alias for one public Google Play URL.

## `queries` (type: `array`):

Generate public Google Play app-search pages when no explicit source is supplied.

## `query` (type: `string`):

One public Google Play search term used when no URL or app ID is supplied.

## `searchQuery` (type: `string`):

Compatibility alias for query.

## `keyword` (type: `string`):

Compatibility alias for query.

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

Choose app-detail collection or public search. Details mode requires explicit app detail URLs or package IDs.

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

Two-letter language for generated Google Play URLs.

## `location` (type: `string`):

Two-letter Google Play country code.

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

Compatibility alias for location.

## `locale` (type: `string`):

Optional locale such as en-US. It must agree with language and country when supplied.

## `maxApps` (type: `integer`):

Global page budget across detail pages and observed listing pages.

## `maxDetailRequests` (type: `integer`):

Compatibility alias for maxApps.

## `maxPages` (type: `integer`):

Maximum observed next links followed for each search, developer, or category source.

## `maxItems` (type: `integer`):

Global maximum of normal app snapshot records.

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

Compatibility alias for maxItems.

## `includeGrowth` (type: `boolean`):

Persist current public metrics in the Actor key-value store and include deltas when a prior snapshot exists.

## `deduplicate` (type: `boolean`):

Deduplicate records by app ID, then canonical URL, across all sources.

## `requestDelayMs` (type: `integer`):

Respectful delay before later public requests. Range: 0–10000 ms.

## `maxConcurrency` (type: `integer`):

Bounded number of source workflows processed at once.

## `maxRequestRetries` (type: `integer`):

Finite retries for timeouts and transient 5xx responses; access blocks are not retried.

## `requestTimeoutSecs` (type: `integer`):

Timeout for each public request. requestTimeoutMs and timeoutSecs are compatibility aliases.

## `requestTimeoutMs` (type: `integer`):

Compatibility alias for requestTimeoutSecs.

## `timeoutSecs` (type: `integer`):

Compatibility alias for requestTimeoutSecs.

## `maxResponseBytes` (type: `integer`):

Fail closed when a public page response exceeds this limit.

## `userAgent` (type: `string`):

Optional ordinary HTTP user-agent string.

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

Optional active Apify Proxy or proxyUrls configuration for permitted public requests.

## `page` (type: `integer`):

One-based starting page for public listing sources; later pages are reached only through observed next-page links.

## Actor input object example

```json
{
  "mode": "search",
  "language": "en",
  "location": "US",
  "maxApps": 10,
  "maxPages": 1,
  "maxItems": 25,
  "includeGrowth": true,
  "deduplicate": true,
  "requestDelayMs": 0,
  "maxConcurrency": 1,
  "maxRequestRetries": 1,
  "requestTimeoutSecs": 30,
  "maxResponseBytes": 2500000,
  "userAgent": "Mozilla/5.0 (compatible; GooglePlayGrowthTracker/2.0)",
  "page": 1
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runOutput` (type: `string`):

No description

## `runHealth` (type: `string`):

No description

## `summary` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("googleapi/google-play-app-growth-tracker-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("googleapi/google-play-app-growth-tracker-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 '{}' |
apify call googleapi/google-play-app-growth-tracker-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,googleapi/google-play-app-growth-tracker-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/95heDPrCPhiBB76eD/builds/SgE438MOsG768njEn/openapi.json
