Skip to main content
Every city record carries an optional type field describing what kind of place it is. The value is inherited from the upstream GeoNames feature classification.
The type field mixes two ideas — what a place is (city, town, village) and what administrative role it fills (adm2, county, parish). The same place can be tagged either way. For example, Dallas is adm2 because it is the seat of Dallas County, and major Australian cities are adm1 because they are seats of state-level governments.

All Type Values

There are 35 distinct values across 153,765 city rows.
typeCountSettlement?Meaning
city96,098Actual city
adm220,7962nd-order admin division — usually a real city that is also a county/district seat
adm315,774Mostly real municipalities/communes tagged with their admin role
section5,346Suburbs and districts of larger cities
county4,409County-level admin unit — not a settlement
adm43,909Similar mix to adm3
adm13,5051st-order admin division — usually a state/region seat (e.g. major Australian cities)
district2,381District-level populated place
(null)1,900⚠️No type assigned — see below
regency390Indonesian kabupaten — admin division
prefecture369Prefecture-level admin division
locality319Named populated place
capital281National or regional capital
municipality209Municipality
parish80Louisiana-style parish (= county)
banner52Inner Mongolia banner — admin division
town48Town
province36Province-level admin division
adm5165th-order admin division (populated)
abandoned15Abandoned place
cities13Data artifact of city
area12Generic administrative area
village10Village
historical9Historical place — not a live settlement
settlement9Settlement
oblast8Oblast — admin division
gov_seat6Government seat (populated)
special municipality6Special municipality
administrative zone5Administrative zone
region4Region-level admin division
destroyed3Destroyed place
township3Township
religious2Religious site — not a settlement
subdistrict1Subdistrict (populated)
historical_capital1Former capital — not a live settlement

Filtering to Genuine Settlements

For use cases like “find the nearest city to a location” or “populate a dropdown”, you want to exclude admin-only and non-place types. Use an exclusion list rather than an inclusion list — any new settlement-style value added in the future is kept by default. Exclude these types:
county, regency, prefecture, parish, banner, province, area, oblast,
administrative zone, region, abandoned, historical, destroyed, religious,
historical_capital

SQL

SELECT *
FROM cities
WHERE (
  type IS NULL
  OR type NOT IN (
    'county', 'regency', 'prefecture', 'parish', 'banner', 'province',
    'area', 'oblast', 'administrative zone', 'region',
    'abandoned', 'historical', 'destroyed', 'religious', 'historical_capital'
  )
)
AND latitude IS NOT NULL
AND longitude IS NOT NULL;
type NOT IN (...) evaluates to UNKNOWN for rows where type is NULL, silently dropping them. The explicit type IS NULL OR ... keeps null-type rows. Remove the type IS NULL clause only if you want to exclude them.

JavaScript

const EXCLUDED_TYPES = new Set([
  'county', 'regency', 'prefecture', 'parish', 'banner', 'province',
  'area', 'oblast', 'administrative zone', 'region',
  'abandoned', 'historical', 'destroyed', 'religious', 'historical_capital',
]);

const settlements = cities.filter(
  (c) => !EXCLUDED_TYPES.has(c.type) && c.latitude != null && c.longitude != null
);

Python

EXCLUDED_TYPES = {
  'county', 'regency', 'prefecture', 'parish', 'banner', 'province',
  'area', 'oblast', 'administrative zone', 'region',
  'abandoned', 'historical', 'destroyed', 'religious', 'historical_capital',
}

settlements = [
  c for c in cities
  if c.get('type') not in EXCLUDED_TYPES
  and c.get('latitude') is not None
  and c.get('longitude') is not None
]

Records with No Type

About 1,900 rows have a null type. They are a mix of legitimate places and unclassified entries. For strict settlement queries, the safest signal is the presence of valid coordinates (latitude/longitude not null), and — where available — a non-null population.

Database Schema

Full cities table definition including the type field.

Multi-Level Territories

How overseas territories and dual-modeled entities affect city queries.