Google Play Keywords Discovery Tool avatar

Google Play Keywords Discovery Tool

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Google Play Keywords Discovery Tool

Google Play Keywords Discovery Tool

Discover untapped keywords and search suggestions from Google Play Store in real-time. Get comprehensive insights into search trends and long-tail opportunities to supercharge your ASO keyword research.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

23 days ago

Last modified

Share

Google Play Keywords Discovery Tool discovers source-backed autocomplete suggestions from Google's public Google Play suggestion endpoint. It aggregates duplicates across deterministic seed, character, and suffix queries without inventing search volume, trend, difficulty, or ranking metrics.

Input

Use keywords for one to twenty seed phrases, or the compatibility alias keyword for one seed. country defaults to us, language to en, expandAlphabet to true, maxQueries to 100, and maxKeywords to 200.

A seed is required. The visible schema prefill and checked-in example use photo editor; runtime input without either seed field fails validation rather than inventing a query. Existing saved tasks are not changed by the example.

{
"keywords": ["photo editor", "video editor"],
"country": "us",
"language": "en",
"expandAlphabet": true,
"expansionChars": "abcdefghijklmnopqrstuvwxyz0123456789",
"maxQueries": 100,
"maxKeywords": 200
}

Requests are bounded by requestTimeoutMs, maxRequestRetries, requestDelayMs, and maxResponseBytes. fingerprintProfile, proxySessionId, and proxyConfiguration remain supported. A configured Apify proxy is used with an optional fixed session; requests are direct by default.

The smaller checked-in .actor/input.json example plans six queries (the seed and five character expansions), caps output at 50 keywords and pauses between requests. Each expansion is a separate public suggestion query, not a page of search results. The endpoint provides no verified pagination or total search-volume figure. Larger limits mean more requests and potentially more dataset records; stop limits do not guarantee that many distinct suggestions.

For deterministic local QA, use fixtureJson or a relative fixtureFile under test/fixtures or `.actor/fixtures. No network request is made in fixture mode.

{
"keyword": "photo editor",
"expandAlphabet": false,
"maxQueries": 1,
"fixtureFile": "test/fixtures/photo-editor.json"
}

Output

Each unique suggestion preserves the existing keyword, category, subtype, seed, query, and source fields, plus a stable recordType, dataAvailable, and recordId. Query provenance includes first discovery position/rank, all contributing queries and source URLs, response type/status, request attempt, and bounded response hash/size/fetch time. Derived helpers include normalized keyword, word and character counts, exact-seed/starts-with-seed flags, and added terms.

The default evidence view also exposes suggestionTypes (source query/nav codes), suggestionLanguages from the encoded source descriptor, and queryObservations. Each observation retains its query, query index, observed suggestion position and any source category/type/language. This preserves changes across queries instead of keeping only the first position. A suggestion rank is its position in that response, not an app ranking, popularity, demand, search volume or difficulty score. Source apps and books categories and opaque subtype codes are retained as supplied, without converting them into inferred app metadata.

{
"recordType": "google-play-keyword",
"dataAvailable": true,
"recordId": "photo editor free",
"position": 1,
"keyword": "photo editor free",
"normalizedKeyword": "photo editor free",
"wordCount": 3,
"isExactSeed": false,
"startsWithSeed": true,
"seedKeyword": "photo editor",
"firstQuery": "photo editor",
"category": "apps",
"sourceUrl": "https://suggestqueries.google.com/complete/search?client=firefox&ds=play&q=photo+editor&hl=en&gl=US",
"httpStatus": 200,
"sourceType": "http",
"scrapedAt": "2026-09-09T00:00:00.000Z"
}

Failed queries can be emitted as minimal diagnostic rows containing only url, error, errorCode, and scrapedAt when includeDiagnostics is enabled. The bounded run summary is written to OUTPUT and OUTPUT_SUMMARY and linked from the Output tab.

Any failed query keeps the overall run failed/partial even when diagnostic rows are disabled. Useful suggestions from successful queries remain available. HTTP401/403/429 stops retries and later query expansion. A valid empty response is counted separately from a failed request, but an empty dataset is not presented as successful discovery.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Local development

npm ci
npm run lint
npm test
npm run validate
npm run check
apify run --purge --input-file qa-inputs/local-fixture.json

Respect Google terms, robots rules, and reasonable request rates. Autocomplete suggestions and category/subtype annotations can vary by locale and over time.