App Store & Google Play Keyword Rank Tracker (ASO)
Pricing
from $2.00 / 1,000 keyword rank rows
App Store & Google Play Keyword Rank Tracker (ASO)
Track App Store and Google Play keyword ranks daily, with rank changes, top charts and keyword suggestions. Export CSV or pull via API.
Pricing
from $2.00 / 1,000 keyword rank rows
Rating
0.0
(0)
Developer
Carmentara OU
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Share
App Store & Google Play Keyword Rank Tracker (ASO)
Track where your apps and competitors rank for the keywords people type into Apple’s App Store and Google Play. Run it daily to get rank deltas, snapshot top charts, and expand your list with keyword suggestions.
- 🔎 Keyword ranks: position for each keyword × country × store, with previous rank and change
- 🎯 Tracked apps: rows for the apps you name (your app + competitors)
- 📈 Top charts: top-free/top-paid on both stores; Apple only for top-grossing
- 💡 Suggestions: autocomplete keywords on both stores
- 📤 Export to CSV, Excel, JSON, Google Sheets, or pull via the API
Who uses it
- ASO and growth teams, indie devs, agencies, data teams
- Anyone who needs daily keyword checks and chart snapshots with minimal upkeep
How to track keyword rankings
- Create a free Apify account.
- Open this Actor and set Mode to
keyword-ranks. - Add your Search keywords.
- Under Tracked apps, add your app id/bundle/package and a few competitors:
- Apple: numeric id (
571800810) or App Store URL or bundle id (com.calm.calmapp) - Google: package name (
com.calm.android) or Play URL - Tip: If you track different IDs per store, use explicit prefixes (
apple:...,google:...). Unprefixed entries are applied to every selected store (bundle id on Apple; package id on Google).
- Apple: numeric id (
- Turn on Only tracked apps if you only need your apps’ rows (cheapest).
- Click Start, then Save as a new task and Schedule it daily.
rankChange is positive when an app moved up. It compares with your last run via a delta key‑value store.
Input examples
Keyword ranks (only tracked apps, cheapest)
{"mode": "keyword-ranks","keywords": ["meditation", "sleep sounds"],"countries": ["us", "gb"],"stores": ["apple", "google"],"trackedApps": ["apple:571800810", "google:com.calm.android"],"onlyTrackedApps": true,"maxResultsPerKeyword": 30}
Top charts
{ "mode": "top-charts", "countries": ["us"], "stores": ["apple","google"], "charts": ["top-free"], "maxChartEntries": 50 }
Keyword suggestions
{ "mode": "keyword-suggestions", "keywords": ["sleep"], "countries": ["us"], "stores": ["apple","google"] }
Output
- keyword-ranks: one row per keyword × country × store with
trackedrank details and optionaltoplist (first N results) - top-charts: one row per chart entry with
previousRank/rankChange - keyword-suggestions: one row per suggestion with
position
Sample output (real)
Keyword ranks (second run, so previousRank/rankChange are filled)
{"store": "google","country": "us","language": "en","keyword": "meditation","checkedAt": "2026-10-05T07:41:29.384Z","resultsCount": 20,"tracked": [{"appId": "com.calm.android","title": "Calm - Sleep, Meditate, Relax","rank": 7,"previousRank": 7,"rankChange": 0,"status": "same"}],"top": [{ "rank": 1, "appId": "com.spotlightsix.zentimerlite2", "title": "Insight Timer - Meditation App", "developer": "Insight Network Inc", "rating": 4.6966915, "ratingCount": null, "price": "Free", "url": "https://play.google.com/store/apps/details?id=com.spotlightsix.zentimerlite2" },{ "rank": 2, "appId": "meditofoundation.medito", "title": "Medito: Meditation & Sleep", "developer": "Medito for Mindfulness, Meditation and Sleep", "rating": 4.783599, "ratingCount": null, "price": "Free", "url": "https://play.google.com/store/apps/details?id=meditofoundation.medito" },{ "rank": 3, "appId": "com.getsomeheadspace.android", "title": "Headspace: Sleep & Meditation", "developer": "Headspace for Meditation, Mindfulness and Sleep", "rating": 4.2566533, "ratingCount": null, "price": "Free", "url": "https://play.google.com/store/apps/details?id=com.getsomeheadspace.android" }],"sourceUrl": "https://play.google.com/store/search?q=meditation&c=apps&hl=en&gl=US"}
Top charts (first run for this chart)
{"store": "apple","country": "us","chart": "top-free","category": null,"rank": 1,"appId": "6760173601","title": "Muse from Meta","developer": "Meta Platforms, Inc.","rating": null,"ratingCount": null,"price": "Free","url": "https://apps.apple.com/us/app/muse-from-meta/id6760173601?uo=2","previousRank": null,"rankChange": null,"checkedAt": "2026-10-05T07:41:30.428Z"}
Keyword suggestions
{"store": "apple","country": "us","seed": "sleep","suggestion": "sleeper","position": 1,"checkedAt": "2026-10-05T07:41:31.043Z"}
How much does it cost?
You pay per row pushed (pay‑per‑event).
| What you get | Event name | Price |
|---|---|---|
| Keyword rank row (one keyword × country × store) | keyword-rank-check | $0.002 |
| Top chart entry row | chart-entry | $0.001 |
| Keyword suggestion row | keyword-suggestion | $0.0005 |
Example: 20 keywords × 5 countries × 2 stores = 200 rows/day → 6,000 rows/month → 6,000 × $0.002 = $12/month (plus any charts/suggestions you run).
Use “Max PPE charge (USD)” to hard‑cap what one run can cost. The run stops pushing rows at the cap.
Scheduling and deltas
- Save your input as a task and add a daily schedule.
previousRank/rankChangecompare with the previous run via a named key‑value store (Delta store name). Give different scheduled tasks different store names if you want separate histories.
Integrations
- API and clients: start runs and fetch results with the Apify API and the Python/JS clients.
- Zapier, Make, n8n, Google Sheets, Slack: wire results where your team works.
- AI agents (MCP): available through the Apify MCP server (
mcp.apify.com). See Apify docs for connecting agents to platform datasets and key‑value stores.
Limitations
- Google Play search depth is capped at 30 results per query by the underlying public endpoints.
- Apple top charts are limited to 100 entries by Apple’s official RSS.
- Google Play top‑grossing is currently unsupported (the public library returns top‑free). It’s skipped with a warning.
- Language defaults to
en. On Google Play it affects result titles. - Positions are what a logged‑out visitor sees; storefront personalization can cause slight differences.
FAQ
-
Is it allowed to scrape these results? The Actor reads public storefront pages and RSS endpoints that anyone can open without logging in. It doesn’t access accounts or private data. You’re responsible for how you use the data (especially personal data) under your local laws.
-
How often should I run it? Daily for keyword ranks and charts is typical. Use a scheduled task and keep the same keyword spelling to build a consistent history.
-
How are rank changes computed? The Actor stores the last seen ranks in a named key‑value store (Delta store name). Each run compares
rankwith the previous snapshot to producepreviousRankandrankChange. -
Why does a tracked app show
not-ranked? It wasn’t found within the scanned depth for that keyword/country/store on this run. IncreasemaxResultsPerKeyword(Apple: up to 200; Google: capped at 30 per query). -
Why only 30 Google results? Google Play’s public search endpoints return at most ~30 per query; the Actor caps to 30 and documents it to avoid misleading “not ranked” beyond that depth.
-
When should I use
apple:/google:prefixes? Use them when you track different identifiers per store. Unprefixed entries are applied to every selected store (bundle id on Apple; package id on Google).
Local development
See DEVELOPMENT.md for the dev quickstart.
License
MIT — © Carmentara