Google Play Feature Request Scraper
Pricing
from $3.99 / 1,000 results
Go to Apify Store
Google Play Feature Request Scraper
Extract explicit feature requests and product gaps from public app reviews.
Google Play Feature Request Scraper
Pricing
from $3.99 / 1,000 results
Extract explicit feature requests and product gaps from public app reviews.
You can access the Google Play Feature Request 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": "1.0", "x-build-id": "Jfp1Pf31ayPDrsdMP" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/googleapi~google-play-feature-request-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-googleapi-google-play-feature-request-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-feature-request-scraper/runs": { "post": { "operationId": "runs-sync-googleapi-google-play-feature-request-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-feature-request-scraper/run-sync": { "post": { "operationId": "run-sync-googleapi-google-play-feature-request-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": { "appId": { "title": "App ID", "pattern": "^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)+$", "type": "string", "description": "Android package ID for one app." }, "appIds": { "title": "App IDs", "maxItems": 50, "type": "array", "description": "Android package IDs to inspect.", "items": { "type": "string", "pattern": "^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)+$" } }, "searchTerm": { "title": "Search term", "maxLength": 200, "type": "string", "description": "One public Google Play app search term." }, "searchTerms": { "title": "Search terms", "maxItems": 20, "type": "array", "description": "Public Google Play app search terms.", "items": { "type": "string", "maxLength": 200 } }, "startUrls": { "title": "Start URLs", "maxItems": 50, "type": "array", "description": "Public Google Play app detail, review, or app-search 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 alias for public source URLs.", "items": { "type": "string" } }, "urls": { "title": "URL aliases", "maxItems": 50, "type": "array", "description": "Compatibility alias for public source URLs.", "items": { "type": "string" } }, "url": { "title": "Single URL alias", "type": "string", "description": "Compatibility alias for one public Google Play URL." }, "maxApps": { "title": "Maximum apps per search", "minimum": 1, "maximum": 100, "type": "integer", "description": "Maximum app detail pages opened from one public search result page.", "default": 20 }, "maxReviews": { "title": "Maximum reviews per app", "minimum": 1, "maximum": 500, "type": "integer", "description": "Maximum unique reviews classified per app from the selected review-feed pages. Full review text is retained.", "default": 50 }, "maxTargets": { "title": "Maximum source workflows", "minimum": 1, "maximum": 50, "type": "integer", "description": "Maximum input sources processed in one run.", "default": 10 }, "maxItems": { "title": "Maximum request records", "minimum": 1, "maximum": 500, "type": "integer", "description": "Maximum feature-request review records saved across all apps and sources.", "default": 100 }, "maxResults": { "title": "Maximum request records 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.", "default": "en-US" }, "language": { "title": "Language", "pattern": "^[a-z]{2}$", "type": "string", "description": "Two-letter Google Play language code.", "default": "en" }, "country": { "title": "Country", "pattern": "^[A-Za-z]{2}$", "type": "string", "description": "Two-letter Google Play country code.", "default": "US" }, "location": { "title": "Country alias", "pattern": "^[A-Za-z]{2}$", "type": "string", "description": "Compatibility alias for country." }, "deduplicate": { "title": "Deduplicate reviews", "type": "boolean", "description": "Deduplicate records by app and public review ID, with a text-and-date fallback when no ID is exposed.", "default": true }, "page": { "title": "Starting page", "minimum": 1, "maximum": 25, "type": "integer", "description": "One-based starting review-feed page. Earlier cursors are fetched and skipped; page must not exceed maxPages.", "default": 1 }, "maxPages": { "title": "Maximum pages", "minimum": 1, "maximum": 25, "type": "integer", "description": "Maximum review-service page requests per app, including cursor traversal before the starting page. Each page contains at most 20 reviews.", "default": 3 }, "requestTimeoutSecs": { "title": "Request timeout (seconds)", "minimum": 5, "maximum": 120, "type": "integer", "description": "Maximum duration for one public HTTP request.", "default": 30 }, "requestTimeoutMs": { "title": "Request timeout alias (milliseconds)", "minimum": 5000, "maximum": 120000, "type": "integer", "description": "Compatibility alias for requestTimeoutSecs. If both are provided, they must agree." }, "timeoutSecs": { "title": "Timeout alias (seconds)", "minimum": 5, "maximum": 120, "type": "integer", "description": "Compatibility alias for requestTimeoutSecs." }, "maxRequestRetries": { "title": "Transient request retries", "minimum": 0, "maximum": 3, "type": "integer", "description": "Finite retries for network failures and server errors. HTTP 403, HTTP 429, and access challenges are not retried.", "default": 1 }, "maxConcurrency": { "title": "Maximum concurrency", "minimum": 1, "maximum": 5, "type": "integer", "description": "Maximum simultaneous public source workflows.", "default": 1 }, "requestDelayMs": { "title": "Request delay (milliseconds)", "minimum": 0, "maximum": 10000, "type": "integer", "description": "Pause between later requests; the default is one second.", "default": 1000 }, "maxResponseBytes": { "title": "Maximum response size (bytes)", "minimum": 100000, "maximum": 5000000, "type": "integer", "description": "Maximum bytes read from one public page.", "default": 2500000 }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Optional Apify Proxy settings for public Google Play HTTP requests. If omitted, requests connect directly. A configured proxy does not bypass access controls; access challenges and HTTP 403/429 responses still stop the affected source." } } }, "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 Feature Request 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: