Files
the-biergarten-app/tooling/pipeline/cities.json

1719 lines
49 KiB
JSON

[
{
"city": "Cape Town",
"state_province": "Western Cape",
"iso3166_2": "ZA-WC",
"country": "South Africa",
"iso3166_1": "ZA",
"latitude": -33.9249,
"longitude": 18.4241,
"local_languages": ["af", "en", "xh"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^(?:7[0-9]{3}|80[0-9]{2})$"],
"examples": ["8001", "7700", "7441"],
"confidence": "medium",
"notes": "Cape Town metro spans roughly 7000-8099; 7xxx also covers parts of the wider Western Cape."
}
},
{
"city": "Johannesburg",
"state_province": "Gauteng",
"iso3166_2": "ZA-GT",
"country": "South Africa",
"iso3166_1": "ZA",
"latitude": -26.2041,
"longitude": 28.0473,
"local_languages": ["en", "zu", "st", "af"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^2[01][0-9]{2}$"],
"examples": ["2001", "2196"],
"confidence": "medium",
"notes": "Johannesburg street codes cluster in 2000-2199; PO Box codes differ."
}
},
{
"city": "Durban",
"state_province": "KwaZulu-Natal",
"iso3166_2": "ZA-NL",
"country": "South Africa",
"iso3166_1": "ZA",
"latitude": -29.8587,
"longitude": 31.0218,
"local_languages": ["zu", "en"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^4[01][0-9]{2}$"],
"examples": ["4001", "4051"],
"confidence": "medium",
"notes": "eThekwini/Durban street codes cluster in 4000-4199."
}
},
{
"city": "Franschhoek",
"state_province": "Western Cape",
"iso3166_2": "ZA-WC",
"country": "South Africa",
"iso3166_1": "ZA",
"latitude": -33.9146,
"longitude": 19.1198,
"local_languages": ["af", "en"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^7690$"],
"examples": ["7690"],
"confidence": "high",
"notes": "Single town code."
}
},
{
"city": "Nairobi",
"state_province": "Nairobi",
"iso3166_2": "KE-30",
"country": "Kenya",
"iso3166_1": "KE",
"latitude": -1.2921,
"longitude": 36.8219,
"local_languages": ["sw", "en"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^00[1-9][0-9]{2}$"],
"examples": ["00100", "00200", "00800"],
"confidence": "high",
"notes": "All Nairobi County codes begin 00; GPO is 00100. Range 00100-00999."
}
},
{
"city": "Buenos Aires",
"state_province": "Buenos Aires City",
"iso3166_2": "AR-C",
"country": "Argentina",
"iso3166_1": "AR",
"latitude": -34.6037,
"longitude": -58.3816,
"local_languages": ["es-AR"],
"postal_code": {
"country_format_regex": "^(?:[A-HJ-NP-TV-Z]\\d{4}[A-Z]{3}|\\d{4})$",
"city_regex": ["^C1[0-4][0-9]{2}[A-Z]{3}$", "^1[0-4][0-9]{2}$"],
"examples": ["C1425DKE", "1425"],
"confidence": "high",
"notes": "CABA uses CPA prefix 'C'. Legacy 4-digit form 1000-1499 still widely accepted."
}
},
{
"city": "Bariloche",
"state_province": "Río Negro",
"iso3166_2": "AR-R",
"country": "Argentina",
"iso3166_1": "AR",
"latitude": -41.1335,
"longitude": -71.3103,
"local_languages": ["es-AR"],
"postal_code": {
"country_format_regex": "^(?:[A-HJ-NP-TV-Z]\\d{4}[A-Z]{3}|\\d{4})$",
"city_regex": ["^R8400[A-Z]{3}$", "^8400$"],
"examples": ["R8400AGC", "8400"],
"confidence": "high",
"notes": "San Carlos de Bariloche legacy code 8400; CPA prefix 'R' (Rio Negro)."
}
},
{
"city": "Bogotá",
"state_province": "Bogotá D.C.",
"iso3166_2": "CO-DC",
"country": "Colombia",
"iso3166_1": "CO",
"latitude": 4.711,
"longitude": -74.0721,
"local_languages": ["es-CO"],
"postal_code": {
"country_format_regex": "^\\d{6}$",
"city_regex": ["^11[0-9]{4}$"],
"examples": ["110111", "111321"],
"confidence": "high",
"notes": "Bogota D.C. = DANE department code 11."
}
},
{
"city": "Medellín",
"state_province": "Antioquia",
"iso3166_2": "CO-ANT",
"country": "Colombia",
"iso3166_1": "CO",
"latitude": 6.2442,
"longitude": -75.5812,
"local_languages": ["es-CO"],
"postal_code": {
"country_format_regex": "^\\d{6}$",
"city_regex": ["^050[0-9]{3}$"],
"examples": ["050001", "050022"],
"confidence": "high",
"notes": "Antioquia = 05; Medellin zone = 050xxx. Wider metro uses 051xxx-055xxx."
}
},
{
"city": "São Paulo",
"state_province": "São Paulo",
"iso3166_2": "BR-SP",
"country": "Brazil",
"iso3166_1": "BR",
"latitude": -23.5505,
"longitude": -46.6333,
"local_languages": ["pt-BR"],
"postal_code": {
"country_format_regex": "^\\d{5}-?\\d{3}$",
"city_regex": [
"^0[1-5][0-9]{3}-?[0-9]{3}$",
"^08[0-4][0-9]{2}-?[0-9]{3}$"
],
"examples": ["01310-100", "05407-002"],
"confidence": "high",
"notes": "Sao Paulo city CEP: 01000-000 to 05999-999, plus 08000-000 to 08499-999."
}
},
{
"city": "Curitiba",
"state_province": "Paraná",
"iso3166_2": "BR-PR",
"country": "Brazil",
"iso3166_1": "BR",
"latitude": -25.4284,
"longitude": -49.2733,
"local_languages": ["pt-BR"],
"postal_code": {
"country_format_regex": "^\\d{5}-?\\d{3}$",
"city_regex": ["^8[0-2][0-9]{3}-?[0-9]{3}$"],
"examples": ["80010-010", "82590-300"],
"confidence": "high",
"notes": "Curitiba CEP: 80000-000 to 82999-999."
}
},
{
"city": "Rio de Janeiro",
"state_province": "Rio de Janeiro",
"iso3166_2": "BR-RJ",
"country": "Brazil",
"iso3166_1": "BR",
"latitude": -22.9068,
"longitude": -43.1729,
"local_languages": ["pt-BR"],
"postal_code": {
"country_format_regex": "^\\d{5}-?\\d{3}$",
"city_regex": ["^(?:2[0-2][0-9]{3}|23[0-7][0-9]{2})-?[0-9]{3}$"],
"examples": ["20040-020", "22071-900"],
"confidence": "high",
"notes": "Rio city CEP: 20000-000 to 23799-999."
}
},
{
"city": "Santiago",
"state_province": "Santiago Metropolitan",
"iso3166_2": "CL-RM",
"country": "Chile",
"iso3166_1": "CL",
"latitude": -33.4489,
"longitude": -70.6693,
"local_languages": ["es-CL"],
"postal_code": {
"country_format_regex": "^\\d{7}$",
"city_regex": ["^(?:7[5-9][0-9]|8[0-9]{2}|9[0-2][0-9])[0-9]{4}$"],
"examples": ["8320000", "7500000"],
"confidence": "medium",
"notes": "Santiago Province spans approx. 7500000-9250000; 7xx = eastern communes, 8xx = central."
}
},
{
"city": "Valdivia",
"state_province": "Los Ríos",
"iso3166_2": "CL-LR",
"country": "Chile",
"iso3166_1": "CL",
"latitude": -39.8142,
"longitude": -73.2459,
"local_languages": ["es-CL"],
"postal_code": {
"country_format_regex": "^\\d{7}$",
"city_regex": ["^(?:509|51[0-9]|52[0-3])[0-9]{4}$"],
"examples": ["5090000", "5110000"],
"confidence": "low",
"notes": "Los Rios region range approx. 5090000-5230000; Valdivia commune base code 5090000."
}
},
{
"city": "Lima",
"state_province": "Lima",
"iso3166_2": "PE-LMA",
"country": "Peru",
"iso3166_1": "PE",
"latitude": -12.0464,
"longitude": -77.0428,
"local_languages": ["es-PE"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^15[0-9]{3}$"],
"examples": ["15001", "15074"],
"confidence": "medium",
"notes": "Lima Region = prefix 15; metropolitan Lima districts sit in 15001-15099. Callao is 07xxx."
}
},
{
"city": "Tokyo",
"state_province": "Tokyo",
"iso3166_2": "JP-13",
"country": "Japan",
"iso3166_1": "JP",
"latitude": 35.6762,
"longitude": 139.6503,
"local_languages": ["ja"],
"postal_code": {
"country_format_regex": "^\\d{3}-?\\d{4}$",
"city_regex": ["^(?:1[0-9]{2}|20[0-8])-?[0-9]{4}$"],
"examples": ["100-0001", "150-0002"],
"confidence": "high",
"notes": "Tokyo Metropolis: 100-xxxx to 208-xxxx. The 23 wards are 100-179."
}
},
{
"city": "Osaka",
"state_province": "Osaka",
"iso3166_2": "JP-27",
"country": "Japan",
"iso3166_1": "JP",
"latitude": 34.6937,
"longitude": 135.5023,
"local_languages": ["ja"],
"postal_code": {
"country_format_regex": "^\\d{3}-?\\d{4}$",
"city_regex": ["^5[3-5][0-9]-?[0-9]{4}$"],
"examples": ["530-0001", "559-0034"],
"confidence": "high",
"notes": "Osaka City: 530-xxxx to 559-xxxx. Wider Osaka Prefecture is 5xx."
}
},
{
"city": "Kyoto",
"state_province": "Kyoto",
"iso3166_2": "JP-26",
"country": "Japan",
"iso3166_1": "JP",
"latitude": 35.0116,
"longitude": 135.7681,
"local_languages": ["ja"],
"postal_code": {
"country_format_regex": "^\\d{3}-?\\d{4}$",
"city_regex": ["^6(?:0[0-9]|1[0-6])-?[0-9]{4}$"],
"examples": ["600-8216", "606-8501"],
"confidence": "high",
"notes": "Kyoto City: 600-xxxx to 616-xxxx."
}
},
{
"city": "Sapporo",
"state_province": "Hokkaido",
"iso3166_2": "JP-01",
"country": "Japan",
"iso3166_1": "JP",
"latitude": 43.0618,
"longitude": 141.3545,
"local_languages": ["ja"],
"postal_code": {
"country_format_regex": "^\\d{3}-?\\d{4}$",
"city_regex": ["^(?:00[1-7]|06[0-5])-?[0-9]{4}$"],
"examples": ["060-0001", "001-0010"],
"confidence": "high",
"notes": "Sapporo: 001-xxxx to 007-xxxx (north/west) and 060-xxxx to 065-xxxx (central/east)."
}
},
{
"city": "Seoul",
"state_province": "Seoul",
"iso3166_2": "KR-11",
"country": "South Korea",
"iso3166_1": "KR",
"latitude": 37.5665,
"longitude": 126.978,
"local_languages": ["ko"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^0[1-9][0-9]{3}$"],
"examples": ["04524", "06236"],
"confidence": "high",
"notes": "Post-2015 5-digit system: Seoul = 01000-09999."
}
},
{
"city": "Busan",
"state_province": "Busan",
"iso3166_2": "KR-26",
"country": "South Korea",
"iso3166_1": "KR",
"latitude": 35.1796,
"longitude": 129.0756,
"local_languages": ["ko"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^4[6-9][0-9]{3}$"],
"examples": ["48058", "46241"],
"confidence": "high",
"notes": "Busan = 46000-49999."
}
},
{
"city": "Ho Chi Minh City",
"state_province": "Ho Chi Minh",
"iso3166_2": "VN-SG",
"country": "Vietnam",
"iso3166_1": "VN",
"latitude": 10.8231,
"longitude": 106.6297,
"local_languages": ["vi"],
"postal_code": {
"country_format_regex": "^\\d{5,6}$",
"city_regex": ["^7[0-4][0-9]{3}$", "^7[0-4][0-9]{4}$"],
"examples": ["70000", "71000", "700000"],
"confidence": "medium",
"notes": "Current 5-digit system: HCMC = 70000-74999. Legacy/6-digit form (700000) still appears in some systems."
}
},
{
"city": "Hanoi",
"state_province": "Hanoi",
"iso3166_2": "VN-HN",
"country": "Vietnam",
"iso3166_1": "VN",
"latitude": 21.0285,
"longitude": 105.8542,
"local_languages": ["vi"],
"postal_code": {
"country_format_regex": "^\\d{5,6}$",
"city_regex": ["^1[0-4][0-9]{3}$", "^1[0-4][0-9]{4}$"],
"examples": ["10000", "11100", "100000"],
"confidence": "medium",
"notes": "Hanoi = 10000-14999 (5-digit). Legacy 6-digit form 100000 still in circulation."
}
},
{
"city": "Da Nang",
"state_province": "Da Nang",
"iso3166_2": "VN-DN",
"country": "Vietnam",
"iso3166_1": "VN",
"latitude": 16.0544,
"longitude": 108.2022,
"local_languages": ["vi"],
"postal_code": {
"country_format_regex": "^\\d{5,6}$",
"city_regex": ["^5[0-5][0-9]{3}$", "^5[0-5][0-9]{4}$"],
"examples": ["50000", "55000", "550000"],
"confidence": "low",
"notes": "Sources conflict: Da Nang is cited as both 50000 and 55000. Pattern accepts 50000-55999 and the 6-digit legacy form."
}
},
{
"city": "Bangkok",
"state_province": "Bangkok",
"iso3166_2": "TH-10",
"country": "Thailand",
"iso3166_1": "TH",
"latitude": 13.7563,
"longitude": 100.5018,
"local_languages": ["th"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^10[0-9]{3}$"],
"examples": ["10100", "10330"],
"confidence": "high",
"notes": "Bangkok = province code 10; codes run 10100-10900."
}
},
{
"city": "Taipei",
"state_province": "Taipei",
"iso3166_2": "TW-TPE",
"country": "Taiwan",
"iso3166_1": "TW",
"latitude": 25.033,
"longitude": 121.5654,
"local_languages": ["zh-TW"],
"postal_code": {
"country_format_regex": "^\\d{3}(?:\\d{2}|\\d{3})?$",
"city_regex": ["^1(?:0[0-9]|1[0-6])(?:[0-9]{2}|[0-9]{3})?$"],
"examples": ["100", "10058", "100013"],
"confidence": "high",
"notes": "Taipei City districts = 100-116. 3-digit is valid alone; 3+2 is legacy, 3+3 is current."
}
},
{
"city": "Beijing",
"state_province": "Beijing",
"iso3166_2": "CN-BJ",
"country": "China",
"iso3166_1": "CN",
"latitude": 39.9042,
"longitude": 116.4074,
"local_languages": ["zh-CN"],
"postal_code": {
"country_format_regex": "^\\d{6}$",
"city_regex": ["^10[0-2][0-9]{3}$"],
"examples": ["100000", "100010"],
"confidence": "high",
"notes": "Beijing municipality = 100000-102629."
}
},
{
"city": "Shanghai",
"state_province": "Shanghai",
"iso3166_2": "CN-SH",
"country": "China",
"iso3166_1": "CN",
"latitude": 31.2304,
"longitude": 121.4737,
"local_languages": ["zh-CN"],
"postal_code": {
"country_format_regex": "^\\d{6}$",
"city_regex": ["^20[0-2][0-9]{3}$"],
"examples": ["200000", "200080"],
"confidence": "high",
"notes": "Shanghai municipality = 200000-202699."
}
},
{
"city": "Bengaluru",
"state_province": "Karnataka",
"iso3166_2": "IN-KA",
"country": "India",
"iso3166_1": "IN",
"latitude": 12.9716,
"longitude": 77.5946,
"local_languages": ["kn", "en"],
"postal_code": {
"country_format_regex": "^[1-9]\\d{5}$",
"city_regex": ["^560[0-9]{3}$"],
"examples": ["560001", "560100"],
"confidence": "high",
"notes": "Bengaluru urban PIN codes = 560xxx. Bengaluru Rural uses 561xxx/562xxx."
}
},
{
"city": "Singapore",
"state_province": "Central Singapore",
"iso3166_2": "SG-01",
"country": "Singapore",
"iso3166_1": "SG",
"latitude": 1.3521,
"longitude": 103.8198,
"local_languages": ["en", "zh", "ms", "ta"],
"postal_code": {
"country_format_regex": "^\\d{6}$",
"city_regex": ["^[0-8][0-9]{5}$"],
"examples": ["018956", "238823"],
"confidence": "high",
"notes": "Singapore is a single postal district; sectors 01-82 cover the whole island."
}
},
{
"city": "Melbourne",
"state_province": "Victoria",
"iso3166_2": "AU-VIC",
"country": "Australia",
"iso3166_1": "AU",
"latitude": -37.8136,
"longitude": 144.9631,
"local_languages": ["en-AU"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^3(?:0[0-9]{2}|1[0-9]{2}|20[0-7])$"],
"examples": ["3000", "3121"],
"confidence": "medium",
"notes": "Greater Melbourne approx. 3000-3207. Victoria as a whole is 3000-3999."
}
},
{
"city": "Sydney",
"state_province": "New South Wales",
"iso3166_2": "AU-NSW",
"country": "Australia",
"iso3166_1": "AU",
"latitude": -33.8688,
"longitude": 151.2093,
"local_languages": ["en-AU"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^(?:1[0-9]{3}|2[0-2][0-9]{2})$"],
"examples": ["2000", "2010", "1235"],
"confidence": "medium",
"notes": "Sydney metro approx. 2000-2249; 1000-1999 are Sydney PO Box / large-volume codes."
}
},
{
"city": "Brisbane",
"state_province": "Queensland",
"iso3166_2": "AU-QLD",
"country": "Australia",
"iso3166_1": "AU",
"latitude": -27.4705,
"longitude": 153.026,
"local_languages": ["en-AU"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^4(?:0[0-9]{2}|1[0-9]{2}|20[0-7])$"],
"examples": ["4000", "4101"],
"confidence": "medium",
"notes": "Greater Brisbane approx. 4000-4207."
}
},
{
"city": "Adelaide",
"state_province": "South Australia",
"iso3166_2": "AU-SA",
"country": "Australia",
"iso3166_1": "AU",
"latitude": -34.9285,
"longitude": 138.6007,
"local_languages": ["en-AU"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^5[01][0-9]{2}$"],
"examples": ["5000", "5067"],
"confidence": "medium",
"notes": "Adelaide metro approx. 5000-5199."
}
},
{
"city": "Perth",
"state_province": "Western Australia",
"iso3166_2": "AU-WA",
"country": "Australia",
"iso3166_1": "AU",
"latitude": -31.9505,
"longitude": 115.8605,
"local_languages": ["en-AU"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^6[01][0-9]{2}$"],
"examples": ["6000", "6151"],
"confidence": "medium",
"notes": "Perth metro approx. 6000-6199."
}
},
{
"city": "Hobart",
"state_province": "Tasmania",
"iso3166_2": "AU-TAS",
"country": "Australia",
"iso3166_1": "AU",
"latitude": -42.8821,
"longitude": 147.3272,
"local_languages": ["en-AU"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^70[0-9]{2}$"],
"examples": ["7000", "7050"],
"confidence": "medium",
"notes": "Hobart approx. 7000-7099."
}
},
{
"city": "Wellington",
"state_province": "Wellington",
"iso3166_2": "NZ-WGN",
"country": "New Zealand",
"iso3166_1": "NZ",
"latitude": -41.2865,
"longitude": 174.7762,
"local_languages": ["en", "mi"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^60[0-9]{2}$"],
"examples": ["6011", "6021"],
"confidence": "medium",
"notes": "Wellington City = 6011-6037. Wider region extends to 5010-5999."
}
},
{
"city": "Auckland",
"state_province": "Auckland",
"iso3166_2": "NZ-AUK",
"country": "New Zealand",
"iso3166_1": "NZ",
"latitude": -36.8485,
"longitude": 174.7633,
"local_languages": ["en", "mi"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^(?:0[6-9][0-9]{2}|10[0-9]{2}|2[0-6][0-9]{2})$"],
"examples": ["1010", "0620", "2013"],
"confidence": "low",
"notes": "Auckland is non-contiguous: 0600-0999 (north/west), 1010-1081 (central), 2010-2699 (south)."
}
},
{
"city": "Christchurch",
"state_province": "Canterbury",
"iso3166_2": "NZ-CAN",
"country": "New Zealand",
"iso3166_1": "NZ",
"latitude": -43.532,
"longitude": 172.6306,
"local_languages": ["en", "mi"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^80[0-9]{2}$"],
"examples": ["8011", "8041"],
"confidence": "medium",
"notes": "Christchurch City = 8011-8062. Canterbury region extends 7600-8999."
}
},
{
"city": "Nelson",
"state_province": "Nelson",
"iso3166_2": "NZ-NSN",
"country": "New Zealand",
"iso3166_1": "NZ",
"latitude": -41.2706,
"longitude": 173.284,
"local_languages": ["en", "mi"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^70[0-9]{2}$"],
"examples": ["7010", "7011"],
"confidence": "medium",
"notes": "Nelson City = 7010-7011 and 7040-7047."
}
},
{
"city": "Munich",
"state_province": "Bavaria",
"iso3166_2": "DE-BY",
"country": "Germany",
"iso3166_1": "DE",
"latitude": 48.1351,
"longitude": 11.582,
"local_languages": ["de"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^8[01][0-9]{3}$"],
"examples": ["80331", "81929"],
"confidence": "high",
"notes": "Munich = 80331-81929."
}
},
{
"city": "Berlin",
"state_province": "Berlin",
"iso3166_2": "DE-BE",
"country": "Germany",
"iso3166_1": "DE",
"latitude": 52.52,
"longitude": 13.405,
"local_languages": ["de"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^1[0-4][0-9]{3}$"],
"examples": ["10115", "14199"],
"confidence": "high",
"notes": "Berlin = 10115-14199."
}
},
{
"city": "Cologne",
"state_province": "North Rhine-Westphalia",
"iso3166_2": "DE-NW",
"country": "Germany",
"iso3166_1": "DE",
"latitude": 50.9375,
"longitude": 6.9603,
"local_languages": ["de"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^(?:50[6-9][0-9]{2}|51[01][0-9]{2})$"],
"examples": ["50667", "51149"],
"confidence": "high",
"notes": "Cologne = 50667-51149."
}
},
{
"city": "Bamberg",
"state_province": "Bavaria",
"iso3166_2": "DE-BY",
"country": "Germany",
"iso3166_1": "DE",
"latitude": 49.8916,
"longitude": 10.8916,
"local_languages": ["de"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^960(?:4[7-9]|5[0-2])$"],
"examples": ["96047", "96052"],
"confidence": "high",
"notes": "Bamberg = 96047-96052."
}
},
{
"city": "Brussels",
"state_province": "Brussels-Capital",
"iso3166_2": "BE-BRU",
"country": "Belgium",
"iso3166_1": "BE",
"latitude": 50.8503,
"longitude": 4.3517,
"local_languages": ["fr", "nl"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^1(?:0[0-9]{2}|1[0-9]{2}|20[0-9]|210)$"],
"examples": ["1000", "1210"],
"confidence": "high",
"notes": "Brussels-Capital Region = 1000-1210."
}
},
{
"city": "Antwerp",
"state_province": "Flanders",
"iso3166_2": "BE-VLG",
"country": "Belgium",
"iso3166_1": "BE",
"latitude": 51.2194,
"longitude": 4.4025,
"local_languages": ["nl"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^2[0-6][0-9]{2}$"],
"examples": ["2000", "2660"],
"confidence": "medium",
"notes": "City of Antwerp = 2000-2660; 2xxx also covers other Antwerp Province towns."
}
},
{
"city": "Bruges",
"state_province": "Flanders",
"iso3166_2": "BE-VLG",
"country": "Belgium",
"iso3166_1": "BE",
"latitude": 51.2093,
"longitude": 3.2247,
"local_languages": ["nl"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^(?:8000|820[01]|831[01]|834[01]|838[01])$"],
"examples": ["8000", "8200", "8310", "8380"],
"confidence": "medium",
"notes": "Bruges uses discrete codes: 8000 (centre), 8200, 8310, 8340, 8380 (submunicipalities)."
}
},
{
"city": "London",
"state_province": "England",
"iso3166_2": "GB-ENG",
"country": "United Kingdom",
"iso3166_1": "GB",
"latitude": 51.5074,
"longitude": -0.1278,
"local_languages": ["en-GB"],
"postal_code": {
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
"city_regex": [
"^(?:EC|WC|NW|SE|SW|E|N|W)[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$",
"^(?:BR|CR|DA|EN|HA|IG|KT|RM|SM|TW|UB|WD)[0-9]{1,2} ?[0-9][A-Z]{2}$"
],
"examples": ["EC1A 1BB", "SW1A 2AA", "N1 9GU"],
"confidence": "high",
"notes": "First pattern = inner London postcode areas; second = outer Greater London areas."
}
},
{
"city": "Bristol",
"state_province": "England",
"iso3166_2": "GB-ENG",
"country": "United Kingdom",
"iso3166_1": "GB",
"latitude": 51.4545,
"longitude": -2.5879,
"local_languages": ["en-GB"],
"postal_code": {
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
"city_regex": ["^BS[0-9]{1,2} ?[0-9][A-Z]{2}$"],
"examples": ["BS1 4DJ", "BS8 1TH"],
"confidence": "high",
"notes": "BS postcode area (also covers parts of North Somerset / South Gloucestershire)."
}
},
{
"city": "Edinburgh",
"state_province": "Scotland",
"iso3166_2": "GB-SCT",
"country": "United Kingdom",
"iso3166_1": "GB",
"latitude": 55.9533,
"longitude": -3.1883,
"local_languages": ["en-GB", "gd"],
"postal_code": {
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
"city_regex": ["^EH[0-9]{1,2} ?[0-9][A-Z]{2}$"],
"examples": ["EH1 1YZ", "EH8 9YL"],
"confidence": "high",
"notes": "EH postcode area."
}
},
{
"city": "Glasgow",
"state_province": "Scotland",
"iso3166_2": "GB-SCT",
"country": "United Kingdom",
"iso3166_1": "GB",
"latitude": 55.8642,
"longitude": -4.2518,
"local_languages": ["en-GB", "gd"],
"postal_code": {
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
"city_regex": ["^G[0-9]{1,2} ?[0-9][A-Z]{2}$"],
"examples": ["G1 1XW", "G12 8QQ"],
"confidence": "high",
"notes": "G postcode area."
}
},
{
"city": "Prague",
"state_province": "Prague",
"iso3166_2": "CZ-10",
"country": "Czechia",
"iso3166_1": "CZ",
"latitude": 50.0755,
"longitude": 14.4378,
"local_languages": ["cs"],
"postal_code": {
"country_format_regex": "^\\d{3} ?\\d{2}$",
"city_regex": ["^1[0-9]{2} ?[0-9]{2}$"],
"examples": ["110 00", "190 00"],
"confidence": "high",
"notes": "Prague = 100 00 - 199 00."
}
},
{
"city": "Pilsen",
"state_province": "Plzeň",
"iso3166_2": "CZ-32",
"country": "Czechia",
"iso3166_1": "CZ",
"latitude": 49.7384,
"longitude": 13.3736,
"local_languages": ["cs"],
"postal_code": {
"country_format_regex": "^\\d{3} ?\\d{2}$",
"city_regex": ["^3(?:0[0-9]|1[0-2]) ?[0-9]{2}$"],
"examples": ["301 00", "312 00"],
"confidence": "high",
"notes": "Plzen = 301 00 - 312 00."
}
},
{
"city": "Amsterdam",
"state_province": "North Holland",
"iso3166_2": "NL-NH",
"country": "Netherlands",
"iso3166_1": "NL",
"latitude": 52.3676,
"longitude": 4.9041,
"local_languages": ["nl"],
"postal_code": {
"country_format_regex": "^\\d{4} ?[A-Z]{2}$",
"city_regex": ["^(?:10[0-9]{2}|110[0-9]) ?[A-Z]{2}$"],
"examples": ["1011 AB", "1098 XG"],
"confidence": "high",
"notes": "Amsterdam = 1000-1109 numeric part."
}
},
{
"city": "Copenhagen",
"state_province": "Capital Region",
"iso3166_2": "DK-84",
"country": "Denmark",
"iso3166_1": "DK",
"latitude": 55.6761,
"longitude": 12.5683,
"local_languages": ["da"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^(?:1[0-4][0-9]{2}|2[0-5][0-9]{2})$"],
"examples": ["1050", "2100"],
"confidence": "medium",
"notes": "Copenhagen K = 1000-1499; Frederiksberg and surrounding districts = 1800-2500."
}
},
{
"city": "Warsaw",
"state_province": "Masovian",
"iso3166_2": "PL-MZ",
"country": "Poland",
"iso3166_1": "PL",
"latitude": 52.2297,
"longitude": 21.0122,
"local_languages": ["pl"],
"postal_code": {
"country_format_regex": "^\\d{2}-\\d{3}$",
"city_regex": ["^0[0-4]-[0-9]{3}$"],
"examples": ["00-001", "04-999"],
"confidence": "high",
"notes": "Warsaw = 00-001 to 04-999."
}
},
{
"city": "Krakow",
"state_province": "Lesser Poland",
"iso3166_2": "PL-MA",
"country": "Poland",
"iso3166_1": "PL",
"latitude": 50.0647,
"longitude": 19.945,
"local_languages": ["pl"],
"postal_code": {
"country_format_regex": "^\\d{2}-\\d{3}$",
"city_regex": ["^3[01]-[0-9]{3}$"],
"examples": ["30-001", "31-999"],
"confidence": "high",
"notes": "Krakow = 30-001 to 31-999."
}
},
{
"city": "Rome",
"state_province": "Lazio",
"iso3166_2": "IT-62",
"country": "Italy",
"iso3166_1": "IT",
"latitude": 41.9028,
"longitude": 12.4964,
"local_languages": ["it"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^001[0-9]{2}$"],
"examples": ["00118", "00199"],
"confidence": "high",
"notes": "Rome = 00118-00199 (00120 = Vatican City, a separate state)."
}
},
{
"city": "Milan",
"state_province": "Lombardy",
"iso3166_2": "IT-25",
"country": "Italy",
"iso3166_1": "IT",
"latitude": 45.4642,
"longitude": 9.19,
"local_languages": ["it"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^201[0-9]{2}$"],
"examples": ["20121", "20162"],
"confidence": "high",
"notes": "Milan city = 20121-20162."
}
},
{
"city": "Barcelona",
"state_province": "Catalonia",
"iso3166_2": "ES-CT",
"country": "Spain",
"iso3166_1": "ES",
"latitude": 41.3851,
"longitude": 2.1734,
"local_languages": ["ca", "es"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^080[0-9]{2}$"],
"examples": ["08001", "08042"],
"confidence": "high",
"notes": "Barcelona city = 08001-08042. Province is 08xxx."
}
},
{
"city": "Madrid",
"state_province": "Madrid",
"iso3166_2": "ES-MD",
"country": "Spain",
"iso3166_1": "ES",
"latitude": 40.4168,
"longitude": -3.7038,
"local_languages": ["es"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^280[0-9]{2}$"],
"examples": ["28001", "28080"],
"confidence": "high",
"notes": "Madrid city = 28001-28080. Community of Madrid is 28xxx."
}
},
{
"city": "Paris",
"state_province": "Île-de-France",
"iso3166_2": "FR-IDF",
"country": "France",
"iso3166_1": "FR",
"latitude": 48.8566,
"longitude": 2.3522,
"local_languages": ["fr"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^75(?:0(?:0[1-9]|1[0-9]|20)|116)$"],
"examples": ["75001", "75020", "75116"],
"confidence": "high",
"notes": "Paris = 75001-75020, plus 75116 (a second code for the 16th arrondissement)."
}
},
{
"city": "Lyon",
"state_province": "Auvergne-Rhône-Alpes",
"iso3166_2": "FR-ARA",
"country": "France",
"iso3166_1": "FR",
"latitude": 45.764,
"longitude": 4.8357,
"local_languages": ["fr"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^6900[1-9]$"],
"examples": ["69001", "69009"],
"confidence": "high",
"notes": "Lyon = 69001-69009 (nine arrondissements)."
}
},
{
"city": "Stockholm",
"state_province": "Stockholm",
"iso3166_2": "SE-AB",
"country": "Sweden",
"iso3166_1": "SE",
"latitude": 59.3293,
"longitude": 18.0686,
"local_languages": ["sv"],
"postal_code": {
"country_format_regex": "^\\d{3} ?\\d{2}$",
"city_regex": ["^1[0-9]{2} ?[0-9]{2}$"],
"examples": ["111 22", "190 47"],
"confidence": "medium",
"notes": "Stockholm County = 1xx xx."
}
},
{
"city": "Gothenburg",
"state_province": "Västra Götaland",
"iso3166_2": "SE-O",
"country": "Sweden",
"iso3166_1": "SE",
"latitude": 57.7089,
"longitude": 11.9746,
"local_languages": ["sv"],
"postal_code": {
"country_format_regex": "^\\d{3} ?\\d{2}$",
"city_regex": ["^4[0-2][0-9] ?[0-9]{2}$"],
"examples": ["411 05", "425 41"],
"confidence": "medium",
"notes": "Gothenburg = 400 00 - 425 99."
}
},
{
"city": "Oslo",
"state_province": "Oslo",
"iso3166_2": "NO-03",
"country": "Norway",
"iso3166_1": "NO",
"latitude": 59.9139,
"longitude": 10.7522,
"local_languages": ["no"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^0[0-9]{3}$"],
"examples": ["0010", "0980"],
"confidence": "medium",
"notes": "Oslo = 0001-1295; the 0xxx block is the city proper."
}
},
{
"city": "Dublin",
"state_province": "Leinster",
"iso3166_2": "IE-L",
"country": "Ireland",
"iso3166_1": "IE",
"latitude": 53.3498,
"longitude": -6.2603,
"local_languages": ["en", "ga"],
"postal_code": {
"country_format_regex": "^(?:D6W|[AC-FHKNPRTV-Y]\\d{2}) ?[0-9AC-FHKNPRTV-Y]{4}$",
"city_regex": [
"^(?:D6W|D0[1-9]|D1[0-8]|D2[024]) ?[0-9AC-FHKNPRTV-Y]{4}$"
],
"examples": ["D01 Y981", "D02 K303", "D6W XY00"],
"confidence": "high",
"notes": "Dublin routing keys: D01-D18, D20, D22, D24 and the exception D6W. Note D19, D21, D23 are not issued."
}
},
{
"city": "Vienna",
"state_province": "Vienna",
"iso3166_2": "AT-9",
"country": "Austria",
"iso3166_1": "AT",
"latitude": 48.2082,
"longitude": 16.3738,
"local_languages": ["de-AT"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^1(?:0[1-9]0|1[0-9]0|2[0-3]0)$"],
"examples": ["1010", "1230"],
"confidence": "high",
"notes": "Vienna = 1010-1230, always ending in 0 (district number x10)."
}
},
{
"city": "Zurich",
"state_province": "Zurich",
"iso3166_2": "CH-ZH",
"country": "Switzerland",
"iso3166_1": "CH",
"latitude": 47.3769,
"longitude": 8.5417,
"local_languages": ["de-CH"],
"postal_code": {
"country_format_regex": "^\\d{4}$",
"city_regex": ["^80[0-6][0-9]$"],
"examples": ["8001", "8064"],
"confidence": "high",
"notes": "City of Zurich = 8001-8064."
}
},
{
"city": "Tallinn",
"state_province": "Harju",
"iso3166_2": "EE-37",
"country": "Estonia",
"iso3166_1": "EE",
"latitude": 59.437,
"longitude": 24.7536,
"local_languages": ["et"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^1[0-3][0-9]{3}$"],
"examples": ["10111", "13516"],
"confidence": "medium",
"notes": "Tallinn = 10xxx-13xxx."
}
},
{
"city": "Denver",
"state_province": "Colorado",
"iso3166_2": "US-CO",
"country": "United States",
"iso3166_1": "US",
"latitude": 39.7392,
"longitude": -104.9903,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^80[2-3][0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["80202", "80249"],
"confidence": "high",
"notes": "Denver = 80202-80249 plus 80290-80299."
}
},
{
"city": "Portland",
"state_province": "Oregon",
"iso3166_2": "US-OR",
"country": "United States",
"iso3166_1": "US",
"latitude": 45.5152,
"longitude": -122.6784,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^972[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["97201", "97294"],
"confidence": "high",
"notes": "Portland, Oregon = 972xx."
}
},
{
"city": "San Diego",
"state_province": "California",
"iso3166_2": "US-CA",
"country": "United States",
"iso3166_1": "US",
"latitude": 32.7157,
"longitude": -117.1611,
"local_languages": ["en-US", "es-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^921[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["92101", "92199"],
"confidence": "high",
"notes": "San Diego = 921xx."
}
},
{
"city": "Asheville",
"state_province": "North Carolina",
"iso3166_2": "US-NC",
"country": "United States",
"iso3166_1": "US",
"latitude": 35.5951,
"longitude": -82.5515,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^288[0-1][0-9](?:-[0-9]{4})?$"],
"examples": ["28801", "28816"],
"confidence": "high",
"notes": "Asheville = 28801-28816."
}
},
{
"city": "Grand Rapids",
"state_province": "Michigan",
"iso3166_2": "US-MI",
"country": "United States",
"iso3166_1": "US",
"latitude": 42.9634,
"longitude": -85.6681,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^495[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["49503", "49546"],
"confidence": "high",
"notes": "Grand Rapids = 495xx."
}
},
{
"city": "Chicago",
"state_province": "Illinois",
"iso3166_2": "US-IL",
"country": "United States",
"iso3166_1": "US",
"latitude": 41.8781,
"longitude": -87.6298,
"local_languages": ["en-US", "es-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^60[6-8][0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["60601", "60661"],
"confidence": "high",
"notes": "Chicago = 606xx-608xx."
}
},
{
"city": "Seattle",
"state_province": "Washington",
"iso3166_2": "US-WA",
"country": "United States",
"iso3166_1": "US",
"latitude": 47.6062,
"longitude": -122.3321,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^981[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["98101", "98199"],
"confidence": "high",
"notes": "Seattle = 981xx."
}
},
{
"city": "Austin",
"state_province": "Texas",
"iso3166_2": "US-TX",
"country": "United States",
"iso3166_1": "US",
"latitude": 30.2672,
"longitude": -97.7431,
"local_languages": ["en-US", "es-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^787[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["78701", "78799"],
"confidence": "high",
"notes": "Austin = 787xx."
}
},
{
"city": "Boston",
"state_province": "Massachusetts",
"iso3166_2": "US-MA",
"country": "United States",
"iso3166_1": "US",
"latitude": 42.3601,
"longitude": -71.0589,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^02[12][0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["02108", "02215"],
"confidence": "high",
"notes": "Boston = 021xx and 022xx."
}
},
{
"city": "Philadelphia",
"state_province": "Pennsylvania",
"iso3166_2": "US-PA",
"country": "United States",
"iso3166_1": "US",
"latitude": 39.9526,
"longitude": -75.1652,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^191[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["19102", "19147"],
"confidence": "high",
"notes": "Philadelphia = 191xx."
}
},
{
"city": "Brooklyn",
"state_province": "New York",
"iso3166_2": "US-NY",
"country": "United States",
"iso3166_1": "US",
"latitude": 40.6782,
"longitude": -73.9442,
"local_languages": ["en-US", "es-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^112[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["11201", "11256"],
"confidence": "high",
"notes": "Brooklyn = 112xx."
}
},
{
"city": "Milwaukee",
"state_province": "Wisconsin",
"iso3166_2": "US-WI",
"country": "United States",
"iso3166_1": "US",
"latitude": 43.0389,
"longitude": -87.9065,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^532[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["53202", "53233"],
"confidence": "high",
"notes": "Milwaukee = 532xx."
}
},
{
"city": "Richmond",
"state_province": "Virginia",
"iso3166_2": "US-VA",
"country": "United States",
"iso3166_1": "US",
"latitude": 37.5407,
"longitude": -77.436,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^232[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["23219", "23298"],
"confidence": "high",
"notes": "Richmond = 232xx."
}
},
{
"city": "Cincinnati",
"state_province": "Ohio",
"iso3166_2": "US-OH",
"country": "United States",
"iso3166_1": "US",
"latitude": 39.1031,
"longitude": -84.512,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^452[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["45202", "45255"],
"confidence": "high",
"notes": "Cincinnati = 452xx."
}
},
{
"city": "St. Louis",
"state_province": "Missouri",
"iso3166_2": "US-MO",
"country": "United States",
"iso3166_1": "US",
"latitude": 38.627,
"longitude": -90.1994,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^631[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["63101", "63139"],
"confidence": "high",
"notes": "St. Louis = 631xx."
}
},
{
"city": "Tampa",
"state_province": "Florida",
"iso3166_2": "US-FL",
"country": "United States",
"iso3166_1": "US",
"latitude": 27.9506,
"longitude": -82.4572,
"local_languages": ["en-US", "es-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^336[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["33602", "33647"],
"confidence": "high",
"notes": "Tampa = 336xx."
}
},
{
"city": "Minneapolis",
"state_province": "Minnesota",
"iso3166_2": "US-MN",
"country": "United States",
"iso3166_1": "US",
"latitude": 44.9778,
"longitude": -93.265,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^554[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["55401", "55488"],
"confidence": "high",
"notes": "Minneapolis = 554xx."
}
},
{
"city": "Burlington",
"state_province": "Vermont",
"iso3166_2": "US-VT",
"country": "United States",
"iso3166_1": "US",
"latitude": 44.4759,
"longitude": -73.2121,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^054[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["05401", "05408"],
"confidence": "high",
"notes": "Burlington = 054xx."
}
},
{
"city": "Portland",
"state_province": "Maine",
"iso3166_2": "US-ME",
"country": "United States",
"iso3166_1": "US",
"latitude": 43.6591,
"longitude": -70.2568,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^041[0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["04101", "04124"],
"confidence": "high",
"notes": "Portland, Maine = 041xx. Distinct from Portland, Oregon (972xx)."
}
},
{
"city": "Atlanta",
"state_province": "Georgia",
"iso3166_2": "US-GA",
"country": "United States",
"iso3166_1": "US",
"latitude": 33.749,
"longitude": -84.388,
"local_languages": ["en-US"],
"postal_code": {
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
"city_regex": ["^30[3-9][0-9]{2}(?:-[0-9]{4})?$"],
"examples": ["30303", "30363"],
"confidence": "medium",
"notes": "Atlanta city = 303xx; the wider metro extends across 303xx-309xx."
}
},
{
"city": "Toronto",
"state_province": "Ontario",
"iso3166_2": "CA-ON",
"country": "Canada",
"iso3166_1": "CA",
"latitude": 43.651,
"longitude": -79.347,
"local_languages": ["en-CA"],
"postal_code": {
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
"city_regex": [
"^M[0-9][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
],
"examples": ["M5H 2N2", "M4B 1B3"],
"confidence": "high",
"notes": "Toronto = the entire 'M' forward sortation area."
}
},
{
"city": "Vancouver",
"state_province": "British Columbia",
"iso3166_2": "CA-BC",
"country": "Canada",
"iso3166_1": "CA",
"latitude": 49.2827,
"longitude": -123.1207,
"local_languages": ["en-CA"],
"postal_code": {
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
"city_regex": [
"^V[5-7][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
],
"examples": ["V6B 1A1", "V5K 0A1"],
"confidence": "medium",
"notes": "Vancouver proper = V5/V6; V7 covers North/West Vancouver and Richmond."
}
},
{
"city": "Montreal",
"state_province": "Quebec",
"iso3166_2": "CA-QC",
"country": "Canada",
"iso3166_1": "CA",
"latitude": 45.5017,
"longitude": -73.5673,
"local_languages": ["fr-CA", "en-CA"],
"postal_code": {
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
"city_regex": [
"^H[0-9][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
],
"examples": ["H3B 2Y7", "H2X 1Y4"],
"confidence": "high",
"notes": "Montreal = the entire 'H' forward sortation area."
}
},
{
"city": "Calgary",
"state_province": "Alberta",
"iso3166_2": "CA-AB",
"country": "Canada",
"iso3166_1": "CA",
"latitude": 51.0447,
"longitude": -114.0719,
"local_languages": ["en-CA"],
"postal_code": {
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
"city_regex": [
"^T[1-3][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
],
"examples": ["T2P 1J9", "T3A 0A1"],
"confidence": "medium",
"notes": "Calgary uses T1Y, T2A-T2Z and T3A-T3R; the T1/T3 blocks also include nearby communities."
}
},
{
"city": "Halifax",
"state_province": "Nova Scotia",
"iso3166_2": "CA-NS",
"country": "Canada",
"iso3166_1": "CA",
"latitude": 44.6488,
"longitude": -63.5752,
"local_languages": ["en-CA"],
"postal_code": {
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
"city_regex": ["^B3[ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"],
"examples": ["B3H 4R2", "B3J 1P3"],
"confidence": "medium",
"notes": "Halifax peninsula/urban = B3x. The wider municipality also uses B2x and B4x."
}
},
{
"city": "Mexico City",
"state_province": "Mexico City",
"iso3166_2": "MX-CMX",
"country": "Mexico",
"iso3166_1": "MX",
"latitude": 19.4326,
"longitude": -99.1332,
"local_languages": ["es-MX"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^(?:0[1-9]|1[0-6])[0-9]{3}$"],
"examples": ["01000", "16900"],
"confidence": "high",
"notes": "Mexico City = 01000-16999."
}
},
{
"city": "Tijuana",
"state_province": "Baja California",
"iso3166_2": "MX-BCN",
"country": "Mexico",
"iso3166_1": "MX",
"latitude": 32.5149,
"longitude": -117.0382,
"local_languages": ["es-MX"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^22[0-6][0-9]{2}$"],
"examples": ["22000", "22660"],
"confidence": "medium",
"notes": "Tijuana = 22000-22699."
}
},
{
"city": "Monterrey",
"state_province": "Nuevo León",
"iso3166_2": "MX-NLE",
"country": "Mexico",
"iso3166_1": "MX",
"latitude": 25.6866,
"longitude": -100.3161,
"local_languages": ["es-MX"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^64[0-9]{3}$"],
"examples": ["64000", "64988"],
"confidence": "medium",
"notes": "Monterrey city = 64000-64999; the metro area extends into 65xxx-67xxx."
}
},
{
"city": "Guadalajara",
"state_province": "Jalisco",
"iso3166_2": "MX-JAL",
"country": "Mexico",
"iso3166_1": "MX",
"latitude": 20.6597,
"longitude": -103.3496,
"local_languages": ["es-MX"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^44[0-9]{3}$"],
"examples": ["44100", "44990"],
"confidence": "medium",
"notes": "Guadalajara city = 44100-44999; Zapopan/Tlaquepaque use 45xxx."
}
},
{
"city": "Ensenada",
"state_province": "Baja California",
"iso3166_2": "MX-BCN",
"country": "Mexico",
"iso3166_1": "MX",
"latitude": 31.8667,
"longitude": -116.5964,
"local_languages": ["es-MX"],
"postal_code": {
"country_format_regex": "^\\d{5}$",
"city_regex": ["^228[0-9]{2}$"],
"examples": ["22800", "22890"],
"confidence": "medium",
"notes": "Ensenada = 22800-22899."
}
}
]