oneapi
Sign in
Locations v1 / Educatie

Schools of an administrative unit

The educational establishments in the unit, both legal entities and the structures attached to them, by level and by urban or rural setting. From the official school network, not estimates.

GET
https://oneapi.ro/api/locations/v1/uat/{cod}/educatie

Path parameters

NameTypeDescriptionExample
codrequired string SIRUTA code of the administrative-territorial unit (e.g. 54975 for Cluj-Napoca).

Query parameters

NameTypeDescriptionAccepted values
per_paginaoptional text How many institutions the list returns (50 by default, 200 at most). The summary always stays complete. e.g. 50
paginaoptional text The page, counted from 1. e.g. 1

How it behaves

  • The source is the Ministry of Education's school network register. The link to the territory is made through the locality's SIRUTA code, which every institution carries — verified: all 18,022 institutions resolve in the nomenclature.
  • sumar deliberately separates institutions with legal personality (unitati_pj) from subordinate structures (structuri_arondate). They are different things: a commune with one school and four subordinate kindergartens has unitati_pj: 1, not „5 schools". A single total would inflate the figure several times over.
  • unitati is paginated, because a large municipality has hundreds of institutions (Cluj-Napoca: 200). The summary and the breakdowns by type and by urban/rural are computed over the WHOLE unit, regardless of pagination.
  • cod_siiir is the institution's official identifier in the Ministry of Education's system — the stable key, if you want to track the same institution over time.

What it is for

  • Showing the school network on the detail page of a commune or a town.
  • Comparing educational coverage between units (how many institutions, of what kind, urban or rural).
  • Checking whether a locality has a kindergarten or a lower-secondary school before a relocation or investment decision.

Response structure

FieldTypeDescription
data.uat.cod_siruta integer SIRUTA code of the territorial unit.
data.uat.nume string The name, exactly as the source publishes it.
data.uat.tip string The type of unit (municipality/town/commune).
data.judet.cod_siruta integer SIRUTA code of the territorial unit.
data.judet.nume string The name, exactly as the source publishes it.
data.judet.cod_auto string Vehicle registration prefix of the county.
data.sumar.unitati_pj integer Institutions with legal personality (the school as an entity).
data.sumar.structuri_arondate integer Subordinate structures (premises, attached kindergartens).
data.sumar.total integer The total number of register entries for the requested territory.
data.pe_tip[] array Breakdown by institution type [{tip, nr}] (school, school sports club and so on).
data.pe_tip[].tip string
data.pe_tip[].nr integer Number of items in this group.
data.pe_mediu object Urban/rural breakdown, by the institution's declared area.
data.pe_mediu.urban integer
data.unitati[] array The paginated list: {denumire, cod_siiir, cui?, statut, tip, mediu, adresa?, an_scolar, localitate}.
data.unitati[].denumire string The name, exactly as the source publishes it.
data.unitati[].cod_siiir string
data.unitati[].cui integer Tax identification number, without the RO prefix.
data.unitati[].statut string The state the item is in at the source.
data.unitati[].tip string
data.unitati[].mediu string Area of residence (urban or rural).
data.unitati[].adresa string The address, in the form published by the source.
data.unitati[].an_scolar string
data.unitati[].localitate.nume string The name, exactly as the source publishes it.
data.unitati[].localitate.cod_siruta integer SIRUTA code of the territorial unit.
meta.paginare.pagina integer Current page, counted from 1.
meta.paginare.per_pagina integer How many records a page holds.
meta.paginare.total integer Total matching records, beyond the current page.
meta.paginare.pagini integer How many pages the list has.

Response examples

GEThttps://oneapi.ro/api/locations/v1/uat/54975/educatie
{
    "data": {
        "uat": {
            "cod_siruta": 54975,
            "nume": "Cluj-Napoca",
            "tip": "municipiu"
        },
        "judet": {
            "cod_siruta": 127,
            "nume": "Cluj",
            "cod_auto": "CJ"
        },
        "sumar": {
            "unitati_pj": 147,
            "structuri_arondate": 53,
            "total": 200
        },
        "pe_tip": [
            {
                "tip": "Unitate de învățământ",
                "nr": 192
            }
        ],
        "pe_mediu": {
            "urban": 200
        },
        "unitati": [
            {
                "denumire": "COLEGIUL TERȚIAR NONUNIVERSITAR AL USAMV CLUJ-NAPOCA",
                "cod_siiir": "1262105561",
                "cui": 4288381,
                "statut": "AR",
                "tip": "Unitate de învățământ",
                "mediu": "urban",
                "adresa": "Calea Mănăștur nr. 3-5",
                "an_scolar": "2025-2026",
                "localitate": {
                    "nume": "Cluj-Napoca",
                    "cod_siruta": 54984
                }
            }
        ]
    },
    "meta": {
        "paginare": {
            "pagina": 1,
            "per_pagina": 50,
            "total": 200,
            "pagini": 4
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404negasitNo administrative unit exists for the given SIRUTA code.
422validareA parameter failed validation (per_pagina, pagina); detalii says which and why.
429cota_depasitaThe plan's monthly quota has been exceeded (see Retry-After).

All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "A parameter failed validation (per_pagina, pagina); detalii says which and why.",
        "detalii": {
            "cod": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}