Cities
34,149 cities of 15,000 people or more, grouped by state and country. Contains data from GeoNames (geonames.org), CC BY 4.0.
Free
How do I add Cities autocomplete to my app?
Cities is a free AutoSugges reference list of 37,156 items. Query it with your publishable key as the key parameter and the typed text as q, after at least two characters. Results come back pre-ranked from the edge, ten by default, ready for the AutoSugges React, React Native or HTML component.
Try it
Type to search this list live from the AutoSugges edge.
Loading the live demo…
Want this list in your own app? Subscribe to embed it.
Provenance
- What it is
- 34,149 cities of 15,000 people or more, grouped by state and country. Contains data from GeoNames (geonames.org), CC BY 4.0.
- Source
- GeoNames
- Authority
- Authoritative
- May AutoSugges redistribute it
- Yes
- Attribution required
- Yes
- Refresh cadence
- Daily upstream; no archived versions, so dataset.json is the reproducible artefact
- Last retrieved
- 2026-09-23
- Availability
- Free
- Reference list or entity dataset
- Reference list
Field schema
37,156 items, across 3 hierarchy levels: country, state, city.
- country: 244
- state: 2,763
- city: 34,149
| Field | Type | Meaning |
|---|---|---|
| value | string | The canonical, unique value — what a query resolves to. |
| displayValue | string | The locale-resolved label a suggestion renders. |
| description | string, optional | Free-text detail shown beside the item. NAICS uses it for the ancestor breadcrumb; not every dataset sets it. |
| parentSourceId | string, optional | The parent item in the source’s own key space, for a hierarchical dataset. |
| hierarchyLevel | string, optional | Which level of the hierarchy this item sits at. |
| displayOrder | integer | Curated display order, distinct from relevance rank. |
| aliases | string[] | Alternate spellings that resolve to this item. |
| metadata | object | Dataset-specific fields — e.g. NAICS’s `code`/`level`/`trilateral`, or a country’s `alpha2`/`alpha3`/`numeric`. |
A worked item
{
"value": "1138958",
"displayValue": "Kabul",
"description": "Kabul, Afghanistan",
"aliases": [
"Kabul"
],
"metadata": {
"region": "Kabul, Afghanistan",
"geonameid": "1138958",
"countryCode": "AF",
"admin1Code": "13",
"population": 4434550,
"lat": 34.52813,
"lon": 69.17233,
"timezone": "Asia/Kabul"
},
"ancestors": [
{
"value": "AF",
"displayValue": "Afghanistan"
},
{
"value": "AF.13",
"displayValue": "Kabul"
}
]
}Query it
/v1/query?key=YOUR_PUBLISHABLE_KEY&q=kabulThe publishable key above is a public, browser-safe identifier — never a secret.
Related
Frequently asked questions
- What is in the Cities dataset?
- 34,149 cities of 15,000 people or more, grouped by state and country. Contains data from GeoNames (geonames.org), CC BY 4.0. It has 37,156 items. Its source is GeoNames. Authority: Authoritative. Licence: Creative Commons Attribution 4.0 International (CC BY 4.0), both files. Changes made: cities15000 filtered and restructured by country and first-order division, joined to admin1CodesASCII for the division names. Refresh cadence: Daily upstream; no archived versions, so dataset.json is the reproducible artefact.
- Is the Cities dataset free?
- AutoSugges-published free datasets are never priced on their own — every plan includes all of them. What a plan prices is how many queries you may make, not which free list you may query. A few catalog entries are licensed from a third party or supplied by you, and those carry their own access terms, shown on that dataset's own page.
- How do I query Cities?
- Call GET /v1/query with your publishable key as the key parameter and the typed text as q, or mount the AutoSugges component for React, React Native or HTML. The runtime answers from the edge and never reads a database.
- What is the minimum number of characters before a query runs?
- Two by default. A list owner can change the minimum, but it can never be 1. The client reads the real value from bootstrap and sends no request below it, so do not hardcode it.
- How long does the client wait after typing before it queries?
- 150 milliseconds by default. The value is delivered through bootstrap and a list owner can raise it, so the client uses the policy value rather than a constant.
- What happens when my query quota runs out?
- The runtime returns a structured quota_exceeded response that carries no items and no placeholder suggestions, so exhaustion is never mistaken for no results. Render it from the typed error code and prompt an upgrade.