oneapi
Autentificare
Business v1 / Achiziții publice

Profil autoritate

Rezumatul achizițiilor unei autorități contractante (după CUI): număr de contracte, valoare totală și
top 5 furnizori. 404 dacă nu apare ca autoritate.

GET
https://oneapi.ro/api/business/v1/autoritati/{cui}

Parametri de cale

NumeTipDescriereExemplu
cuiobligatoriu string CUI-ul autorităţii contractante, fără prefixul RO.

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • „Nu are” e un răspuns, nu o eroare. Când firma există, dar n-are ce cere ruta, răspunsul e 200 cu data: null şi motivul în meta.fara_date. 404 înseamnă doar că firma (CUI-ul) nu există — aşa poţi deosebi cele două cazuri şi poţi păstra în cache răspunsul negativ.
  • Nu toate contractele au valoare declarată. Măsurat pe 4 octombrie 2026, pe toate cele 17,39 milioane de rânduri: lipseşte la 10,8% din contracte (312.587 rânduri), şi aproape niciodată la achiziţii directe (47 din 13,68 milioane) sau la notificări (52 din 811.033). Orice sumă e deci a rândurilor care AU cifră, nu a întregului — la tip=contracte, a nouă zecimi din ele. Numărul de contracte le acoperă pe toate. Filtrele val_min/val_max lucrează pe valoarea în lei, deci exclud rândurile fără valoare.
  • Profilul unei autorităţi contractante după CUI: totalul atribuit plus top furnizori. Perspectiva inversă a achiziţiilor unei firme.
  • Două denumiri, şi asta e intenţionat. identitate.denumire e cea oficială, de la Ministerul Finanţelor; denumire_seap e numele tastat în anunţ. Pot diferi mult: CUI-ul 930 apare în SEAP drept „Institutul National de Cercetare Dezvoltare pentru Mecatronica si Tehnica Masurarii-INCDMTM", iar oficial „INSTITUTUL NATIONAL DE CERCETARE-DEZVOLTARE PENTRU MECATRONICA SI TEHNICA MASURARII - I.N.C.D.M.T.M. BUCURESTI". Pentru afişare foloseşte denumire, care alege singur.
  • 3,4% dintre autorităţi n-au identitate oficială. Nu e o scăpare, ci o lipsă reală în datele fiscale, iar ruta o spune explicit prin identitate_lipsa în loc să lase adresa goală, tăcut. Identitatea se întoarce doar pentru persoane juridice: pentru cele câteva autorităţi înregistrate ca persoane fizice, adresa şi telefonul personal nu ies niciodată pe rută.

La ce folosește

  • Pregătirea unei abordări comerciale către o instituţie: ce cumpără şi de la cine.
  • Analiza dependenţei unei autorităţi de un număr mic de furnizori.
  • Perspectiva inversă, când ai deja profilul furnizorului.

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 aşa cum apare în anunţurile SEAP — cea mai frecventă dintre variante. Diferă des de cea oficială şi uneori mult, fiindcă e tastată de cine publică anunţul: 6,8% din autorităţi apar sub mai multe nume, una sub 23. Rămâne în răspuns ca să poţi regăsi autoritatea şi după numele din anunţ.
data.identitate object Identitatea oficială, din datele de identificare ale Ministerului Finanţelor. null când CUI-ul n-are corespondent acolo — vezi identitate_lipsa.
data.identitate.denumire string Denumirea oficială.
data.identitate.adresa object Adresa sediului: stradă, număr, bloc, scară, etaj, apartament, sector, localitate, judeţ, cod poştal. Câmpurile necompletate la sursă vin null.
data.identitate.adresa.strada string
data.identitate.adresa.numar string Numărul de elemente numărate.
data.identitate.adresa.bloc null
data.identitate.adresa.scara null
data.identitate.adresa.etaj null
data.identitate.adresa.apartament null
data.identitate.adresa.sector null Sectorul instituţional ori economic.
data.identitate.adresa.localitate string
data.identitate.adresa.judet string Judeţul la care se referă valoarea.
data.identitate.adresa.cod_postal string
data.identitate.stare string Starea fiscală (INREGISTRAT, RADIAT, TRANSFER(SOSIRE) ş.a.).
data.identitate.data_stare string Data de la care e în starea asta.
data.identitate.reg_com null Numărul din Registrul Comerţului, unde există. Instituţiile publice nu se înregistrează acolo, deci pentru ele e null.
data.identitate.data_inregistrare string Data înregistrării fiscale.
data.identitate.data_radiere null Data radierii, dacă a fost radiată.
data.identitate.tip_contribuabil string Mereu PJ: ruta întoarce identitate doar pentru persoane juridice.
data.identitate.an integer Anul instantaneului din care vin datele de identificare. O adresă fără anul ei nu se poate citi.
data.identitate_lipsa null Doar când identitate e null: de ce lipseşte. Atunci denumire e numele din anunţul SEAP, iar adresa nu se cunoaşte.
data.are_fisa boolean true dacă entitatea e şi în registrul firmelor, deci are sens să ceri /firme/{cui}. Pentru majoritatea autorităţilor e false: instituţiile publice nu se înregistrează la Registrul Comerţului.
data.total.nr_contracte integer Numărul de contracte.
data.total.valoare_ron number Valoarea, în lei.
data.top_furnizori[].castigator string Firma câştigătoare.
data.top_furnizori[].cui integer Codul fiscal.
data.top_furnizori[].cui_romanesc boolean
data.top_furnizori[].nr_contracte integer Numărul de contracte.
data.top_furnizori[].valoare_ron number Valoarea, în lei.
meta.fara_date string Doar când răspunsul e gol: de ce nu există date (de pildă „Firma nu are cod LEI înregistrat la GLEIF.”). Lipseşte când data e completat.
meta.fara_date_cod string Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

GEThttps://oneapi.ro/api/business/v1/autoritati/4547125
{
    "data": {
        "cui": 4547125,
        "denumire": "INSTITUTUL ONCOLOGIC PROF.DR.I.CHIRICUTA CLUJ-NAPOCA",
        "denumire_seap": "Institutul Oncologic Prof. Dr. I. Chiricuta Cluj-Napoca",
        "identitate": {
            "denumire": "INSTITUTUL ONCOLOGIC PROF.DR.I.CHIRICUTA CLUJ-NAPOCA",
            "adresa": {
                "strada": "Republicii",
                "numar": "34-36",
                "bloc": null,
                "scara": null,
                "etaj": null,
                "apartament": null,
                "sector": null,
                "localitate": "Cluj-Napoca",
                "judet": "CLUJ",
                "cod_postal": "400015"
            },
            "stare": "MODIFICARE PUBLICI",
            "data_stare": "1993-08-24",
            "reg_com": null,
            "data_inregistrare": "2013-11-21",
            "data_radiere": null,
            "tip_contribuabil": "PJ",
            "an": 2026
        },
        "identitate_lipsa": null,
        "are_fisa": false,
        "total": {
            "nr_contracte": 44401,
            "valoare_ron": 6134746820.27
        },
        "top_furnizori": [
            {
                "castigator": "ALLIANCE HEALTHCARE ROMANIA",
                "cui": 8955860,
                "cui_romanesc": true,
                "nr_contracte": 2064,
                "valoare_ron": 1296610831.62
            }
        ]
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitCUI-ul [{cui}] nu apare ca autoritate contractantă şi nici ca firmă în registru.
422validareRuta nu primeşte parametri, în afară de lang: orice alt parametru dă 422, nu e ignorat.
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": "Ruta nu primeşte parametri, în afară de lang: orice alt parametru dă 422, nu e ignorat.",
        "detalii": {
            "cui": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}