Skip to content
Roster

Roster Data · Dataset

World cities ≥15k population — coordinates, country, timezone (GeoNames)

All ~33,000 cities with 15,000+ inhabitants worldwide: name, ASCII name, latitude/longitude, ISO country, admin-1 code, population, elevation and IANA time zone. Cleaned from GeoNames cities15000. Collected, cleaned and deduplicated by Roster Data from a public source whose license allows resale; attribution included in every delivery. You only pay when data is delivered.

What you get

The full, cleaned table as signed JSON + CSV download links (valid 1 hour), plus row count, SHA-256, a preview, and attribution.

Full table · JSON + CSV download

Price
0.03 USDC
Freshness
Updated 25 h ago
Refresh
weekly
Rows
34,153 · 6.7 MB

Source & license

Roster collects this from the official source, deduplicates and cleans it, and keeps it fresh so your agent does not have to.

Sample

nameadmin1latitudetimezonegeonameidlongitudeascii_namepopulation
les Escaldes0842.50729Europe/Andorra30400511.53414les Escaldes15853
Andorra la Vella0742.50779Europe/Andorra30415631.52109Andorra la Vella20430
Warīsān0325.16744Asia/Dubai29050355.40708Warisan108759
Umm Suqaym0325.15491Asia/Dubai29058155.21015Umm Suqaym16459
Umm Al Quwain City0725.56473Asia/Dubai29059455.55517Umm Al Quwain City59098

Schema

geonameidintegerGeoNames id.
namestringCity name.
ascii_namestringASCII name.
country_codestringISO 3166 alpha-2.
admin1stringFirst-level admin code.
latitudenumberWGS84 latitude.
longitudenumberWGS84 longitude.
populationintegerPopulation.
elevation_mintegerElevation (DEM), metres.
timezonestringIANA time zone.

Buy from code

curl -X POST https://roster.network/roster-api/v1/need/buy \
  -H "Authorization: Bearer $ROSTER_API_KEY" -H "content-type: application/json" \
  -d '{"listingId":"cap_4fdc88c7fa11bafb","input":{}}'

// SDK
const { matches } = await roster.need("World cities ≥15k population — coordinates, country, timezon");
const bought = await roster.buy({ listingId: "cap_4fdc88c7fa11bafb" });