# Google Play Data Extractor (`scrapier/google-play-data-extractor`) Actor

This Google Play Data Extractor collects full app insights: installs, reviews, rankings, screenshots, developer details, and more. Perfect for trend tracking, portfolio audits, and competitive benchmarking.

- **URL**: https://apify.com/scrapier/google-play-data-extractor.md
- **Developed by:** [Scrapier](https://apify.com/scrapier) (community)
- **Categories:** Automation, E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$24.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### Google Play Data Extractor

Google Play Data Extractor is a fast, reliable Google Play Store scraper that turns Play Store pages into structured app intelligence — including metadata and reviews — from app URLs, search queries, developer pages, and app IDs. It solves the manual effort of collecting installs, ratings, and review content by automating extraction at scale for marketers, developers, data analysts, and researchers. With this Google Play scraper and Google Play reviews scraper, you can power market tracking, portfolio audits, and competitive benchmarking with clean, ready-to-use datasets.

### What data / output can you get?

Below are the primary fields this Google Play app data extractor outputs to the Apify dataset. Values are extracted from public app detail pages and enhanced with review objects when enabled.

| Data type | Description | Example value |
| --- | --- | --- |
| appId | Unique Android package name | com.supercell.brawlstars |
| title | App title | Brawl Stars |
| developer | Developer display name | Supercell |
| score | Average star rating (numeric) | 4.6 |
| ratings | Total ratings count | 5234567 |
| reviews_count | Number of reviews fetched in this run | 50 |
| installs | Display installs range | 100,000,000+ |
| price | App price in minor units (0 for free) | 0 |
| free | Free app flag | true |
| genre | Primary genre | Action |
| contentRating | Content rating | Everyone 10+ |
| version | Current version label | 52.188 |
| androidVersion | Minimum Android version | 7.0 |
| updated | Last update timestamp (epoch ms) | 1734547200000 |
| released | Release date (string as shown) | December 12, 2018 |
| url | Canonical Play Store URL | https://play.google.com/store/apps/details?id=com.supercell.brawlstars&hl=en&gl=us |

Bonus outputs include rich metadata and media:
- scoreText, histogram (ratings distribution), minInstalls, maxInstalls
- developerId, developerEmail, developerWebsite, privacyPolicy
- genreId, categories (name/id pairs)
- icon, headerImage, screenshots[], video, videoImage, previewVideo
- priceText, currency, available, offersIAP, IAPRange
- androidVersionText, androidMaxVersion
- adSupported, recentChanges, content flags (preregister, earlyAccessEnabled, isAvailableInPlayPass)
- reviews[] array with detailed fields (see Output section)

You can export results from the Apify dataset in JSON, CSV, or Excel to integrate with BI tools and pipelines.

### Key features

- 🚀 Robust app details extraction
  Extracts app metadata (ratings, installs, pricing, media, categories, developer info) directly from Google Play app detail pages with structured, analysis-ready fields.

- 💬 Review scraping with controls
  Built-in Google Play ratings and reviews export with maxComments to limit depth (1–500) — ideal when you need to extract Google Play app reviews for sentiment and QA.

- 🌍 Localization by language and country
  Configure Language Code and Country Code to target storefront and content in your preferred locale.

- 📈 Batch processing from multiple sources
  Start from app URLs, app IDs, search result pages, developer pages, usernames, or keywords. The Google Play search results scraper logic auto-discovers app IDs and processes them in stable batches.

- 🔁 Resilient networking with retry & proxy
  Automatic retry with proxy fallback via proxyConfiguration for reliable large runs — a production-ready Google Play Store scraper for pipelines.

- 🧰 Developer-friendly
  JSON outputs with consistent keys, ready for APIs, ETL, and Python Google Play scraper workflows in data platforms and automations.

- ⚙️ Lightweight and scalable
  No browser required, no login required. Designed for automation and repeatable runs in Apify with dataset exports and integrations.

### How to use Google Play Data Extractor - step by step

1) Sign in to Apify  
Create or log in to your Apify account.

2) Open the actor  
Search for “Google Play Data Extractor” in the Apify Store.

3) Add targets in startUrls  
Paste one or more of the supported formats:
- App URL: https://play.google.com/store/apps/details?id=com.supercell.brawlstars
- App ID: com.supercell.brawlstars
- Username: @username
- Keyword: productivity apps
- Search URL: https://play.google.com/store/search?q=games&c=apps
- Developer URL: https://play.google.com/store/apps/developer?id=DeveloperName

4) Configure review depth  
Set maxComments (1–500) to control how many reviews to fetch per app. Set to 0 if you only need metadata.

5) Set localization  
Adjust language (e.g., en) and country (e.g., US) codes for targeted storefront content.

6) (Optional) Configure proxies  
Use proxyConfiguration for higher reliability on larger runs.

7) Run the actor  
Click Start. The Google Play app details scraper will fetch app pages, parse metadata, and collect reviews.

8) Export results  
Open the Dataset tab and export your data in JSON, CSV, or Excel for analysis and dashboards.

Pro Tip: Chain this Google Play developer data scraper with your ETL or orchestrate via the Apify API to automate competitive benchmarking and market monitoring.

### Use cases

| Use case name | Description |
| --- | --- |
| Market research + competitive tracking | Aggregate app scores, versions, and recentChanges to benchmark competitors and track trends by genre and developer. |
| ASO analytics + keyword audits | Combine title, summary, and reviews to analyze keyword usage and user sentiment for App Store Optimization. |
| Portfolio monitoring for publishers | Monitor installs, ratings, and updates across your portfolio, exporting structured deltas into BI dashboards. |
| Data enrichment for analytics | Feed app metadata and review objects into your warehouse to power retention and UX analyses. |
| Academic research + NLP datasets | Collect labeled review text and ratings for language modeling, sentiment analysis, and behavioral studies. |
| API pipeline integration | Use the JSON output from this Android app store data extractor in downstream Python/ETL jobs and automation tools. |

### Why choose Google Play Data Extractor?

Built for precision, automation, and reliability, this Google Play app details scraper outperforms manual tools and unstable extensions.

- 📊 Accurate, structured fields for app metadata and reviews
- 🌐 Language and country targeting for localized insights
- 🧪 Scales from single apps to multi-page discovery via search/developer URLs
- 👨‍💻 Developer-ready JSON for APIs, Python scripts, and data pipelines
- 🔐 Public data only — no login required and no private endpoints
- 🛡️ Proxy and retry support for resilient, production-grade runs
- 💸 Efficient alternative to costly custom scraping — predictable and automation-ready

In short: a production-ready Google Play reviews API alternative that delivers consistent outputs for analytics and automation.

### Is it legal / ethical to use Google Play Data Extractor?

Yes — when used responsibly. This Google Play Store scraper collects publicly available information from app pages without authentication.

Guidelines for compliant use:
- Only use public data from Google Play pages you’re permitted to access.
- Observe Google Play’s Terms of Service and your local data regulations.
- Avoid scraping private, paid, or sensitive data (e.g., APK files).
- Consult your legal team for edge cases and regulatory obligations (e.g., GDPR/CCPA).

The tool focuses on metadata and publicly visible reviews; it does not access private areas or download APKs.

### Input parameters & output format

Example JSON input
```json
{
  "startUrls": [
    "https://play.google.com/store/search?q=hello&c=apps&hl=tr&gl=US",
    "https://play.google.com/store/apps/developer?id=Mattel163+Limited",
    "com.supercell.brawlstars"
  ],
  "maxComments": 25,
  "language": "en",
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

Parameter reference

- startUrls (array of strings, required): Add one or more targets to start extraction. Supported formats: App URL, App ID, Username, Keyword, Search URL, Developer URL. Default: none.
- maxComments (integer): Set how many reviews to collect per app (1–500). Default: 10.
- language (string): Language for Play Store content (e.g., en, es, fr, tr). Default: en. Pattern: ^\[a-z]{2}$.
- country (string): Country storefront for Google Play (e.g., US, GB, DE, TR). Default: US. Pattern: ^\[A-Z]{2}$.
- proxyConfiguration (object): Configure proxies for stable extraction. Prefill: {"useApifyProxy": false}.

Example JSON output

```json
{
  "appId": "com.supercell.brawlstars",
  "title": "Brawl Stars",
  "description": "Fast-paced 3v3 multiplayer and battle royale...",
  "summary": "3v3 and Battle Royale",
  "installs": "100,000,000+",
  "minInstalls": 100000000,
  "maxInstalls": 200000000,
  "score": 4.6,
  "scoreText": "4.6",
  "ratings": 5234567,
  "histogram": { "1": 123456, "2": 234567, "3": 345678, "4": 456789, "5": 4678901 },
  "price": 0,
  "free": true,
  "currency": "USD",
  "priceText": "Free",
  "available": true,
  "offersIAP": true,
  "IAPRange": "$0.99 - $49.99",
  "androidVersion": "7.0",
  "androidVersionText": "7.0",
  "androidMaxVersion": "VARY",
  "developer": "Supercell",
  "developerId": "Supercell",
  "developerEmail": "support@supercell.com",
  "developerWebsite": "https://supercell.com/",
  "developerLegalName": "Supercell",
  "developerLegalEmail": "support@supercell.com",
  "developerLegalAddress": "Helsinki, Finland",
  "developerLegalPhoneNumber": "",
  "privacyPolicy": "https://supercell.com/en/privacy-policy/",
  "developerInternalID": "Supercell",
  "genre": "Action",
  "genreId": "GAME_ACTION",
  "categories": [
    { "name": "Action", "id": "GAME_ACTION" },
    { "name": "Multiplayer", "id": "MULTIPLAYER" }
  ],
  "icon": "https://play-lh.googleusercontent.com/xxx",
  "headerImage": "https://play-lh.googleusercontent.com/yyy",
  "screenshots": [
    "https://play-lh.googleusercontent.com/screen1",
    "https://play-lh.googleusercontent.com/screen2"
  ],
  "video": "https://www.youtube.com/watch?v=abcd",
  "videoImage": "https://i.ytimg.com/vi/abcd/hqdefault.jpg",
  "previewVideo": "https://www.youtube.com/watch?v=abcd",
  "contentRating": "Everyone 10+",
  "adSupported": true,
  "released": "December 12, 2018",
  "updated": 1734547200000,
  "version": "52.188",
  "recentChanges": "Balance updates\nBug fixes",
  "comments": [],
  "preregister": false,
  "earlyAccessEnabled": false,
  "isAvailableInPlayPass": false,
  "url": "https://play.google.com/store/apps/details?id=com.supercell.brawlstars&hl=en&gl=us",
  "reviews": [
    {
      "reviewId": "gp:AOqpTOExample",
      "rating": 5,
      "reviewer": "Alex",
      "date": "2026-04-10",
      "reviewedIn": "en",
      "body": "Great gameplay and frequent updates!",
      "userImage": "https://lh3.googleusercontent.com/a-/example",
      "position": 1,
      "helpfulCounts": 12,
      "appId": "com.supercell.brawlstars",
      "timestamp": 1765564800,
      "language": "en"
    }
  ],
  "reviews_count": 25
}
```

Notes:

- reviews\_count reflects how many reviews were fetched based on maxComments.
- When reviews are fetched, reviews is an array of objects with keys: reviewId, rating, reviewer, date, reviewedIn, body, userImage, position, helpfulCounts, appId, timestamp, language.

### FAQ

#### Is there a trial for Google Play Data Extractor?

Yes. The actor listing includes trial minutes (e.g., 120 trial minutes) so you can evaluate the Google Play app metadata scraper before committing to a plan.

#### How many reviews can I scrape per app?

You can collect between 1 and 500 reviews per app, controlled by the maxComments input. Set maxComments to fit your analysis depth and runtime.

#### Does this tool require login or cookies?

No. It operates as a public Google Play Store scraper and does not use authentication. It fetches publicly available app pages and review data.

#### What input formats are supported?

You can start from App URLs, App IDs, usernames (e.g., @username), keywords, Play Store search URLs, and developer pages. Mix different target types in a single run.

#### Can I target specific languages and countries?

Yes. Use the language (e.g., en) and country (e.g., US) input fields to localize content retrieval for your storefront of interest.

#### What kind of review data do I get?

Each review includes fields like reviewId, rating, reviewer, date, body, language, helpfulCounts, and more — a complete Google Play reviews scraper output for analytics.

#### Does it download APK files?

No. This Google Play app details scraper focuses on metadata and publicly visible reviews. It does not download APKs or access private data.

#### Does it support proxies for large runs?

Yes. Configure proxyConfiguration to enable proxies, improving stability and scale during high-volume extraction.

### Closing CTA / Final thoughts

Google Play Data Extractor is built for fast, reliable extraction of app metadata and reviews from the Google Play Store. It delivers structured JSON suitable for analytics, ASO, and competitive research, with localization, batching, and proxy support for scale. Ideal for marketers, developers, data analysts, and researchers, it can power dashboards and pipelines as a Google Play reviews API alternative. Connect it to your workflows via the Apify platform, export to JSON/CSV/Excel, or integrate with Python automation — and start extracting smarter app insights today.

### What are other Google scraping tools?

If you want to scrape specific Google data, you can use any of the dedicated scrapers below for faster and more targeted results.

| Scraper Name | Scraper Name |
|---|---|
| [Google Ads Scraper](https://apify.com/scrapier/google-ads-scraper) | [Google Maps Scraper](https://apify.com/scrapier/google-maps-scraper) |
| [Google Finance Scraper](https://apify.com/scrapier/google-finance-scraper) | [Google News Scraper](https://apify.com/scrapier/google-news-scraper) |
| [Google Flights Scraper](https://apify.com/scrapier/google-flights-scraper) | [Google Patents Scraper](https://apify.com/scrapier/google-patents-scraper) |
| [Google Hotels Scraper](https://apify.com/scrapier/google-hotels-scraper) | [Google Play Email Scraper](https://apify.com/scrapier/google-play-email-scraper) |
| [Google Images Scraper](https://apify.com/scrapier/google-images-scraper) | [Google Play Phone Number Scraper](https://apify.com/scrapier/google-play-phone-number-scraper) |
| [Google Maps Email Extractor](https://apify.com/scrapier/google-maps-email-extractor) | [Google Play Store App Search Scraper](https://apify.com/scrapier/google-play-store-app-search-scraper) |
| [Google Maps Email Scraper](https://apify.com/scrapier/google-maps-email-scraper) | [Google Play Store Review Scraper](https://apify.com/scrapier/google-play-store-review-scraper) |
| [Google Maps Extractor](https://apify.com/scrapier/google-maps-extractor) | [Google Search Autocomplete Scraper](https://apify.com/scrapier/google-search-autocomplete-scraper) |
| [Google Maps Phone Number Extractor](https://apify.com/scrapier/google-maps-phone-number-extractor) | [Google Search Results Scraper](https://apify.com/scrapier/google-search-results-scraper) |
| [Google Maps Phone Number Scraper](https://apify.com/scrapier/google-maps-phone-number-scraper) | [Google Search Results Serp Scraper](https://apify.com/scrapier/google-search-results-serp-scraper) |
| [Google Maps Reviews Scraper](https://apify.com/scrapier/google-maps-reviews-scraper) | [Google Trends Scraper](https://apify.com/scrapier/google-trends-scraper) |

# Actor input Schema

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

Add one or more targets to start extraction.

✅ Supported input formats:
• App URL: https://play.google.com/store/apps/details?id=com.supercell.brawlstars
• App ID: com.supercell.brawlstars
• Username: @username
• Keyword: productivity apps
• Search URL: https://play.google.com/store/search?q=games\&c=apps
• Developer URL: https://play.google.com/store/apps/developer?id=DeveloperName

💡 Tip: You can mix different target types in one run.

## `maxComments` (type: `integer`):

Set how many reviews to collect per app (1-500).

⚖️ Higher values give deeper review insights but may increase run time.

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

Language for Play Store content.

Examples: en, es, fr, tr.
Default: en

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

Country storefront for Google Play.

Examples: US, GB, DE, TR.
Default: US

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

Configure proxies for stable extraction.

✅ Recommended for larger runs.
🔒 Helps improve reliability when traffic limits occur.

## Actor input object example

```json
{
  "startUrls": [
    "https://play.google.com/store/search?q=hello&c=apps&hl=tr&gl=US",
    "https://play.google.com/store/apps/developer?id=Mattel163+Limited"
  ],
  "maxComments": 10,
  "language": "en",
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        "https://play.google.com/store/search?q=hello&c=apps&hl=tr&gl=US",
        "https://play.google.com/store/apps/developer?id=Mattel163+Limited"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapier/google-play-data-extractor").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 = {
    "startUrls": [
        "https://play.google.com/store/search?q=hello&c=apps&hl=tr&gl=US",
        "https://play.google.com/store/apps/developer?id=Mattel163+Limited",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapier/google-play-data-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://play.google.com/store/search?q=hello&c=apps&hl=tr&gl=US",
    "https://play.google.com/store/apps/developer?id=Mattel163+Limited"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapier/google-play-data-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapier/google-play-data-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Play Data Extractor",
        "description": "This Google Play Data Extractor collects full app insights: installs, reviews, rankings, screenshots, developer details, and more. Perfect for trend tracking, portfolio audits, and competitive benchmarking.",
        "version": "0.1",
        "x-build-id": "GA8m6tKmGXZ5UO0zE"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapier~google-play-data-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapier-google-play-data-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapier~google-play-data-extractor/runs": {
            "post": {
                "operationId": "runs-sync-scrapier-google-play-data-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapier~google-play-data-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-scrapier-google-play-data-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "🎯 Targets: App URLs, App IDs, Usernames, or Keywords",
                        "type": "array",
                        "description": "Add one or more targets to start extraction.\n\n✅ Supported input formats:\n• App URL: https://play.google.com/store/apps/details?id=com.supercell.brawlstars\n• App ID: com.supercell.brawlstars\n• Username: @username\n• Keyword: productivity apps\n• Search URL: https://play.google.com/store/search?q=games&c=apps\n• Developer URL: https://play.google.com/store/apps/developer?id=DeveloperName\n\n💡 Tip: You can mix different target types in one run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxComments": {
                        "title": "💬 Maximum Reviews to Fetch",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Set how many reviews to collect per app (1-500).\n\n⚖️ Higher values give deeper review insights but may increase run time.",
                        "default": 10
                    },
                    "language": {
                        "title": "🌐 Language Code",
                        "pattern": "^[a-z]{2}$",
                        "type": "string",
                        "description": "Language for Play Store content.\n\nExamples: en, es, fr, tr.\nDefault: en",
                        "default": "en"
                    },
                    "country": {
                        "title": "🗺️ Country Code",
                        "pattern": "^[A-Z]{2}$",
                        "type": "string",
                        "description": "Country storefront for Google Play.\n\nExamples: US, GB, DE, TR.\nDefault: US",
                        "default": "US"
                    },
                    "proxyConfiguration": {
                        "title": "🛡️ Proxy Configuration",
                        "type": "object",
                        "description": "Configure proxies for stable extraction.\n\n✅ Recommended for larger runs.\n🔒 Helps improve reliability when traffic limits occur."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
