locations

Administrative units

Localities, towns, communes, counties and regions, with the full administrative hierarchy, official codes and coordinates. The reference set for every address field in your application.

Try it now · no accountlive · 200 OK · 18 ms · 3 results · cache HIT
GET /api/locations/v1/localitati?q=cluj
{
  "data": [
    { "nume": "Cluj-Napoca", "cod": 54975, "judet": "CJ", "tip": "municipiu" },
    { "nume": "Cluj", "cod": 54932, "judet": "CJ", "tip": "județ" },
    { "nume": "Voluntari", "cod": 104630, "judet": "IF", "tip": "oraș" }
  ],
  "meta": {
    "actualizat": {
      "administrativ": "2026-07-23T04:00:00Z",
      "populatie": "2026-07-23T04:00:00Z"
    }
  }
}
The dataset
Localities
13.755
API routes
89
Version
v1 · stable
Import frequency
daily
Postal codes
54.571
Licence
public data
01 Schema

What you get in every record.

The fields below are guaranteed in v1. We add fields without changing the version, so your client has to ignore what it does not know.

FieldTypeDescription
nume string The official name, with diacritics.
cod integer Unique official code, stable across updates.
judet string County code, two letters (ISO 3166-2:RO).
tip enum municipiu · oraș · comună · sat · județ · regiune
populatie integer | null Population at the last census. Null where it is not reported.
coord object | null Coordinates: lat, lng. Null for units with no defined centroid.
parinte object | null The parent administrative unit, as a short reference.
actualizat datetime When the record last changed.
02 Endpoints

What you can query.

GET /api/locations/v1/localitati

Localities

List and full-text search, filterable by county and type.

GET /api/locations/v1/localitati/{cod}

One locality

A single locality, with the full hierarchy on request.

GET /api/locations/v1/judete

Counties

Every county, with the number of localities in each.

GET /api/locations/v1/judete/{cod}/localitati

A county’s localities

The localities inside one county.

GET /api/locations/v1/regiuni

Regions

The development regions and the counties in them.

GET /api/locations/v1/cauta

Unified search

One search across every kind of unit.

03 Use cases

What it is used for, concretely.

AUTOCOMPLETE

Address field

Suggestions as the user types, filtered by county if they have already picked one.

# 300 ms debounce in the client
GET /api/locations/v1/localitati
  ?q=volun&judet=IF&limita=8
VALIDATION

Addresses at checkout

You check that the locality–county pair really exists before you save the order.

# 404 if the pair is not valid
GET /api/locations/v1/localitati/104630
  ?include=judet
REPORTING

Geographic grouping

You aggregate orders by county or region on stable codes, not on hand-typed strings.

# the hierarchy, for rollups
GET /api/locations/v1/regiuni
  ?include=judete
04 Source and limits

Where the data comes from and what you can do with it.

Source and updates

The data comes from the official administrative nomenclature and from public census sources. We normalise it: consistent diacritics, unit types mapped onto a fixed enum, hierarchy filled in where the source leaves it implicit.

The set is static — it changes only when a real administrative change happens (reclassification, renaming, a new commune). We check the source monthly and publish changes in the changelog. Every response carries `actualizat`, and the `x-data-updated` header tells you how old the set is.

Limits and licence

Official codes are stable: we neither reuse nor reassign them. A locality that is dissolved stays in the set with `stare: inactiva`, so old integrations do not break.

The data is public and you can use it commercially in your product, on any plan including Free. What you cannot do is redistribute the raw set as a competing product. Coordinates are approximate, at administrative centroid level — they are not exact address geocoding.

Start on the free plan. Ten thousand requests a month, every module, no card. Upgrading is one button, when and if you need it.
Generate a token All modules