Google Play Store Scraper
Pricing
from $3.99 / 1,000 results
Go to Apify Store
Google Play Store Scraper
Collect normalized app metadata from public Google Play detail, search, and category pages with bounded requests.
Google Play Store Scraper
Pricing
from $3.99 / 1,000 results
Collect normalized app metadata from public Google Play detail, search, and category pages with bounded requests.
You can access the Google Play Store Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "2.0", "x-build-id": "sCEzgL3N25dvUZZsP" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/googleapi~google-play-store-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-googleapi-google-play-store-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/googleapi~google-play-store-scraper/runs": { "post": { "operationId": "runs-sync-googleapi-google-play-store-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/googleapi~google-play-store-scraper/run-sync": { "post": { "operationId": "run-sync-googleapi-google-play-store-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": { "startUrls": { "title": "Start URLs", "maxItems": 50, "type": "array", "description": "Public HTTPS Google Play detail, search, or category pages.", "items": { "type": "object", "properties": { "url": { "title": "Public URL", "description": "HTTPS play.google.com/store URL.", "type": "string" } }, "required": [ "url" ], "additionalProperties": false } }, "sourceUrls": { "title": "Source URL aliases", "maxItems": 50, "type": "array", "description": "Compatibility list of public Google Play URLs.", "items": { "type": "string" } }, "urls": { "title": "URL aliases", "maxItems": 50, "type": "array", "description": "Compatibility list of public Google Play URLs.", "items": { "type": "string" } }, "url": { "title": "Single URL alias", "type": "string", "description": "One public Google Play URL." }, "appId": { "title": "App ID", "pattern": "^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)+$", "type": "string", "description": "Google Play package ID." }, "appIds": { "title": "App IDs", "maxItems": 50, "type": "array", "description": "Google Play package IDs.", "items": { "type": "string", "pattern": "^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)+$" } }, "category": { "title": "Category", "pattern": "^[A-Za-z0-9_]+$", "type": "string", "description": "Optional Play category slug such as TRAVEL_AND_LOCAL." }, "searchTerm": { "title": "Search term", "maxLength": 200, "type": "string", "description": "Term used with the public Play app search page." }, "searchTerms": { "title": "Search terms", "maxItems": 20, "type": "array", "description": "Terms used with public Play app search pages.", "items": { "type": "string", "maxLength": 200 } }, "maxApps": { "title": "Maximum discovered apps per source", "minimum": 1, "maximum": 100, "type": "integer", "description": "Maximum app cards read from each search or category source page.", "default": 20 }, "page": { "title": "Source page", "minimum": 1, "maximum": 1, "type": "integer", "description": "Google Play currently exposes no stable numeric offset for its app search/category pages. This Actor reads the first public result view only, so page is fixed at 1.", "default": 1 }, "maxPages": { "title": "Maximum source pages", "minimum": 1, "maximum": 50, "type": "integer", "description": "Maximum number of explicitly supplied Google Play source URLs to process. Each source URL is one page; app-detail requests are separately bounded by maxDetailApps.", "default": 10 }, "maxTargets": { "title": "Maximum source URLs (compatibility alias)", "minimum": 1, "maximum": 50, "type": "integer", "description": "Compatibility alias for maxPages. If both are supplied, they must match." }, "maxItems": { "title": "Maximum output apps", "minimum": 1, "maximum": 500, "type": "integer", "description": "Maximum normalized app records across all sources.", "default": 100 }, "maxResults": { "title": "Maximum output alias", "minimum": 1, "maximum": 500, "type": "integer", "description": "Compatibility alias for maxItems." }, "locale": { "title": "Locale", "pattern": "^[a-z]{2}(?:[-_][A-Z]{2})?$", "type": "string", "description": "Language-country locale such as en-US." }, "language": { "title": "Language", "pattern": "^[a-z]{2}$", "type": "string", "description": "Two-letter Google Play language code." }, "country": { "title": "Country", "pattern": "^[A-Za-z]{2}$", "type": "string", "description": "Two-letter Google Play country code." }, "location": { "title": "Country alias", "pattern": "^[A-Za-z]{2}$", "type": "string", "description": "Compatibility alias for country." }, "deduplicate": { "title": "Deduplicate apps", "type": "boolean", "description": "Deduplicate repeated package IDs across sources.", "default": true }, "includeAppDetails": { "title": "Enrich search results with app details", "type": "boolean", "description": "Optionally fetch each discovered app's public detail page for rich records. Disabled by default; bounded by maxDetailApps.", "default": false }, "maxDetailApps": { "title": "Maximum app detail pages", "minimum": 1, "maximum": 100, "type": "integer", "description": "Maximum discovered app detail pages fetched when includeAppDetails is enabled.", "default": 100 }, "requestTimeoutSecs": { "title": "Request timeout", "minimum": 5, "maximum": 120, "type": "integer", "description": "Maximum seconds per public request.", "default": 30 }, "requestTimeoutMs": { "title": "Timeout alias", "minimum": 5000, "maximum": 120000, "type": "integer", "description": "Compatibility timeout in milliseconds." }, "timeoutSecs": { "title": "Timeout alias", "minimum": 5, "maximum": 120, "type": "integer", "description": "Compatibility alias for requestTimeoutSecs." }, "maxRequestRetries": { "title": "Request retries", "minimum": 0, "maximum": 3, "type": "integer", "description": "Finite retries for transient public-request failures.", "default": 1 }, "requestDelayMs": { "title": "Request delay", "minimum": 0, "maximum": 10000, "type": "integer", "description": "Delay before later public requests.", "default": 250 }, "maxResponseBytes": { "title": "Maximum response bytes", "minimum": 100000, "maximum": 5000000, "type": "integer", "description": "Maximum HTML bytes accepted per public page.", "default": 2500000 }, "userAgent": { "title": "User agent", "maxLength": 300, "type": "string", "description": "Optional ordinary browser user agent." }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Optional active Apify Proxy configuration." } } }, "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 }, "PROXY_UNBLOCKER_UNITS": { "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 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Google Play Store Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: