ASO Keyword Rank Tracker: App Store & Google Play avatar

ASO Keyword Rank Tracker: App Store & Google Play

Pricing

from $0.70 / 1,000 rank rows

Go to Apify Store
ASO Keyword Rank Tracker: App Store & Google Play

ASO Keyword Rank Tracker: App Store & Google Play

Track where apps rank for any keyword on the App Store and Google Play in 57 countries, and do ASO keyword research with each store's own keyword suggestions (autocomplete). Top results in store order, the rank of every app you track, and Google Play read in each country's language.

Pricing

from $0.70 / 1,000 rank rows

Rating

0.0

(0)

Developer

Daniel Meshulam

Daniel Meshulam

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

an hour ago

Last modified

Share

See where any app ranks for any keyword on the App Store and Google Play, in 57 countries. Get the top results as each store orders them, the rank of every app you track, and the keyword ideas each store suggests, with rating, installs, developer and price.

No API key, no login, no Apple or Google developer account.

Why the ranks here are the store's ranks

Most keyword trackers read Apple's public Search API and report its order as the App Store ranking. It is not the same list. Measured on five keywords in September 2026, Apple's API put the right app in the right position for only 5 to 7 of the top 10 App Store results.

So this Actor reads the App Store's own search page for the top positions, which is the exact order a user sees (9 to 14 apps depending on the country, measured in all 57), and continues in Apple's API order below that. Every row says which it is:

rankSourceWhat it means
app-store-pagethe App Store's exact position
itunes-search-apiApple's API order, used below the store page's top positions (approximate)
google-play-pageGoogle Play's exact position

Two more things a naive tracker gets wrong, handled here:

  • App Store stories are not apps. An editorial card in the results is skipped, so it does not push every app below it down a place.
  • In-app event cards are apps. When the App Store shows an app's event card instead of its usual listing, that is still the app at that position, and it is ranked (hasInAppEvent: true).
  • Google Play ranks depend on the phone's language. Read in English, "vpn" in Germany kept only 1 of its top 10 apps in the same position as the German ranking a German phone sees. So each country is read in its own language (German in Germany, pt-BR in Brazil, es-419 in Mexico), and every Play row says which in language. Set language to en to read every country in English instead.

Track your apps

{
"keywords": ["meditation", "sleep sounds", "breathing exercises"],
"stores": ["app-store", "google-play"],
"countries": ["us", "gb", "de"],
"trackApps": ["571800810", "com.calm.android"],
"topN": 10
}

For every keyword, store and country you get:

  • the top 10 apps (rowType: "top-result"), your own flagged with tracked: true
  • one row per tracked app (rowType: "tracked-app") with its rank, or rankStatus: "not-in-top-N" when it is not there, where N is how deep that search actually went: up to 200 on the App Store (Apple usually returns 180 to 196) and 30 on Google Play

Set topN to 0 to get only your tracked apps: the cheapest way to run a daily rank check.

App ids: an App Store numeric id (571800810), an App Store bundle id (com.calm.calmapp), or a Google Play package name (com.calm.android). A numeric id is only looked for on the App Store, so a Play package is never reported as "not ranked" on a store it cannot be in.

Keyword ideas

Turn on includeSuggestions and every keyword also returns what the store itself suggests while it is being typed, in the store's own order: the phrases real users are steered towards.

{
"keywords": ["medit"],
"stores": ["app-store", "google-play"],
"countries": ["us", "jp"],
"topN": 0,
"includeSuggestions": true
}

That run returns only ideas (rowType: "suggestion"), such as meditation, meditation timer and mediterranean diet on the US App Store, and 瞑想アプリ 無料 on the Japanese one. Each store answers in its own market's language. App Store suggestions cover 56 of the 57 countries; Bangladesh returns an unbilled note instead.

What you get per row

{
"rowType": "top-result",
"keyword": "meditation",
"store": "app-store",
"country": "US",
"rank": 1,
"rankSource": "app-store-page",
"appId": "337472899",
"bundleId": "com.spotlightsix.zentimer",
"title": "Insight Timer: Meditate, Sleep",
"subtitle": "Meditation & Anxiety Relief",
"developer": "Insight Network Inc",
"rating": 4.9,
"ratingCount": 446397,
"ageRating": "13+",
"isEditorsChoice": true,
"hasInAppEvent": true,
"genre": "Health & Fitness",
"price": 0,
"currency": "USD",
"depthChecked": 10,
"exactPositions": 10,
"checkedAt": "2026-09-16T10:00:00Z"
}

Google Play rows carry installs (e.g. 10,000,000+), the listing summary and the language the store was read in (category names come back in that language, e.g. Wetter in Germany); App Store rows carry subtitle, ratingCount, ageRating, isEditorsChoice and releaseDate.

Built to be scheduled

Ranks only mean something over time. Schedule this daily; every row has checkedAt, so consecutive runs become a rank history per keyword with no extra work. The Your apps over time view shows exactly that.

Pricing

$1.00 per 1,000 rows, pay per result, lower on higher Apify plans. No subscription.

  • A daily check of 20 keywords for one tracked app, in both stores and one country, is 40 rows a day: about $1.20 a month.
  • A search that could not be read, and an input value that is not usable, each come back as an unbilled error row naming it.
  • maxItems caps the whole run.

Honest limits

  • Google Play ranks go to 30. That is every app Google Play's search page lists; its old way of paging further no longer works. An app below 30 is reported as not-in-top-30.
  • App Store exact positions go as deep as the store page does (9 to 14, depending on the country). Below that the order is Apple's API order, labelled itunes-search-api, which is close but not identical. Tracked apps are looked for in the top 200.
  • No search volume or difficulty scores. Keyword popularity numbers come from Apple Search Ads or paid ASO suites; this Actor reports what the stores show, not an estimate.

Input reference

FieldWhat it doesDefault
keywordsthe search terms, up to 100 per runrequired
storesapp-store, google-play, or bothboth
countriestwo-letter codes from the list belowus
languageGoogle Play only: read every country in this language (en, de, pt-BR) instead of its owneach country's own
trackAppsApp Store numeric ids or bundle / package namesnone
topNtop results per search, 0 to 50; 0 returns only tracked apps and ideas10
includeSuggestionsalso return each store's keyword ideasoff
maxItemsa ceiling on rows for the whole runnone

Countries

United States, United Kingdom, Canada, Australia, India, Germany, France, Spain, Italy, Netherlands, Sweden, Norway, Denmark, Finland, Poland, Portugal, Ireland, Austria, Switzerland, Belgium, Czechia, Romania, Hungary, Greece, Turkey, Saudi Arabia, United Arab Emirates, Egypt, South Africa, Nigeria, Kenya, Brazil, Mexico, Argentina, Colombia, Chile, Peru, Japan, South Korea, Taiwan, Hong Kong, Singapore, Malaysia, Thailand, Vietnam, Philippines, Indonesia, New Zealand, Russia, Ukraine, Kazakhstan, Pakistan, Bangladesh, Sri Lanka, Qatar, Kuwait, Morocco.

Pairs with

Use it from an AI agent

This Actor is a ready-made tool for Claude, ChatGPT, Cursor or any other MCP client, through Apify's MCP server. Add it as a connector at:

https://mcp.apify.com?tools=glitchbound/aso-keyword-rank-tracker

In Cursor or VS Code the same address goes in mcp.json:

{ "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=glitchbound/aso-keyword-rank-tracker" } } }

The first call asks you to sign in to Apify, or takes an API token. From then on the agent sees this Actor's input fields and calls it directly.

Feedback

If this saved you time, a review on the Actor's Store page helps other people find it. If something is missing or wrong, the Issues tab on the same page is the fastest way to reach me, and it gets read.