oneapi
Autentificare
Business v1 / Achiziții publice

Autorități contractante

Lista entităților care au atribuit cel puțin un contract public, cu denumirea oficială și județul
din datele de identificare MF/ANAF. Filtre: ?judet=, ?q=; sortare: ?sortare=valoare|contracte|denumire.

⚠️ NU e lista instituțiilor publice din România, și meta.definitie o spune în răspuns. E lista
entităților care apar ca autoritate contractantă în achizițiile publice — printre ele sunt și
companii de stat, regii și institute, iar instituțiile care n-au atribuit nimic lipsesc. Un registru
canonic al instituțiilor publice nu există la noi: tip_contrib distinge doar persoane juridice de
fizice, iar „persoană juridică fără corespondent ONRC" ar da 302.112 entități, în majoritate
asociații, fundații și birouri notariale.

GET
https://oneapi.ro/api/business/v1/autoritati

Parametri de interogare

NumeTipDescriereValori acceptate
judetopțional string | null Judeţul sediului: numele (cu sau fără diacritice, cu ș ori cu ş) ori codul auto — Cluj, cluj, CJ, Argeș, ARGEŞ duc toate în acelaşi loc. Bucureştiul se cere București ori B. Un judeţ care nu există dă 422, nu o listă goală. ⚠️ Autorităţile fără identitate oficială n-au judeţ, deci niciun filtru pe judeţ nu le întoarce. max 64 car.
qopțional string | null Caută în denumirea oficială ŞI în cea din anunţ, oriunde în text. Minimum două caractere. max 120 car.
sortareopțional string | null valoare (implicit) — după suma atribuită; contracte — după numărul lor; denumire — alfabetic, cu autorităţile fără identitate oficială la coadă. valoarecontractedenumire

Cum se comportă

  • NU e lista instituţiilor publice din România. E lista entităţilor care au atribuit cel puţin un contract public — printre ele sunt şi companii de stat, regii şi institute, iar instituţiile care n-au atribuit nimic lipsesc. Definiţia vine şi în răspuns, în meta.definitie. Un registru canonic al instituţiilor publice nu există în datele noastre: tipul de contribuabil distinge doar persoanele juridice de cele fizice, iar „persoană juridică fără corespondent la Registrul Comerţului" ar da peste 300.000 de entităţi, în majoritate asociaţii, fundaţii şi birouri notariale.
  • Denumirea şi adresa vin din altă sursă decât contractele. Numele din anunţul SEAP e tastat de cine publică şi variază; denumirea oficială şi judeţul vin din datele de identificare ale Ministerului Finanţelor, iar an_identitate spune din ce instantaneu. Pentru 3,5% dintre autorităţi identitatea lipseşte — atunci are_identitate e false şi judeţul e null, deci filtrul judet nu le va întoarce.
  • q caută în ambele denumiri, oficială şi din anunţ. Caută după cum scrie sursa oficială: „MUNICIPIUL CLUJ-NAPOCA", nu „Primăria Cluj".

La ce folosește

  • Construirea unei liste de instituţii-ţintă pe judeţ, ordonată după bugetul pe care îl cheltuie.
  • Găsirea codului fiscal al unei autorităţi după nume, ca să poţi deschide apoi profilul ei.
  • Alimentarea unui index de pagini per autoritate, cu denumire şi adresă oficiale.

Structura răspunsului

CâmpTipDescriere
data[].cui integer Codul fiscal.
data[].denumire string Denumirea de afişat: cea oficială când o avem, altfel cea din anunţ.
data[].denumire_seap string Denumirea din anunţurile SEAP — cea mai frecventă dintre variante.
data[].are_identitate boolean true dacă denumirea vine din datele oficiale, false dacă e cea din anunţ.
data[].localitate string Localitatea sediului, din datele oficiale. null fără identitate.
data[].judet string Judeţul sediului, din datele oficiale. null fără identitate.
data[].stare string Starea fiscală. null fără identitate.
data[].an_identitate integer Anul instantaneului din care vin denumirea şi localitatea. null fără identitate.
data[].nr_contracte integer Numărul de contracte atribuite.
data[].valoare_ron number Valoarea totală atribuită, în lei. null când niciun contract n-are valoare declarată.
meta.definitie string Ce înseamnă exact lista — citeşte-o înainte s-o prezinţi drept „instituţiile publice".
meta.paginare.pagina integer Pagina curentă, numărată de la 1.
meta.paginare.per_pagina integer Câte înregistrări are o pagină.
meta.paginare.total integer Totalul înregistrărilor care se potrivesc, dincolo de pagina curentă.
meta.paginare.pagini integer Câte pagini are lista.

Exemple de răspuns

GEThttps://oneapi.ro/api/business/v1/autoritati?per_pagina=5
{
    "data": [
        {
            "cui": 16054368,
            "denumire": "COMPANIA NAŢIONALĂ DE ADMINISTRARE A INFRASTRUCTURII RUTIERE S.A.",
            "denumire_seap": "COMPANIA NATIONALA DE ADMINISTRARE A INFRASTRUCTURII RUTIERE S.A.",
            "are_identitate": true,
            "localitate": "Bucureşti",
            "judet": "MUNICIPIUL BUCUREŞTI",
            "stare": "INREGISTRAT",
            "an_identitate": 2026,
            "nr_contracte": 38814,
            "valoare_ron": 247815790850.72
        }
    ],
    "meta": {
        "definitie": "Entitățile care au atribuit cel puțin un contract public. NU e lista instituțiilor publice din România: include companii de stat și regii, iar instituțiile fără contracte atribuite lipsesc.",
        "paginare": {
            "pagina": 1,
            "per_pagina": 5,
            "total": 17479,
            "pagini": 3496
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareParametru necunoscut, sortare în afara listei, ori q mai scurt de două caractere.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "Parametru necunoscut, sortare în afara listei, ori q mai scurt de două caractere.",
        "detalii": {
            "judet": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}