App Store Keyword Suggestions Scraper
Pricing
from $1.99 / 1,000 search results
App Store Keyword Suggestions Scraper
Extract source-backed public Apple App Store search suggestions from the official search-hints plist endpoint.
Pricing
from $1.99 / 1,000 search results
Rating
0.0
(0)
Developer
Search API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
What does App Store Search Suggestions do?
App Store Search Suggestions discovers public autocomplete phrases from Apple's official App Store search-hints service. It accepts one query or a bounded list of queries, validates Apple's XML/plist response before parsing, removes duplicates, and writes normalized records with search provenance. It does not access private accounts, user data, paid content, or restricted app information.
Why use App Store Search Suggestions?
Use the Actor for keyword research, App Store optimization, content planning, search-box testing, and localized suggestion discovery. Multiple queries are processed with a global query limit, optional include/exclude filters, deterministic sorting, global item limits, bounded concurrency, retries, timeouts, pacing, and dataset batching. The Actor supports direct requests, authorized Apify Proxy, and user-provided HTTP(S) proxies. Proxy credentials are never written to output or logs.
The Actor uses the structured plist response rather than scraping a rendered page. This is more stable for the public hints workflow and makes the extraction method explicit. Apple's hints service exposes suggestion terms and optional public search URLs; it does not provide a full app catalog record for every hint, so the dataset does not invent ratings, prices, developers, bundle IDs, or screenshots.
What data can it extract?
| Field group | Fields | Description |
|---|---|---|
| Identity | id, suggestion, normalizedSuggestion | Stable country-aware identity and source phrase. |
| Suggestion metrics | suggestionLength, suggestionWordCount, isExactQueryMatch | Unicode length, word count, and exact-match flag. |
| Query provenance | query, normalizedQuery, queryLength, queryWordCount, queryIndex, sourceRank | The submitted query and position in the bounded plan/source response. |
| Storefront | country, storefront, searchUrl, suggestionUrlAvailable | Apple storefront, canonical public search URL, and URL availability. |
| Transport | hintsRequestUrl, httpStatus, responseContentType, requestAttempts | Validated public request metadata. |
| Provenance | extractionMethod, source, scrapedAt | Structured plist extraction and timestamp. |
How to scrape Apple App Store suggestions
- Open the Actor in Apify Console and open the Input tab.
- Enter
queryfor one phrase, orqueriesfor multiple independent phrases. If both are supplied,queriestakes precedence. - Select a supported
country, choose limits or filters, and run the Actor. - Inspect the dataset or use the API, scheduling, monitoring, and integrations available in Apify.
How much will it cost?
The Actor makes one small public hints request per planned query. Apify compute usage depends on request count, delays, retries, concurrency, and run duration. Larger query lists and higher suggestion limits produce more dataset records; retries and proxy routing can increase duration. This Actor does not launch a browser, so it avoids browser startup cost for this endpoint.
Input
See the input tab for the complete configuration. The following are runnable examples.
Minimal input
{ "query": "photo editor" }
Multiple queries, filters, and sorting
{"queries": ["photo editor", "fitness tracker"],"country": "us","maxSuggestionsPerQuery": 10,"maxTotalQueries": 2,"maxItems": 15,"includeKeywords": ["photo"],"excludeKeywords": ["free"],"sortBy": "alphabetical"}
Developer options and proxy
{"query": "weather","requestDelayMs": 500,"maxConcurrency": 2,"maxRequestRetries": 2,"requestTimeoutSecs": 30,"datasetBatchSize": 25,"proxyConfiguration": { "useApifyProxy": false }}
Supported controls include country (us by default), maxSuggestionsPerQuery (1–30, default 30), maxTotalQueries (1–1000), maxItems (1–1000), sortBy (sourceOrder, alphabetical, lengthAsc, or lengthDesc), and string-array includeKeywords/excludeKeywords filters. Developer options are requestDelayMs (0–5000 ms, default 200), maxConcurrency (1–8, default 2), maxRequestRetries (0–5, default 2), requestTimeoutSecs (5–120, default 30), and datasetBatchSize (1–100, default 50). proxyConfiguration accepts useApifyProxy, proxyUrls, apifyProxyGroups, and apifyProxyCountry; custom URLs and Apify Proxy cannot be enabled together. Legacy aliases remain supported for compatibility.
The complete input schema is in .actor/input_schema.json. This table lists every accepted property, including deprecated aliases:
| Field | Type | Default |
|---|---|---|
query | string | photo editor |
queries | array of strings | — |
country | string | us |
maxSuggestionsPerQuery | integer | 30 |
maxTotalQueries | integer | 1 |
maxItems | integer | 30 |
includeKeywords | array of strings | — |
excludeKeywords | array of strings | — |
sortBy | string | sourceOrder |
requestDelayMs | integer | 200 |
maxConcurrency | integer | 2 |
maxRequestRetries | integer | 2 |
requestTimeoutSecs | integer | 30 |
datasetBatchSize | integer | 50 |
proxyConfiguration | object | {"useApifyProxy": false} |
limit | integer | — |
timeoutSecs | integer | — |
minDelayMs | integer | — |
maxRetries | integer | — |
useApifyProxy | boolean | — |
proxyUrls | array of strings | — |
proxyGroups | array of strings | — |
proxyCountryCode | string | — |
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Rows follow .actor/dataset_schema.json. The schema lists the exact types and required fields:
| Field | Type | Required |
|---|---|---|
id | string | Yes |
position | integer | Yes |
suggestion | string | Yes |
normalizedSuggestion | string | Yes |
suggestionLength | integer | Yes |
suggestionWordCount | integer | Yes |
isExactQueryMatch | boolean | Yes |
query | string | Yes |
normalizedQuery | string | Yes |
queryLength | integer | Yes |
queryWordCount | integer | Yes |
queryIndex | integer | Yes |
sourceRank | integer | Yes |
country | string | Yes |
storefront | string | Yes |
searchUrl | string | Yes |
suggestionUrlAvailable | boolean | Yes |
hintsRequestUrl | string | Yes |
httpStatus | integer | Yes |
responseContentType | string | Yes |
extractionMethod | string | Yes |
requestAttempts | integer | Yes |
source | string | Yes |
scrapedAt | string | Yes |
See the samples/sample-record.json from an Actor run. Apple currently returns a legacy search.itunes.apple.com search URL for this hint; opening it in Chrome displays “Connecting to the iTunes Store.” The Actor preserves Apple’s supplied URL and does not fabricate app-catalog fields that the hints response does not contain.
The OUTPUT key-value record contains run status, query/request counts, filter and duplicate counts, effective limits and developer settings, connection mode, and safe failure categories. Empty results are reported as no-results; access boundaries, malformed responses, timeouts, and network failures are not converted into fake suggestions.
Tips and advanced options
Use sourceOrder when you want Apple's response order. Use alphabetical, lengthAsc, or lengthDesc after cross-query deduplication when you need a deterministic research list. Keep concurrency and retries conservative for respectful public traffic. maxItems is global across all queries, while maxSuggestionsPerQuery is per query. Query lists are deduplicated before the global query cap is applied.
FAQ, support, and responsible use
If a run is empty or partial, inspect the OUTPUT summary for the status and bounded failure category, then retry with fewer queries or a longer timeout. Report reproducible issues in the Actor's Issues tab with the run ID and summary; use the API tab for programmatic access.
This Actor is not affiliated with Apple. Use only public data, follow Apple's terms and applicable rate limits, respect privacy and applicable law, and do not use it to access private or restricted information. Results can contain personal or commercial terms; users are responsible for their processing and legal basis.