App Store & Google Play Keyword Rank Tracker (ASO) avatar

App Store & Google Play Keyword Rank Tracker (ASO)

Pricing

$1.00 / 1,000 keyword searches

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

App Store & Google Play Keyword Rank Tracker (ASO)

Track where your app ranks for each keyword on the App Store and Google Play, in 174 countries and in each store language. Get your apps' positions and the top apps with rating and developer. Schedule it daily for ASO rank history. No login or API key.

Pricing

$1.00 / 1,000 keyword searches

Rating

0.0

(0)

Developer

Steady Scrape

Steady Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

What does App Store & Google Play Keyword Rank Tracker do?

App Store & Google Play Keyword Rank Tracker tells you where your app ranks for each keyword in the Apple App Store and Google Play, in 174 countries and in any language each store offers — no App Store Connect or Play Console account, no API key, no login. It also returns the top apps for each keyword with name, developer, rating and genre, so you can see who you are competing with.

Schedule it daily and it becomes an ASO rank tracker: every run appends the day's positions to a history dataset you can chart.

Why use it?

  • 📈 Track your ASO — see if a new title, subtitle or keyword field moved your rankings, day by day.
  • 🌍 Localize with data — the same keyword ranks differently in the US in English and in Spanish; measure each market in the language its users see.
  • 🔎 Find keywords worth targeting — check who ranks in the top 10 and how strong they are before you pick a keyword.
  • 🕵️ Watch competitors — track competitors' apps next to yours.
  • 🤖 Feed dashboards and alerts — JSON, CSV or Excel, or straight into Google Sheets, Looker Studio or Slack through Apify integrations.

Features

  • Both stores in one run — App Store (iPhone) and Google Play.
  • Deep App Store rankings — up to the 250th position, the same list the App Store app shows.
  • Country and language — 174 countries; rankings change with the store language, and the Actor asks the store in the language you choose, not just the country.
  • Your apps' positions — add your App Store ids and Google Play packages; each result says where they rank, or that they are not in the list.
  • Top apps with details — name, developer, rating, rating count and genre of the top apps.
  • Daily history — "History dataset name" keeps every run's results together.
  • Fair billing — you pay per measured search. A language a store doesn't offer in a country, or a search the store refused, is reported and not charged.

How to track app keyword rankings

  1. Click Try for free.
  2. Add your keywords, pick countries and, optionally, a language.
  3. Add your apps (optional) to get their positions.
  4. Click Start. To track daily, add a schedule and set a History dataset name.

Input example

{
"keywords": ["habit tracker", "daily planner"],
"countries": ["us", "gb", "mx"],
"language": "",
"stores": ["appStore", "googlePlay"],
"apps": ["https://apps.apple.com/us/app/habit-tracker/id1438388363", "com.habitnow"],
"topResults": 10,
"historyDatasetName": "my-app-rankings"
}

Output example

Each measured search is one item in the dataset:

{
"date": "2026-09-16",
"measuredAt": "2026-09-16T19:02:11.204Z",
"store": "appStore",
"country": "us",
"countryName": "United States",
"language": "en-US",
"languageName": "English (US)",
"keyword": "habit tracker",
"resultsCount": 250,
"trackedApps": [
{ "appId": "1438388363", "position": 1 }
],
"topApps": [
{
"position": 1,
"appId": "1438388363",
"name": "Habit Tracker",
"developer": "InnerGrow",
"rating": 4.79222,
"ratingCount": 146830,
"genre": "Productivity",
"url": "https://apps.apple.com/us/app/habit-tracker/id1438388363"
}
]
}

Output fields

FieldDescription
date, measuredAtUTC day and exact time of the search
storeappStore or googlePlay
country, countryNameStore country
language, languageNameLanguage the store answered in
keywordThe search term
resultsCountHow many apps the store returned for the search
trackedAppsYour apps for that store and their position (1 = first); null means not within resultsCount
topAppsThe top apps with position, name, developer, rating, ratingCount (null when the store doesn't show it), genre and url

Searches that could not be measured are listed in the run's SUMMARY record with the reason.

How much does it cost?

You pay per measured search (one keyword in one country and store) — see the pricing tab. For example, 20 keywords in 3 countries on both stores are 120 searches per run. Searches that are not measured are free.

Limitations

  • Google Play shows fewer results than the App Store: its search page lists between 5 and 50 apps depending on the keyword and language, so positions beyond that are reported as null.
  • The App Store only offers some languages in each country (the table below). Google Play accepts any listed language anywhere.
  • Rankings are what an anonymous user sees in that country and language; stores can personalize results for signed-in users.
  • Search popularity (keyword volume) is not included.

Countries and languages

App Store: languages by country

The first language is the one used when you leave Language empty.

CountryCodeDefault languageOther languages
AfghanistanafEnglish (U.K.) (en-GB)
AlbaniaalEnglish (U.K.) (en-GB)
AlgeriadzEnglish (U.K.) (en-GB)Arabic (ar), French (fr-FR)
AngolaaoEnglish (U.K.) (en-GB)
AnguillaaiEnglish (U.K.) (en-GB)
Antigua & BarbudaagEnglish (U.K.) (en-GB)
ArgentinaarSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
ArmeniaamEnglish (U.K.) (en-GB)
AustraliaauEnglish (Australia) (en-AU)English (U.K.) (en-GB)
AustriaatGerman (de-DE)English (U.K.) (en-GB)
AzerbaijanazEnglish (U.K.) (en-GB)
BahamasbsEnglish (U.K.) (en-GB)
BahrainbhEnglish (U.K.) (en-GB)Arabic (ar)
BarbadosbbEnglish (U.K.) (en-GB)
BelarusbyEnglish (U.K.) (en-GB)
BelgiumbeEnglish (U.K.) (en-GB)Dutch (nl-NL), French (fr-FR)
BelizebzEnglish (U.K.) (en-GB)Spanish (Mexico) (es-MX)
BeninbjEnglish (U.K.) (en-GB)French (fr-FR)
BermudabmEnglish (U.K.) (en-GB)
BhutanbtEnglish (U.K.) (en-GB)
BoliviaboSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
Bosnia & HerzegovinabaEnglish (U.K.) (en-GB)Croatian (hr-HR)
BotswanabwEnglish (U.K.) (en-GB)
BrazilbrPortuguese (Brazil) (pt-BR)English (U.K.) (en-GB)
British Virgin IslandsvgEnglish (U.K.) (en-GB)
BruneibnEnglish (U.K.) (en-GB)
BulgariabgEnglish (U.K.) (en-GB)
Burkina FasobfEnglish (U.K.) (en-GB)French (fr-FR)
CambodiakhEnglish (U.K.) (en-GB)French (fr-FR)
CamerooncmFrench (fr-FR)English (U.K.) (en-GB)
CanadacaEnglish (Canada) (en-CA)French (Canada) (fr-CA)
Cape VerdecvEnglish (U.K.) (en-GB)
Cayman IslandskyEnglish (U.K.) (en-GB)
ChadtdEnglish (U.K.) (en-GB)French (fr-FR)
ChileclSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
ChinacnChinese (Simplified) (zh-Hans)English (U.K.) (en-GB)
ColombiacoSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
Congo - BrazzavillecgEnglish (U.K.) (en-GB)French (fr-FR)
Congo - KinshasacdEnglish (U.K.) (en-GB)French (fr-FR)
Costa RicacrSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
Côte d’IvoireciFrench (fr-FR)English (U.K.) (en-GB)
CroatiahrEnglish (U.K.) (en-GB)Croatian (hr-HR)
CypruscyEnglish (U.K.) (en-GB)Greek (el-GR), Turkish (tr-TR)
CzechiaczEnglish (U.K.) (en-GB)Czech (cs-CZ)
DenmarkdkEnglish (U.K.) (en-GB)Danish (da-DK)
DominicadmEnglish (U.K.) (en-GB)
Dominican RepublicdoSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
EcuadorecSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
EgyptegEnglish (U.K.) (en-GB)Arabic (ar), French (fr-FR)
El SalvadorsvSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
EstoniaeeEnglish (U.K.) (en-GB)
EswatiniszEnglish (U.K.) (en-GB)
FijifjEnglish (U.K.) (en-GB)
FinlandfiEnglish (U.K.) (en-GB)Finnish (fi-FI)
FrancefrFrench (fr-FR)English (U.K.) (en-GB)
GabongaFrench (fr-FR)English (U.K.) (en-GB)
GambiagmEnglish (U.K.) (en-GB)
GeorgiageEnglish (U.K.) (en-GB)
GermanydeGerman (de-DE)English (U.K.) (en-GB)
GhanaghEnglish (U.K.) (en-GB)
GreecegrEnglish (U.K.) (en-GB)Greek (el-GR)
GrenadagdEnglish (U.K.) (en-GB)
GuatemalagtSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
Guinea-BissaugwEnglish (U.K.) (en-GB)French (fr-FR)
GuyanagyEnglish (U.K.) (en-GB)French (fr-FR)
HondurashnSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
Hong Kong SAR ChinahkChinese (Traditional) (zh-Hant)English (U.K.) (en-GB)
HungaryhuEnglish (U.K.) (en-GB)Hungarian (hu-HU)
IcelandisEnglish (U.K.) (en-GB)
IndiainEnglish (U.K.) (en-GB)Hindi (hi-IN), Tamil (ta-IN), Urdu (ur-PK)
IndonesiaidEnglish (U.K.) (en-GB)Indonesian (id-ID)
IraqiqEnglish (U.K.) (en-GB)Arabic (ar)
IrelandieEnglish (U.K.) (en-GB)
IsraelilEnglish (U.K.) (en-GB)Hebrew (he-IL)
ItalyitItalian (it-IT)English (U.K.) (en-GB)
JamaicajmEnglish (U.K.) (en-GB)
JapanjpJapanese (ja-JP)English (US) (en-US)
JordanjoEnglish (U.K.) (en-GB)Arabic (ar)
KazakhstankzEnglish (U.K.) (en-GB)
KenyakeEnglish (U.K.) (en-GB)
KosovoxkEnglish (U.K.) (en-GB)
KuwaitkwEnglish (U.K.) (en-GB)Arabic (ar)
KyrgyzstankgEnglish (U.K.) (en-GB)
LaoslaEnglish (U.K.) (en-GB)French (fr-FR)
LatvialvEnglish (U.K.) (en-GB)
LebanonlbEnglish (U.K.) (en-GB)Arabic (ar), French (fr-FR)
LiberialrEnglish (U.K.) (en-GB)
LibyalyEnglish (U.K.) (en-GB)Arabic (ar)
LithuanialtEnglish (U.K.) (en-GB)
LuxembourgluEnglish (U.K.) (en-GB)French (fr-FR), German (de-DE)
Macao SAR ChinamoChinese (Traditional) (zh-Hant)English (U.K.) (en-GB)
MadagascarmgEnglish (U.K.) (en-GB)French (fr-FR)
MalawimwEnglish (U.K.) (en-GB)
MalaysiamyEnglish (U.K.) (en-GB)Malay (ms-MY)
MaldivesmvEnglish (U.K.) (en-GB)
MalimlEnglish (U.K.) (en-GB)French (fr-FR)
MaltamtEnglish (U.K.) (en-GB)
MauritaniamrEnglish (U.K.) (en-GB)Arabic (ar), French (fr-FR)
MauritiusmuEnglish (U.K.) (en-GB)French (fr-FR)
MexicomxSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
MicronesiafmEnglish (U.K.) (en-GB)
MoldovamdEnglish (U.K.) (en-GB)
MongoliamnEnglish (U.K.) (en-GB)
MontenegromeEnglish (U.K.) (en-GB)Croatian (hr-HR)
MontserratmsEnglish (U.K.) (en-GB)
MoroccomaEnglish (U.K.) (en-GB)Arabic (ar), French (fr-FR)
MozambiquemzEnglish (U.K.) (en-GB)
Myanmar (Burma)mmEnglish (U.K.) (en-GB)
NamibianaEnglish (U.K.) (en-GB)
NaurunrEnglish (U.K.) (en-GB)
NepalnpEnglish (U.K.) (en-GB)
NetherlandsnlDutch (nl-NL)English (U.K.) (en-GB)
New ZealandnzEnglish (Australia) (en-AU)English (U.K.) (en-GB)
NicaraguaniSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
NigerneEnglish (U.K.) (en-GB)French (fr-FR)
NigeriangEnglish (U.K.) (en-GB)
North MacedoniamkEnglish (U.K.) (en-GB)
NorwaynoEnglish (U.K.) (en-GB)Norwegian (nb-NO)
OmanomEnglish (U.K.) (en-GB)Arabic (ar)
PakistanpkEnglish (U.K.) (en-GB)Urdu (ur-PK)
PalaupwEnglish (U.K.) (en-GB)
PanamapaSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
Papua New GuineapgEnglish (U.K.) (en-GB)
ParaguaypySpanish (Mexico) (es-MX)English (U.K.) (en-GB)
PerupeSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
PhilippinesphEnglish (U.K.) (en-GB)
PolandplEnglish (U.K.) (en-GB)Polish (pl-PL)
PortugalptPortuguese (Portugal) (pt-PT)English (U.K.) (en-GB)
QatarqaEnglish (U.K.) (en-GB)Arabic (ar)
RomaniaroEnglish (U.K.) (en-GB)Romanian (ro-RO)
RussiaruRussian (ru-RU)English (U.K.) (en-GB), Ukrainian (uk-UA)
RwandarwEnglish (U.K.) (en-GB)French (fr-FR)
São Tomé & PríncipestEnglish (U.K.) (en-GB)
Saudi ArabiasaEnglish (U.K.) (en-GB)Arabic (ar)
SenegalsnEnglish (U.K.) (en-GB)French (fr-FR)
SerbiarsEnglish (U.K.) (en-GB)Croatian (hr-HR)
SeychellesscEnglish (U.K.) (en-GB)French (fr-FR)
Sierra LeoneslEnglish (U.K.) (en-GB)
SingaporesgEnglish (U.K.) (en-GB)Chinese (Simplified) (zh-Hans)
SlovakiaskEnglish (U.K.) (en-GB)Slovak (sk-SK)
SloveniasiEnglish (U.K.) (en-GB)Slovenian (sl-SI)
Solomon IslandssbEnglish (U.K.) (en-GB)
South AfricazaEnglish (U.K.) (en-GB)
South KoreakrKorean (ko-KR)English (U.K.) (en-GB)
SpainesSpanish (Spain) (es-ES)Catalan (ca-ES), English (U.K.) (en-GB)
Sri LankalkEnglish (U.K.) (en-GB)
St. Kitts & NevisknEnglish (U.K.) (en-GB)
St. LucialcEnglish (U.K.) (en-GB)
St. Vincent & GrenadinesvcEnglish (U.K.) (en-GB)
SurinamesrEnglish (U.K.) (en-GB)Dutch (nl-NL)
SwedenseSwedish (sv-SE)English (U.K.) (en-GB)
SwitzerlandchGerman (de-DE)English (U.K.) (en-GB), French (fr-FR), Italian (it-IT)
TaiwantwChinese (Traditional) (zh-Hant)English (U.K.) (en-GB)
TajikistantjEnglish (U.K.) (en-GB)
TanzaniatzEnglish (U.K.) (en-GB)
ThailandthEnglish (U.K.) (en-GB)Thai (th-TH)
TongatoEnglish (U.K.) (en-GB)
Trinidad & TobagottEnglish (U.K.) (en-GB)French (fr-FR)
TunisiatnEnglish (U.K.) (en-GB)Arabic (ar), French (fr-FR)
TürkiyetrEnglish (U.K.) (en-GB)Turkish (tr-TR)
TurkmenistantmEnglish (U.K.) (en-GB)
UgandaugEnglish (U.K.) (en-GB)
UkraineuaEnglish (U.K.) (en-GB)Russian (ru-RU), Ukrainian (uk-UA)
United Arab EmiratesaeEnglish (U.K.) (en-GB)Arabic (ar)
United KingdomgbEnglish (U.K.) (en-GB)
United StatesusEnglish (US) (en-US)Arabic (ar), Chinese (Simplified) (zh-Hans), Chinese (Traditional) (zh-Hant), French (fr-FR), Korean (ko-KR), Portuguese (Brazil) (pt-BR), Russian (ru-RU), Spanish (Mexico) (es-MX), Vietnamese (vi-VN)
UruguayuyEnglish (U.K.) (en-GB)Spanish (Mexico) (es-MX)
UzbekistanuzEnglish (U.K.) (en-GB)
VanuatuvuEnglish (U.K.) (en-GB)French (fr-FR)
VenezuelaveSpanish (Mexico) (es-MX)English (U.K.) (en-GB)
VietnamvnEnglish (U.K.) (en-GB)Vietnamese (vi-VN)
YemenyeEnglish (U.K.) (en-GB)Arabic (ar)
ZambiazmEnglish (U.K.) (en-GB)
ZimbabwezwEnglish (U.K.) (en-GB)

Google Play: languages

Google Play accepts any of these languages in any country:

Afrikaans (af) · Albanian (sq) · Amharic (am) · Arabic (ar) · Armenian (hy) · Azerbaijani (az) · Bangla (bn) · Basque (eu) · Belarusian (be) · Bulgarian (bg) · Burmese (my) · Catalan (ca-ES) · Chinese (Simplified) (zh-Hans) · Chinese (Traditional) (zh-Hant) · Croatian (hr-HR) · Czech (cs-CZ) · Danish (da-DK) · Dutch (nl-NL) · English (Australia) (en-AU) · English (Canada) (en-CA) · English (India) (en-IN) · English (U.K.) (en-GB) · English (US) (en-US) · Estonian (et) · Filipino (fil) · Finnish (fi-FI) · French (fr-FR) · French (Canada) (fr-CA) · Galician (gl) · Georgian (ka) · German (de-DE) · Greek (el-GR) · Gujarati (gu) · Hebrew (he-IL) · Hindi (hi-IN) · Hungarian (hu-HU) · Icelandic (is) · Indonesian (id-ID) · Italian (it-IT) · Japanese (ja-JP) · Kannada (kn) · Kazakh (kk) · Khmer (km) · Korean (ko-KR) · Kyrgyz (ky) · Lao (lo) · Latvian (lv) · Lithuanian (lt) · Macedonian (mk) · Malay (ms-MY) · Malayalam (ml) · Marathi (mr) · Mongolian (mn) · Nepali (ne) · Norwegian (nb-NO) · Persian (fa) · Polish (pl-PL) · Portuguese (Brazil) (pt-BR) · Portuguese (Portugal) (pt-PT) · Punjabi (pa) · Romanian (ro-RO) · Russian (ru-RU) · Serbian (sr) · Sinhala (si) · Slovak (sk-SK) · Slovenian (sl-SI) · Spanish (Mexico) (es-MX) · Spanish (Spain) (es-ES) · Spanish (US) (es-US) · Swahili (sw) · Swedish (sv-SE) · Tamil (ta-IN) · Telugu (te) · Thai (th-TH) · Turkish (tr-TR) · Ukrainian (uk-UA) · Urdu (ur-PK) · Uzbek (uz) · Vietnamese (vi-VN) · Zulu (zu)

This Actor only reads public search results that any store visitor can see, without logging in, at a gentle pace. Check the terms that apply to your use of the data, and consult a lawyer if unsure. Read more in Apify's blog post on the legality of web scraping.

Feedback

Need a country, a language or a field that isn't here? Open an issue in the Issues tab — they are answered quickly.