The dataset
1,674,947 settlements.
No attribution required.
Countries, administrative divisions and settlements, every one with coordinates. Built only from public-domain sources and released into the public domain, so nothing you build on it carries an obligation back.
Counted
Countries and territories 255
one sign = 10 countries
Administrative divisions 4,328
one sign = 200 divisions
Settlements 1,674,947
one sign = 10,000 settlements
Type, and the aggregate comes apart
Ready.
On the units
One sign in the settlements row stands for ten thousand of them, and the field below it resolves into the places it stood for, fetched live. Each row keeps its own unit, so the three fields are not to a shared scale — four orders of magnitude will not sit on one key honestly. Every figure is read from the publisher's release pointer when this page is built, never typed in.
What it costs you
The comparison this chart was invented for.
Neurath built pictorial statistics to make obligations comparable at a glance. Every general-purpose place dataset carries terms that follow your work downstream. Here is what each one attaches.
| Source | Licence | Attaches |
|---|---|---|
| placedb Nothing travels with it. Ship it in a product, a paper, or a competitor. | CC0-1.0 | Nothing |
| GeoNames Credit must appear wherever the data does, including inside your app. | CC BY 4.0 | |
| Anything OpenStreetMap-derived Credit, and a derived database you distribute has to carry the same terms. | ODbL 1.0 |
A courtesy link is welcome and is not a condition. Nothing in CC0 requires it.
How it is served
Most of a location API is not a query.
The dataset changes about once a month, so the answers are files. They sit in object storage behind a CDN with nothing computing in front of them — which is why there is no key to ask for and no bill to send.
-
/v1/countries.jsonEvery country, with codes, currency, calling code and counts. -
/v1/regions/<CC>.jsonThe administrative divisions of one country. -
/v1/cities/<CC>/<admin1>.jsonEvery settlement inside one division. The complete list, always. -
/v1/ac/<CC>/<prefix>.jsonAn autocomplete bucket. Ask for the prefix you have, go one character deeper while the answer says it is incomplete.
A whole division, in one request
$ curl -s https://api.placedb.org/v1/regions/IS.json
{"country":"IS","regions":[{"id":203304,"iso_3166_2":"IS-1",
"lat":64.2,"lon":-21.7,"name":"Capital Region","population":233034,
"settlements":16,"slug":"capital-region"},{"id":220663,
"iso_3166_2":"IS-7","lat":65.283333,"lon":-14.3833…
Checkable
Every response names the release it came from.
Each file carries release and s_version,
and the index
(3.9 MB) holds a sha256 for every one of them. The build is deterministic: the same
release and the same code produce identical bytes, so you can rebuild
what you were served and check it matches — or take the dataset and
stop depending on this service entirely.
What it does not do
The parts worth knowing before you commit.
- Names are ASCII. Reykjavík is served as Reykjavik. The transliteration comes from the dataset, and this service does not correct it. If you need local spellings, this is the wrong dataset today.
- No search across countries. Autocomplete works within one country. A cross-border search endpoint needs compute, and compute is the thing keeping this free.
-
A place can appear twice. Berlin is a state and a
city, so the API returns both, under the same id. That is two different
answers, not a duplicate — disambiguate on
type. - No key, no quota, no meter. Fair use, on trust. Please do not mirror the whole tree through the CDN; the dataset is right there and it is yours.
Start
Nothing to sign up for.
There is no account, no key and no trial. The endpoint is public right now — the fastest way to evaluate it is to call it.