App Store & Google Play ASO keyword rank tracker + popularity
Pricing
from $2.00 / 1,000 ranking result rows
App Store & Google Play ASO keyword rank tracker + popularity
ASO keyword research for the App Store and Google Play: track keyword rankings for your app and competitors, get autocomplete suggestions, and Apple's own Search Popularity plus difficulty for every keyword. Built by the team behind trysonar.app.
Pricing
from $2.00 / 1,000 ranking result rows
Rating
5.0
(1)
Developer
Peter Šutarík
Maintained by CommunityActor stats
0
Bookmarked
126
Total users
44
Monthly active users
5 days ago
Last modified
Categories
Share
App Store & Google Play ASO keyword rank tracker — popularity and difficulty
Track App Store and Google Play keyword rankings, discover keyword suggestions, and get real search popularity and difficulty scores — the three data points every ASO workflow needs, in one actor. No account, no API key, no setup: enter keywords, run, get data.
Built by the team behind Sonar, the ASO keyword intelligence tool for indie iOS developers. This actor runs on the same production infrastructure — the data it returns is what the tool itself runs on.
What data does this ASO keyword tracker give you?
| Feature | Output |
|---|---|
| Keyword rank tracking | Where specific apps rank for each keyword on the App Store or Google Play (or the full top-N list per keyword) |
| Keyword suggestions | Autocomplete suggestions straight from App Store / Google Play search — the exact phrases users type |
| Search popularity & difficulty | Popularity scores (5–100, Apple's own Search Popularity for iOS wherever Apple reports one) and a 0–100 difficulty score |
How to track your app's keyword rankings
- Add your keywords (up to 100 per run) and your app's ID — the numeric track ID for iOS (e.g.
6479523618) or package name for Android (e.g.com.example.app). - Pick the store (
ios,android, orboth) and country. - Run — each keyword returns your app's rank, or
rank: nullif you're not in the top results. - Set it on an Apify Schedule (e.g. daily at 07:00) and you have an automated ASO rank tracker with popularity history accumulating in your dataset — for a fraction of the cost of a Sensor Tower or AppTweak seat.
Leave appIds empty to get the top-N ranked apps per keyword instead — ideal for competitor research and keyword scouting.
Use cases
- Indie developers — track your launch keywords daily and catch ranking drops before they cost you downloads
- ASO audits — pull rankings + popularity + difficulty for a keyword set in one run instead of three tools
- Competitor monitoring — top-N mode shows exactly who ranks for the keywords you care about
- Agencies & consultants — schedule per-client keyword sets and export the dataset to reports
- AI agents & pipelines — call it via the Apify API and get clean, typed JSON rows
Input example
{"keywords": ["meditation app", "sleep tracker"],"store": "ios","country": "us","appIds": ["6479523618"],"topN": 10,"includeSuggestions": true,"includePopularity": true}
With store: "both", include app IDs for both stores in appIds; IDs not found in a store's results return rank: null.
Output example
One dataset row per data point, discriminated by type:
{ "type": "ranking", "keyword": "meditation app", "store": "ios", "country": "us", "rank": 4, "appId": "6479523618", "appName": "…", "developer": "…", "rating": 4.8, "checkedAt": "2026-07-04T07:00:00.000Z" }{ "type": "suggestion", "keyword": "meditation app", "suggestion": "meditation app free", "store": "ios", "country": "us", "checkedAt": "…" }{ "type": "metrics", "keyword": "meditation app", "store": "ios", "country": "us", "popularity": 52, "popularityProxy": null, "popularitySource": "apple", "difficulty": 61, "measuredAt": "2026-10-14T05:30:28.000Z", "stale": false, "checkedAt": "…" }{ "type": "metrics", "keyword": "meditation timer", "store": "ios", "country": "us", "popularity": 5, "popularityProxy": 14, "popularitySource": "apple", "difficulty": 22, "measuredAt": "…", "stale": false, "checkedAt": "…" }
Metrics fields:
| Field | Meaning |
|---|---|
popularity | Search popularity, 5–100 |
popularitySource | apple = Apple's own Search Popularity, proxy = Sonar's estimate (always the case on Google Play) |
popularityProxy | Set when Apple reports its floor value of 5 — Sonar's estimate (5–37) of where the keyword sits below that floor |
difficulty | How hard it is to reach the top results, 0–100 |
measuredAt | When the store search behind difficulty was read |
stale | true when the values are 7 or more days old (they're refreshed in the background) |
error | Only on keywords that couldn't be served in this run — these rows are not charged |
Why the popularity score is different
Most ASO tools estimate keyword popularity from autocomplete order — a proxy. For iOS, this actor surfaces Apple's own Search Popularity, the same signal Apple shows advertisers, via the Sonar API.
Apple only reports values from 38 upward and shows everything below as 5, so most long-tail keywords read 5. For those, popularityProxy is Sonar's estimate of where the keyword sits inside that hidden band (5–37), so you can still tell a 5 that's nearly 30 from a 5 that nobody searches for.
If you want alerts, competitor tracking, review analysis, and an MCP server for AI agents on top of this data, check out Sonar.
Pricing (pay per event)
| Event | Meaning |
|---|---|
ranking-row | One ranking result row |
suggestion-row | One suggestion row |
metrics-row | One keyword's popularity + difficulty (premium) |
You only pay for the rows the run produces — no platform usage on top, so the event prices above are the whole bill. A focused 20-keyword daily rank check costs cents. The run respects your maximum charge: once it's reached, the run stops and nothing beyond it is stored or charged.
FAQ
Do I need an API key or any setup? No. Provide keywords, run, get data — popularity scores included. Everything is charged through your Apify account, pay-per-event.
Which countries are supported? Any two-letter country code (us, gb, de, jp, …). Rankings work in every storefront; App Store suggestions cover 115 storefronts and Google Play suggestions every market. Popularity and difficulty cover Sonar's 72 keyword-research markets — in other countries the run skips them with a warning and charges nothing for them.
How fresh is the data? Rankings and suggestions are fetched live from the stores on every run. Popularity and difficulty come from Sonar's production database: values measured in the last 7 days are returned as they are, older ones come back with stale: true and are refreshed in the background, and keywords Sonar has never seen are measured during the run.
Why does a keyword come back with an error? A keyword Sonar has never measured is computed on its scrape fleet. The run waits for it (up to about 3 minutes); if it still isn't ready, you get a row with error set and no charge, and the next run returns its values.
Can I run it on a schedule? Yes — that's the intended use. Add an Apify Schedule and you have a rank tracker with popularity history in your dataset.
Can I use it from the API or an AI agent? Yes, like any Apify actor: start a run via the API, read the dataset as JSON/CSV. Rows are typed (ranking / suggestion / metrics) for easy filtering.
Something not working? Open an issue in the Issues tab — this actor powers our own product, so it's actively maintained.