# Google Play Store Review Scraper (`scrapepilotapi/google-play-store-review-scraper`) Actor

- **URL**: https://apify.com/scrapepilotapi/google-play-store-review-scraper.md
- **Developed by:** [ScrapePilot](https://apify.com/scrapepilotapi) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **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/platform/actors/running/actors-in-store#pay-per-event

## 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

### ❓ What does Google Play Data Extractor do?

A Google Play Data Extractor is a powerful tool designed to automatically extract essential information from the Google Play Store, including app details, reviews, ratings, screenshots, developer profiles, categories, and more. 📊✨

Unlike manual copy-paste or limited browser plugins like Instant Data Scraper, a dedicated Google Play Scraper provides fast, structured, and reliable data output. It works seamlessly for SEO audits, app market research, competitive tracking, and trend analysis. Businesses, developers, and marketers use a Google Play Data Extractor to gather insights that boost visibility, improve app strategies, and inform product decisions.

Whether you're searching for google play scraper python, google play scraper npm, or a simple google play data extractor free option—this solution gives you the scalability and automation you need without the hassle. 🚀

### 🛠️ Support and Feedback

- 🐞 **Bug reports:** Open a ticket in the repository **Issues** section  
- ✨ **Custom solutions or feature requests:** Contact our team 📧 **Email:** dev.scraperengine@gmail.com


### 📥 What Google Play Data Extractor Can Extract

Below is a clean overview of the data types your scraper can collect:

#### 📊 Extractable Data Types Table

| Data Type | Description |
| --- | --- |
| App Name | Official name of the application |
| Package ID | Unique Android app identifier |
| Developer Name | Publisher/organization behind the app |
| App Description | Full or summary text |
| Ratings & Reviews | User feedback and average rating |
| Installs Count | Download range shown by Google Play |
| Category & Genre | App classification |
| Last Updated | Most recent update timestamp |
| Version | Current published version |
| Screenshots | Image URLs of app previews |
| Developer Contact | Email, website, address |
| In-app Purchases | Pricing info |
| Permissions | Required permissions |

This section naturally supports keywords like google play data extractor apk, google play extractor, and how to extract data from google play store by showing exactly what the tool captures.

* * *

### 🧩 Key Features of Google Play Data Extractor

Here are the standout features that make this extractor a favorite among researchers and app developers:

*   ⚡ High-Speed Extraction — Faster than manual tools like Instant Data Scraper or browser extensions.  
      
    
*   📦 Multiple Data Formats — Export data in JSON, CSV, Excel, or via API.  
      
    
*   🔄 Bulk Scraping Support — Crawl hundreds or thousands of Google Play apps automatically.  
      
    
*   🎯 Smart Filtering — Extract by category, keyword, or specific package IDs.  
      
    
*   🤖 Automation Ready — Works with scripts such as google play scraper python, npm, and server-side systems.  
      
    
*   🔍 Accurate NLP-Friendly Outputs — Ideal for sentiment analysis, keyword research, and market intelligence.  
      
    
*   📱 Android-Friendly Options — Works for users seeking google play data extractor android or google play apk downloader online.  
      
    
*   💰 Free Tier Available — Ideal for beginners searching for google play data extractor free tools.  
      
    
*   🌐 API Access — Integrate results directly into your workflows.  
      
    

These features ensure scalable extraction compared to alternatives like google play scraper github projects or temporary browser plugins.

##🔗 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.  
Just enter keywords, search queries, place names, app links, or URLs and start scraping instantly.

| [🖼️ Google Images Scraper](https://apify.com/scraper-engine/google-images-scraper) | [✈️ Google Flights Scraper](https://apify.com/scraper-engine/google-flights-scraper) |
|---|---|
| [⌨️ Google Search Autocomplete API](https://apify.com/scraper-engine/google-search-autocomplete-api) | [📢 Google Ads Scraper](https://apify.com/scraper-engine/google-ads-scraper) |
| [📰 Google News Scraper](https://apify.com/scraper-engine/google-news-scraper) | [🏨 Google Hotels Scraper](https://apify.com/scraper-engine/google-hotels-scraper) |
| [🏨 Google Hotels Scraper](https://apify.com/scraper-engine/google-hotels-scraper) | [📱 Google Play Data Extractor](https://apify.com/scraper-engine/google-play-scraper) |
| [🗺️ Google Maps Reviews Scraper](https://apify.com/scraper-engine/google-maps-reviews-scraper) | [📧 Google Play Email Scraper](https://apify.com/scraper-engine/google-play-email-scraper) |
| [📍 Google Maps Extractor](https://apify.com/scraper-engine/google-maps-extractor) | [🧭 Google Maps Scraper](https://apify.com/scraper-engine/google-maps-scraper) |
| [📧 Google Maps Email Scraper](https://apify.com/scraper-engine/google-maps-email-scraper) | [📱 Google Play Store App Search Scraper](https://apify.com/scraper-engine/google-play-store-app-search-scraper) |
| [📨 Google Maps Email Extractor](https://apify.com/scraper-engine/google-maps-email-extractor) | [📞 Google Maps Phone Number Extractor](https://apify.com/scraper-engine/google-maps-phone-number-extractor) |
| [☎️ Google Play Phone Number Scraper](https://apify.com/scraper-engine/google-play-phone-number-scraper) | [📞 Google Maps Phone Number Scraper](https://apify.com/scraper-engine/google-maps-phone-number-scraper) |


### 🛠️ How to Use Google Play Data Extractor (Step-by-Step)

Follow this simple guide to begin extracting Google Play Store data instantly:

1.  Log in to Apify  
    Create a free account or sign in. 🆓  
      
    
2.  Select the Actor  
    Search for Google Play Data Extractor, Google Play Scraper, or similar in the Apify Store.  
      
    
3.  Enter Input Data  
    Paste one or multiple app URLs or package IDs into the input field.  
      
    
4.  Choose Options  
    Set preferences such as:  
      
    

*   output format  
      
    
*   depth (app details, reviews, etc.)  
      
    
*   screenshot extraction  
      
    

6.  Run the Actor ▶  
    Start the scraper—data will automatically be collected at scale.  
      
    
7.  Download Results  
    Export your results in JSON, CSV, or Excel.  
      
    

This workflow suits beginners as well as developers using python, npm, or automation systems for continuous data extraction.

* * *

### 🎯 Use Cases

Here’s how businesses and individuals benefit from a Google Play Scraper:

*   📈 Market Research – Analyze competitors, discover rising apps, and track categories.  
      
    
*   🔍 SEO Optimization – Extract keywords, descriptions, and metadata for ASO improvement.  
      
    
*   🧠 Sentiment Analysis – Use reviews to understand customer opinions using NLP.  
      
    
*   🟢 Lead Generation – Identify developers, publishers, and niches.  
      
    
*   🛠️ App Development Insights – Monitor feature updates and user complaints.  
      
    
*   📊 Trend Tracking – Compare installs, ratings, and performance over time.  
      
    
*   🤝 Agency Workflows – Perfect for app marketing, consulting, and auditing clients.  
      
    

Whether you want instant data scraper for android, google play apk downloader online, or full store insights—this extractor covers all needs.

* * *

### ⭐ Why Choose Us?

You get more power, speed, and accuracy than traditional web plugins or open-source scripts:

*   💎 Reliable & Scalable Infrastructure  
      
    
*   🧠 NLP-Optimized Outputs for deeper insights  
      
    
*   🖥️ Developer-Friendly API  
      
    
*   ❤️ User-Friendly UI  
      
    
*   🔐 Secure & Compliant  
      
    
*   💬 24/7 Support  
      
    

If you're comparing options like instant data scraper free, google play scraper npm, or GitHub scripts, this professional extractor offers unmatched performance.

* * *

### 📈 How Many Results Can You Scrape with Google Play Data Extractor?

One of the biggest benefits is massive scalability. Whether you're scraping:

*   A single app  
      
    
*   A full category  
      
    
*   A list of thousands of package IDs  
      
    

…the extractor processes data efficiently and reliably. ⚙️

It supports batch scraping, meaning you can input hundreds or thousands of URLs or keywords to automatically crawl apps at scale. This is far beyond what tools like browser-based Instant Data Scraper can handle.

You can extract:

*   Full category listings  
      
    
*   Top charts  
      
    
*   Keyword-based search results  
      
    
*   Developer portfolios  
      
    
*   Review pages with pagination  
      
    

The system is designed for high-volume workflows, making it suitable for research companies, enterprise clients, and automation developers who rely on google data extraction for insights. No need for manual work, proxies, or unstable extensions.

* * *

### ⚖️ Is It Legal to Scrape Google Play Data?

Scraping publicly available data from Google Play is generally legal when done responsibly. However:

*   ✔ You must follow Google's Terms of Service.  
      
    
*   ✔ You should not access private or restricted data.  
      
    
*   ✔ You must avoid harming servers or bypassing security.  
      
    
*   ✔ Use data ethically for research, analysis, or personal use.  
      
    

Tools like this are designed to comply with fair-use guidelines by extracting public metadata only—similar to using the website manually, just automated. Always ensure your use case is transparent and compliant.

* * *

### 🧾 Input Parameters

#### JSON Example
```json
{
  "startUrls": [
    "https://play.google.com/store/apps/details?id=com.supercell.brawlstars",
    "com.supercell.brawlstars",
    "@username",
    "productivity apps"
  ],
  "maxComments": 10,
  "sortOrder": "most_relevant",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "language": "en",
  "country": "US"
}
````

### 📤 Output Format

#### JSON Example

```json
{
  "appId": "com.supercell.brawlstars",
  "title": "Brawl Stars",
  "description": "Fast-paced multiplayer battle royale game...",
  "summary": "Fast-paced 3v3 multiplayer battle game",
  "developer": "Supercell",
  "score": 4.2,
  "scoreText": "4,2",
  "ratings": 125000000,
  "reviews": [
    {
      "reviewId": "abc123",
      "rating": 5,
      "reviewer": "John Doe",
      "date": "2024-01-15",
      "body": "Amazing game with great graphics!",
      "helpfulCounts": 42,
      "position": 1
    }
  ],
  "reviews_count": 10,
  "installs": "500.000.000+",
  "price": 0,
  "free": true,
  "genre": "Action",
  "contentRating": "Rated for 12+",
  "updated": 1700000000,
  "version": "50.123",
  "androidVersion": "5.1",
  "url": "https://play.google.com/store/apps/details?id=com.supercell.brawlstars"
}
```

### ❓ FAQ

#### 1️⃣ Is Google Play Data Extractor free?

Yes, a free tier is available with limited scraping capacity.

#### 2️⃣ Can I extract APK files?

This tool focuses on data extraction, but you can pair it with google play apk downloader online services.

#### 3️⃣ Does it work on Android?

Yes! Many users search for google play data extractor android, and you can run the API from any device.

#### 4️⃣ Do I need coding skills?

No—no coding is required, though developers can use python or npm integrations.

#### 5️⃣ Can I scrape thousands of apps?

Yes, bulk scraping is fully supported.

#### 6️⃣ Is scraping Google Play legal?

Scraping public data is generally allowed but must follow Google's terms.

#### 7️⃣ Does it extract reviews?

Absolutely—reviews, ratings, and sentiment-friendly data are all supported.

### Conclusion ✨

The Google Play Data Extractor is a powerful, scalable, and user-friendly tool for gathering app insights, reviews, and market data. Whether for research, SEO, or competitive analysis, it delivers fast, accurate, and structured results—far beyond manual methods or basic scraping extensions. Perfect for professionals and beginners alike.

# Actor input Schema

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

One or more app URLs or package names. Example: https://play.google.com/store/apps/details?id=com.supercell.brawlstars or com.supercell.brawlstars

## `deviceType` (type: `string`):

Device type to scrape reviews from: mobile, tablet, or chromebook.

## `sortBy` (type: `string`):

Order of reviews: Most Relevant, Newest, or by Rating.

## `rating` (type: `integer`):

Only include reviews with this star rating (1–5). Leave empty for all ratings.

## `startPage` (type: `integer`):

Page number to start from (1 = first page).

## `pagesToScrape` (type: `integer`):

Max number of pages per app. Use -1 (default) for unlimited — the run stops at maxReviews instead. Each page returns up to reviewsPerPage reviews.

## `reviewsPerPage` (type: `integer`):

How many reviews to request per page (API may return fewer).

## `maxReviews` (type: `integer`):

Maximum total reviews per app. Use -1 for no limit (up to 10000).

## `ratingFilter` (type: `array`):

Only include reviews with these star ratings (e.g. 1, 2, 5). Overrides single rating if set.

## `language` (type: `array`):

Only include reviews in these languages. Format: code - Language name (e.g. en - English, fr - French).

## `keywords` (type: `array`):

Only include reviews that contain any of these keywords (case-insensitive).

## `endDate` (type: `string`):

Only include reviews up to this date (YYYY-MM-DD). Leave empty for no limit.

## `recentDays` (type: `integer`):

Only include reviews from the last N days. Use 0 for no limit.

## `uniqueOnly` (type: `boolean`):

Remove duplicate reviews by review ID.

## `appVersion` (type: `array`):

Only include reviews for these app versions (e.g. 65.165).

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

Choose proxies for requests. Falls back to residential proxy if blocked.

## Actor input object example

```json
{
  "startUrls": [
    "https://play.google.com/store/apps/details?id=com.supercell.brawlstars"
  ],
  "deviceType": "mobile",
  "sortBy": "mostRelevant",
  "rating": null,
  "startPage": 1,
  "pagesToScrape": -1,
  "reviewsPerPage": 10,
  "maxReviews": 10,
  "endDate": "",
  "recentDays": 0,
  "uniqueOnly": true,
  "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/apps/details?id=com.supercell.brawlstars"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilotapi/google-play-store-review-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 = {
    "startUrls": ["https://play.google.com/store/apps/details?id=com.supercell.brawlstars"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapepilotapi/google-play-store-review-scraper").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/apps/details?id=com.supercell.brawlstars"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapepilotapi/google-play-store-review-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Play Store Review Scraper",
        "version": "0.2",
        "x-build-id": "LyddezYPJf4v7BRsR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapepilotapi~google-play-store-review-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapepilotapi-google-play-store-review-scraper",
                "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/scrapepilotapi~google-play-store-review-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapepilotapi-google-play-store-review-scraper",
                "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/scrapepilotapi~google-play-store-review-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapepilotapi-google-play-store-review-scraper",
                "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": "🔗 App Package Name or URL (required)",
                        "type": "array",
                        "description": "One or more app URLs or package names. Example: https://play.google.com/store/apps/details?id=com.supercell.brawlstars or com.supercell.brawlstars",
                        "items": {
                            "type": "string"
                        }
                    },
                    "deviceType": {
                        "title": "📲 Device Type",
                        "enum": [
                            "mobile",
                            "tablet",
                            "chromebook"
                        ],
                        "type": "string",
                        "description": "Device type to scrape reviews from: mobile, tablet, or chromebook.",
                        "default": "mobile"
                    },
                    "sortBy": {
                        "title": "↕️ Sort By",
                        "enum": [
                            "mostRelevant",
                            "newest",
                            "rating"
                        ],
                        "type": "string",
                        "description": "Order of reviews: Most Relevant, Newest, or by Rating.",
                        "default": "mostRelevant"
                    },
                    "rating": {
                        "title": "⭐ Fetch Reviews by Rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only include reviews with this star rating (1–5). Leave empty for all ratings.",
                        "default": null
                    },
                    "startPage": {
                        "title": "📄 Start Page",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Page number to start from (1 = first page).",
                        "default": 1
                    },
                    "pagesToScrape": {
                        "title": "📑 Pages to Scrape",
                        "minimum": -1,
                        "type": "integer",
                        "description": "Max number of pages per app. Use -1 (default) for unlimited — the run stops at maxReviews instead. Each page returns up to reviewsPerPage reviews.",
                        "default": -1
                    },
                    "reviewsPerPage": {
                        "title": "📊 Reviews per Page",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "How many reviews to request per page (API may return fewer).",
                        "default": 10
                    },
                    "maxReviews": {
                        "title": "🎯 Max Reviews",
                        "minimum": -1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum total reviews per app. Use -1 for no limit (up to 10000).",
                        "default": 10
                    },
                    "ratingFilter": {
                        "title": "⭐ Rating Filter (multiple)",
                        "type": "array",
                        "description": "Only include reviews with these star ratings (e.g. 1, 2, 5). Overrides single rating if set.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5"
                            ]
                        }
                    },
                    "language": {
                        "title": "🌐 Language Filter",
                        "type": "array",
                        "description": "Only include reviews in these languages. Format: code - Language name (e.g. en - English, fr - French).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "en - English",
                                "es - Spanish",
                                "fr - French",
                                "de - German",
                                "it - Italian",
                                "pt - Portuguese",
                                "ru - Russian",
                                "ja - Japanese",
                                "ko - Korean",
                                "zh - Chinese",
                                "ar - Arabic",
                                "hi - Hindi",
                                "tr - Turkish",
                                "nl - Dutch",
                                "pl - Polish",
                                "vi - Vietnamese",
                                "th - Thai",
                                "id - Indonesian",
                                "ms - Malay",
                                "uk - Ukrainian",
                                "sv - Swedish",
                                "da - Danish",
                                "no - Norwegian",
                                "fi - Finnish",
                                "el - Greek",
                                "he - Hebrew",
                                "ro - Romanian",
                                "hu - Hungarian",
                                "cs - Czech",
                                "sk - Slovak",
                                "bg - Bulgarian",
                                "hr - Croatian",
                                "sr - Serbian",
                                "sl - Slovenian",
                                "et - Estonian",
                                "lv - Latvian",
                                "lt - Lithuanian"
                            ]
                        }
                    },
                    "keywords": {
                        "title": "🔍 Keywords Filter",
                        "type": "array",
                        "description": "Only include reviews that contain any of these keywords (case-insensitive).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "endDate": {
                        "title": "📅 End Date",
                        "type": "string",
                        "description": "Only include reviews up to this date (YYYY-MM-DD). Leave empty for no limit.",
                        "default": ""
                    },
                    "recentDays": {
                        "title": "🕐 Recent Days",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include reviews from the last N days. Use 0 for no limit.",
                        "default": 0
                    },
                    "uniqueOnly": {
                        "title": "✨ Unique Reviews Only",
                        "type": "boolean",
                        "description": "Remove duplicate reviews by review ID.",
                        "default": true
                    },
                    "appVersion": {
                        "title": "📦 App Version Filter",
                        "type": "array",
                        "description": "Only include reviews for these app versions (e.g. 65.165).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "🔒 Proxy Configuration",
                        "type": "object",
                        "description": "Choose proxies for requests. Falls back to residential proxy if blocked."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
