World City Search Online
Autocomplete 70 000 world cities by name (accents optional, English and Vietnamese names), find the nearest cities to a point, population and time zone.
Result
Press “Run” to see the result.
q searches city names by prefix, without caring about accents or case (ha noi, Hà Nội and hanoi all find Hanoi), including the English and Vietnamese names GeoNames has (Thượng Hải finds Shanghai). Exact names come first, then prefixes, then names where a later word starts with your text (york also matches New York); within each group the bigger city wins. Filter with country (ISO code) and min_population.
lat + lon returns the nearest cities (reverse geocoding at city level) with the distance in km, optionally within radius_km. id (or /v1/cities/<geonameid>) returns one city with its country, first-level division (state / province), population, elevation, IANA time zone and current UTC offset, feature type (capital, seat of a division…) and alternate names; details=true adds the same fields to search results.
Data: GeoNames cities5000 (every place with at least 5 000 inhabitants plus seats of administrative divisions), refreshed weekly, licensed CC BY 4.0 – keep the attribution text visible when you show the data. Division names follow GeoNames and may lag behind recent reorganisations (for Vietnam's 2025 provinces use /v1/vn-provinces).
Use this in your code
curl "https://apibox.io.vn/v1/cities?q=da%20nang&limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/cities?q=da%20nang&limit=2', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/cities?q=da%20nang&limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/cities?q=da%20nang&limit=2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));API documentation → Get a free API key
FAQ
Do I need to type accents?
No. Names are matched without accents and case, so "da nang" finds Đà Nẵng and "sao paulo" finds São Paulo.
Why is a small town missing?
The dataset keeps places with at least 5 000 inhabitants and seats of administrative divisions (about 70 000 places). Villages are not included.
What must I credit?
GeoNames, under CC BY 4.0: show the attribution string returned by the API (for example in the footer of the page that displays the results).