# Google Play Scraper (`scrapeai/google-play-scraper`) Actor

Search and scrape app listings from the Google Play Store by keyword or app URL. Extracts app name, developer, rating, review count, price, category, installs, and optionally user reviews — ideal for Android ASO research, competitor app analysis, and app market intelligence.

- **URL**: https://apify.com/scrapeai/google-play-scraper.md
- **Developed by:** [ScrapeAI](https://apify.com/scrapeai) (community)
- **Categories:** Developer tools, E-commerce, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/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

## Google Play Scraper

Collect structured mobile app datasets from the Google Play Store with app metadata, ratings, reviews, rankings, and publisher details.

### Features

- **Advanced app discovery** — scrape Google Play Store listings using targeted keywords and categories
- **Direct app URL support** — extract data from individual app pages with provided links
- **Adjustable extraction limits** — customize output volume for each crawl session
- **Optional review scraping** — collect customer reviews and rating information when needed
- **Apify cloud compatible** — designed for automated runs, proxy management, and webhook workflows

### Use Cases

- Automated app store intelligence — gather large volumes of app marketplace data for analytics and reporting
- Dataset creation pipelines — convert raw app store information into structured datasets for BI and AI workflows
- Real-time change detection — monitor listing updates, version changes, and review growth trends
- Competitive market analysis — compare app rankings, ratings, installs, and user feedback across competitors

### Example Input

```json
{
	"query": "fitness tracker",
	"maxItems": 10
}
````

#### Example Output

```json
{
	"appId": "com.myfitnesspal.android",
	"appName": "MyFitnessPal: Calorie Counter",
	"developer": "MyFitnessPal, Inc.",
	"rating": 4.5,
	"thumbnail": "https://play-lh.googleusercontent.com/VDmmLoS__AlWJdUzOEOaw9dukSLIFlhehgV0FgqShqhQ7kHVkH0k4QImbjeX_CKCz2UfUhZ9NH0441ZqnLQV=w240-h480-rw",
	"price": "Free",
	"containsAds": true,
	"hasInAppPurchases": true,
	"link": "https://play.google.com/store/apps/details?id=com.myfitnesspal.android",
	"developerLink": "https://play.google.com/store/apps/developer?id=MyFitnessPal,+Inc.",
	"reviewCount": "2.9M",
	"installs": "100M+",
	"description": "Achieve your nutrition, calorie, macro, and fitness goals with MyFitnessPal. MyFitnessPal is a comprehensive food and fitness tracker, with everything you need to reach your goals. Macros, calories, food, and workouts – track it all in one place.\n\nChange your habits with fitness and food. Download our health and nutrition app and start your free Premium trial today. With MyFitnessPal, you have access to exclusive food inspiration, an intermittent fasting tracker, fitness logging tools, expert guidance, and the calorie tracker. You’ll soon discover why MyFitnessPal is the #1 nutrition and food tracking app in the U.S and has been featured in the New York Times, Forbes, the Today Show, and U.S. News & World Report.\n\n\nMyFitnessPal is more than a calorie tracker & food journal. Monitor your health and fitness progress within the app.\n\nMYFITNESSPAL FEATURES\n\nFood Tracker – Track Calories & Macros\n■ Food tracking made easy. Quickly log your meals throughout your day from over 20.5 million foods (including restaurant dishes) from one of the largest food databases available\n■ Macro tracker lets you see carbs, fat, & protein breakdown—no need for a separate app! Set goals for macros, protein, sodium, fiber, and more\n■ Make sure you’re staying hydrated with our water tracker\n\nFitness – Track Workouts, Weight, and Progress\n■ Activity Tracker – Add workouts and steps with the integrated fitness tracker\n■ See Your Fitness Progress – Track at a glance, or analyze the details of your diet & macros\n■ Stay Inspired – Keep your diet and fitness routine exciting with workouts and food inspiration\n■ Exercise and Count Calories – See how your workouts, fitness, and diet affect daily calorie goals\n■ Track With Wear OS – A calorie counter, water tracker, and macro tracker on your watch. Add complications to the home screen for faster logging, and the tile for tracking different nutrients at a glance.\n\nWorkouts & Meal Plans, Tailored to You\n■ Customize your health & fitness goals – Weight loss, weight gain, weight maintenance, nutrition, & fitness\n■ Personalized dashboards – Fitness, health, and diet stats are all in one place to easily see and track your progress\n\n■ Add Your Own Meals/Food Tracker – Save recipes and meals for quick logging and keep tabs on your diet\n■ Follow the new easy meal planner to simplify tracking and help hit your goals\n■ Connect 40+ Apps & Devices – From smartwatches, fitness trackers, and other health and fitness apps, track your intake and activity through your watch with WearOS\n■ Get Connected– Find friends and motivation in our active MyFitnessPal forums\n\nPremium\n■ Reach your goals with barcode scan, meal scan, and voice logging\n■ Customize macros and set custom goals\n■ Enjoy ad-free food logging with insights and comparisons built into premium\n■ Net Carbs Mode/Carb Tracker – Keep track of your low-carb or keto diet, view net carbs in your food\n\nPremium Plus - Expanded Features to Help Hit Your Goals\n■ All of the Premium features, like barcode scanning now available with meal planning\n■ Personalized meal plans, integrated grocery delivery, and smart meal tracking tools\n■ Your one-stop shop for meal planning, grocery shopping, food logging, and nutrition insights to help you reach your goals\n■ 1000s of healthy recipes to help you reach your goals\n\nMyFitnessPal is the leading health and nutrition app that helps you learn about your food habits, monitor your diet and conquer your health goals.\n\nDownload Today and Start Your Free Premium Trial\n\nView our terms & conditions and privacy policy:\nhttps://www.myfitnesspal.com/terms-of-service\nhttps://www.myfitnesspal.com/privacy-policy",
	"category": "",
	"lastUpdated": "Jun 1, 2026",
	"contentRating": "Rated for 3+",
	"screenshots": [],
	"position": 3
}
```

# Actor input Schema

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

Collection method — use search to find apps matching keywords or categories, or productUrl to scrape targeted app listings directly.

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

App search query — provide a keyword, app title, category, or topic to locate related Android apps.

## `productUrls` (type: `array`):

Play Store URLs — enter one or more app page URLs to collect app metadata, ratings, reviews, and developer information.

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

Maximum number of app results to retrieve

## `includeReviews` (type: `boolean`):

Whether to scrape user reviews for each app

## `deepScraping` (type: `boolean`):

Whether to visit each app's detail page for full data (description, installs, etc.)

## `gl` (type: `string`):

Two-letter country code for localized results (e.g. 'us', 'in', 'gb', 'de')

## `hl` (type: `string`):

Language code for the results (e.g. 'en', 'hi', 'de', 'fr')

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

Proxy configuration for the scraper

## Actor input object example

```json
{
  "mode": "search",
  "query": "fitness tracker",
  "productUrls": [],
  "maxItems": 50,
  "includeReviews": false,
  "deepScraping": true,
  "gl": "us",
  "hl": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "mode": "search",
    "query": "fitness tracker",
    "maxItems": 50,
    "gl": "us",
    "hl": "en",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeai/google-play-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 = {
    "mode": "search",
    "query": "fitness tracker",
    "maxItems": 50,
    "gl": "us",
    "hl": "en",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapeai/google-play-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 '{
  "mode": "search",
  "query": "fitness tracker",
  "maxItems": 50,
  "gl": "us",
  "hl": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapeai/google-play-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Play Scraper",
        "description": "Search and scrape app listings from the Google Play Store by keyword or app URL. Extracts app name, developer, rating, review count, price, category, installs, and optionally user reviews — ideal for Android ASO research, competitor app analysis, and app market intelligence.",
        "version": "0.0",
        "x-build-id": "yIoKb5NMqE2Eg0ffI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapeai~google-play-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapeai-google-play-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/scrapeai~google-play-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapeai-google-play-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/scrapeai~google-play-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapeai-google-play-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",
                "properties": {
                    "mode": {
                        "title": "Scraping Mode",
                        "enum": [
                            "search",
                            "productUrl"
                        ],
                        "type": "string",
                        "description": "Collection method — use search to find apps matching keywords or categories, or productUrl to scrape targeted app listings directly.",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "App search query — provide a keyword, app title, category, or topic to locate related Android apps.",
                        "default": "fitness tracker"
                    },
                    "productUrls": {
                        "title": "App URLs",
                        "type": "array",
                        "description": "Play Store URLs — enter one or more app page URLs to collect app metadata, ratings, reviews, and developer information.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Maximum Items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of app results to retrieve",
                        "default": 50
                    },
                    "includeReviews": {
                        "title": "Include Reviews",
                        "type": "boolean",
                        "description": "Whether to scrape user reviews for each app",
                        "default": false
                    },
                    "deepScraping": {
                        "title": "Deep Scraping",
                        "type": "boolean",
                        "description": "Whether to visit each app's detail page for full data (description, installs, etc.)",
                        "default": true
                    },
                    "gl": {
                        "title": "Country Code",
                        "type": "string",
                        "description": "Two-letter country code for localized results (e.g. 'us', 'in', 'gb', 'de')",
                        "default": "us"
                    },
                    "hl": {
                        "title": "Language Code",
                        "type": "string",
                        "description": "Language code for the results (e.g. 'en', 'hi', 'de', 'fr')",
                        "default": "en"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy configuration for the scraper",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
