tools / rank
rank
not read-onlyKeyword rank
Where does an app rank in App Store search — right now, per storefront?
rank is an App Store keyword ranking API in one call: give it a search term and an app's numeric appId (the trackId in every App Store URL), and it returns the app's live position in that storefront's search results — the same top-200 result list a user scrolling the App Store would walk through.
Ranks are per storefront, because Apple's are: the US, UK and Japan stores run separate indexes and return different results for the same query. Pass up to 25 countries in one call and each is queried separately. A null rank is an answer too — the app is not in that storefront's top 200 for the term.
Apps rank for more than their literal title: Apple matches queries against the combined word pool of title, subtitle and hidden keyword field. So when a rank surprises you, the explanation is usually in the pool — that model is what the coverage tool computes.
worked example
Where does HabitKit (appId 6443918070) rank for “habit tracker” in the US, UK and Germany?
{ "name": "rank", "arguments": { "keyword": "habit tracker", "appId": 6443918070, "countries": [ "US", "GB", "DE" ] } }
{ "keyword": "habit tracker", "appId": 6443918070, "storefronts": [ { "country": "US", "appName": "Habit Tracker - HabitKit", "rank": 2, "totalResults": 189 }, { "country": "GB", "appName": "Habit Tracker - HabitKit", "rank": 2, "totalResults": 189 }, { "country": "DE", "appName": "Habit Tracker - HabitKit", "rank": 2, "totalResults": 185 } ] }
real response, captured 2026-07-29 — trimmed only where marked with …
rank: 2means the second result a user sees for that query in that store;totalResultsis how many apps the search surfaced (capped at 200 by Apple's public API).- When the app is not in the top 200,
rankisnullandappNamestaysnull— a real answer, not an error. - With
save: truethe call also appends a snapshot to a history file and reports the change since the last check — though for daily tracking, track_config does this managed, server-side.
when to use it
- Verifying a metadata change: you shipped a new title or keyword field and want to know whether the phrases you targeted actually rank.
- Spot-checking a keyword across markets before localizing — the same term can be position 2 in one storefront and absent in another.
- Confirming phrases assembled cross-field really rank:
coveragesays a phrase is *possible*;ranksays whether it *happens*. - Not for daily monitoring — that is what the managed tracker (track_config + history) is for, so you never re-poll manually.