Storelift Start measuring

StoreliftGuides › App Store storefront country codes

App Store storefront country codes

Storefront lists circulate as copied gists, and a wrong ID does not announce itself: Apple answers the request and returns nothing, which reads as "no demand in that country" rather than as an error. Every row below was measured against three Apple endpoints on 2026-08-26. 2 candidates failed and were dropped.

Updated:

How the values are used

Three different values do three different jobs, and mixing them up is the usual cause of an empty result:

The language column is not the complete language list for a storefront. Apple serves several languages in many countries; this is the default we measured and the one our own measurements read. Where we run in production the value is locked to what was tuned in the field — Turkish results drift without tr_tr.

How each row was verified

  1. Search hints. A hint request is sent with the X-Apple-Store-Front header. A real storefront returns 10 suggested terms; a made-up ID returns 0. This is the check that catches a wrong ID.
  2. Language. A lookup is issued with lang=. Apple rejects an invalid value explicitly: Invalid value(s) for key(s): [language]. Candidates are tried local-language-first and the first accepted one is kept.
  3. Country. The same lookup is issued with country=. An invalid code is rejected the same way. /lookup is used rather than /search on purpose: /search is rate-limited hard enough that asking about 130 countries makes Apple return 403, and a 403 is indistinguishable from “no results in that country”.

A row is published only if all three pass. The IDs themselves came from two independent public lists that agree with each other and with the 27 storefronts already running in production — but agreement between lists is not evidence, so each one is measured anyway.

The 2 that were dropped

Bangladesh (bd) and Liechtenstein (li) appear in the circulating lists with storefront IDs, and both codes are accepted by Apple without an error. They still fail: the hint request returns 0 terms, and a lookup against a known app returns "resultCount":0.

This is exactly the failure mode the list exists for. Nothing errors. The request succeeds, the payload is empty, and a tool built on it reports the country as having no demand. Both rows were removed rather than published with a caveat.

All 128 storefronts

CountryCodeStorefront IDX-Apple-Store-FrontDefault language
Algeriadz143563143563,29ar_sa
Angolaao143564143564,29pt_pt
Anguillaai143538143538,29en_gb
Antigua & Barbudaag143540143540,29en_gb
Argentinaar143505143505,29es_mx
Armeniaam143524143524,29ru_ru
Australiaau143460143460,29en_au
Austriaat143445143445,29de_de
Azerbaijanaz143568143568,29ru_ru
Bahamasbs143539143539,29en_gb
Bahrainbh143559143559,29ar_sa
Barbadosbb143541143541,29en_gb
Belarusby143565143565,29ru_ru
Belgiumbe143446143446,29nl_nl
Belizebz143555143555,29en_gb
Bermudabm143542143542,29en_gb
Boliviabo143556143556,29es_mx
Botswanabw143525143525,29en_gb
Brazilbr143503143503,29pt_br
British Virgin Is.vg143543143543,29en_gb
Bruneibn143560143560,29en_gb
Bulgariabg143526143526,29bg_bg
Canadaca143455143455,29en_ca
Cayman Islandsky143544143544,29en_gb
Chilecl143483143483,29es_mx
Chinacn143465143465,29zh_cn
Colombiaco143501143501,29es_mx
Costa Ricacr143495143495,29es_mx
Côte d’Ivoireci143527143527,29fr_fr
Croatiahr143494143494,29hr_hr
Cypruscy143557143557,29el_gr
Czechiacz143489143489,29cs_cz
Denmarkdk143458143458,29da_dk
Dominicadm143545143545,29en_gb
Dominican Rep.do143508143508,29es_mx
Ecuadorec143509143509,29es_mx
Egypteg143516143516,29ar_sa
El Salvadorsv143506143506,29es_mx
Estoniaee143518143518,29et_ee
Finlandfi143447143447,29fi_fi
Francefr143442143442,29fr_fr
Germanyde143443143443,29de_de
Ghanagh143573143573,29en_gb
Greecegr143448143448,29el_gr
Grenadagd143546143546,29en_gb
Guatemalagt143504143504,29es_mx
Guyanagy143553143553,29en_gb
Hondurashn143510143510,29es_mx
Hong Konghk143463143463,29zh_hk
Hungaryhu143482143482,29hu_hu
Icelandis143558143558,29is_is
Indiain143467143467,29en_in
Indonesiaid143476143476,29en_us
Irelandie143449143449,29en_gb
Israelil143491143491,29en_gb
Italyit143450143450,29it_it
Jamaicajm143511143511,29en_gb
Japanjp143462143462,29ja_jp
Jordanjo143528143528,29ar_sa
Kazakhstankz143517143517,29ru_ru
Kenyake143529143529,29en_gb
Kuwaitkw143493143493,29ar_sa
Latvialv143519143519,29lv_lv
Lebanonlb143497143497,29ar_sa
Lithuanialt143520143520,29lt_lt
Luxembourglu143451143451,29fr_fr
Macaomo143515143515,29zh_hk
Madagascarmg143531143531,29fr_fr
Malaysiamy143473143473,29ms_my
Maldivesmv143488143488,29en_gb
Maliml143532143532,29fr_fr
Maltamt143521143521,29en_gb
Mauritiusmu143533143533,29en_gb
Mexicomx143468143468,29es_mx
Moldovamd143523143523,29ro_ro
Montserratms143547143547,29en_gb
Nepalnp143484143484,29en_gb
Netherlandsnl143452143452,29nl_nl
New Zealandnz143461143461,29en_au
Nicaraguani143512143512,29es_mx
Nigerne143534143534,29fr_fr
Nigeriang143561143561,29en_gb
North Macedoniamk143530143530,29en_gb
Norwayno143457143457,29nb_no
Omanom143562143562,29ar_sa
Pakistanpk143477143477,29en_gb
Panamapa143485143485,29es_mx
Paraguaypy143513143513,29es_mx
Perupe143507143507,29es_mx
Philippinesph143474143474,29en_gb
Polandpl143478143478,29pl_pl
Portugalpt143453143453,29pt_pt
Qatarqa143498143498,29ar_sa
Romaniaro143487143487,29ro_ro
Russiaru143469143469,29ru_ru
Saudi Arabiasa143479143479,29ar_sa
Senegalsn143535143535,29fr_fr
Serbiars143500143500,29en_gb
Singaporesg143464143464,29en_gb
Slovakiask143496143496,29sk_sk
Sloveniasi143499143499,29sl_si
South Africaza143472143472,29en_gb
South Koreakr143466143466,29ko_kr
Spaines143454143454,29es_es
Sri Lankalk143486143486,29en_gb
St. Kitts & Neviskn143548143548,29en_gb
St. Lucialc143549143549,29en_gb
St. Vincentvc143550143550,29en_gb
Surinamesr143554143554,29en_gb
Swedense143456143456,29sv_se
Switzerlandch143459143459,29de_de
Taiwantw143470143470,29zh_tw
Tanzaniatz143572143572,29en_gb
Thailandth143475143475,29th_th
Trinidad & Tobagott143551143551,29en_gb
Tunisiatn143536143536,29ar_sa
Türkiyetr143480143480,29tr_tr
Turks & Caicostc143552143552,29en_gb
UAEae143481143481,29en_us
Ugandaug143537143537,29en_gb
Ukraineua143492143492,29uk_ua
United Kingdomgb143444143444,29en_gb
United Statesus143441143441,29en_us
Uruguayuy143514143514,29es_mx
Uzbekistanuz143566143566,29ru_ru
Venezuelave143502143502,29es_mx
Vietnamvn143471143471,29vi_vn
Yemenye143571143571,29ar_sa
Downloadable: app-store-storefronts-2026-08-26.csv — 128 rows, country code, English and Turkish country name, storefront ID, header value and language code. Regenerate with node tools/publish_storefronts.mjs.

Frequently asked

Why does my request return an empty result instead of an error?

Almost always the header. A wrong storefront ID, or an ID sent without the ,29 platform suffix, is a well-formed request Apple answers with nothing. There is no error to catch, which is why a list has to be measured rather than trusted.

The App Store is in 175 countries. Why 128?

128 is what we measure, not what exists. A storefront is included when all three checks pass and we can read rank there reliably; 2 candidates failed and were dropped. Publishing a longer list would mean publishing rows we cannot stand behind.

Is the language column the full list of languages for a store?

No. It is the default we measured and read results in. Apple serves several languages in many storefronts; the column answers “which value does Apple accept and which one do we read”, not “which languages exist there”.

How often is this re-measured?

It is re-run when a storefront is added or a measurement starts failing. The date on the page is the date of the last run — if that date is old, the list is old, and we would rather show it than hide it.

See this for your own app

Paste your store link, add your keywords. Rank, the apps above you and demand are measured every day.

Start free →

Read next