Business v1 / Firme
Achiziţii publice
Contractele publice câștigate de firmă (SEAP/TED), ordonate cronologic. Filtre: ?an=, ?tip=
(directe/contracte/notificari). Paginat. Include autoritatea contractantă, obiect, CPV și valoare (RON/EUR).
GET
https://oneapi.ro/api/business/v1/firme/{cui}/achizitii
Parametri de cale
NumeTipDescriereExemplu
cuiobligatoriu
string
Codul de identificare fiscală al firmei, fără prefixul
RO (ex. 6719278).
Parametri de interogare
NumeTipDescriereValori acceptate
anopțional
integer | null
Filtrare pe anul contractului.
ex. 2026
tipopțional
string | null
Tipul procedurii/atribuirii.
contractedirectenotificari
Cum se comportă
- 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. Filtreleval_min/val_maxlucrează pe valoarea în lei, deci exclud rândurile fără valoare. - Contractele de achiziţie publică pe care firma le-a câştigat, din datele SEAP: autoritate contractantă, valoare, cod CPV, dată. Paginat, cu filtre pe
anşitip. - Pentru imaginea de ansamblu există
/achizitii/sumar(agregate: total, pe an, pe tip, top autorităţi şi CPV). Perspectiva inversă — ce a cumpărat o autoritate — e la/autoritati/{cui}. - O firmă din registru care n-a câştigat nicio achiziţie răspunde
200cudata: nullşi motivul înmeta.fara_date; cuanoritip, un filtru fără rezultate dă o listă goală.404rămâne doar pentru un CUI pe care nu-l ştie nici registrul, nici SEAP. - Fiecare contract apare o dată: publicările mai vechi ale unui contract republicat de SEAP şi valoarea contractului repetată pe alte loturi nu se listează (le deschide
/achizitii/{id}).valoare.rone valoarea declarată;valoare.atribuita_ron, partea acestui câştigător, e cea din sume. - Sumele numără fiecare contract o singură dată şi cu partea fiecărui câştigător. SEAP republică anunţul de atribuire la fiecare actualizare (1,19 M de rânduri de contracte sunt republicări), repetă valoarea contractului pe fiecare lot (0,52 M) şi pune valoarea ÎNTREGULUI acord-cadru pe fiecare câştigător (228.000 de rânduri). Citite brut, contractele 2021–2026 însumau 7.059 de miliarde de lei, iar Farmexim 248 de miliarde; corectat, 1.212 miliarde şi 14,6. Valorile imposibile (un simulator de trafic aerian de 125,9 miliarde, lactate de 1,59 miliarde la un DGASPC) nu intră în sume.
La ce folosește
- Due diligence: cât şi de la cine câştigă o firmă din bani publici.
- Analiză de piaţă pe un sector de achiziţii.
- Monitorizarea unui furnizor sau a unei autorităţi.
Structura răspunsului
CâmpTipDescriere
data[].id
integer
Identificatorul contractului. Deschide-l cu
/achizitii/{id}, unde e anunţul SEAP întreg (număr anunţ, criteriu de atribuire, finanţare din fonduri UE).
data[].an
integer
Anul de referinţă.
data[].data_contract
string | null
Data contractului.
data[].autoritate
string | null
Autoritatea care ţine registrul.
data[].autoritate_cui
integer | null
Codul fiscal al autorităţii contractante.
data[].obiect
string | null
Obiectul contractului, aşa cum a fost publicat.
data[].cpv
string | null
Codul CPV al obiectului.
data[].cpv_denumire
string | null
Denumirea oficială a codului CPV, din nomenclator. E descrierea de rezervă când autoritatea n-a scris nimic folositor în
obiect — 4.582 de achiziţii directe au acolo chiar cuvântul „directa". null la cele 11 coduri (din 8.628) care nu există în nomenclatorul CPV 2008.
data[].valoare.ron
number | null
Valoarea contractului, în lei.
data[].valoare.eur
number | null
Valoarea contractului, în euro.
data[].valoare.moneda_originala
string | null
Moneda în care a fost publicat contractul.
data[].valoare.atribuita_ron
number | null
Ce-i revine acestui câştigător: valoarea declarată împărţită la câştigătorii aceluiaşi acord-cadru;
null dacă valoarea declarată e imposibilă. Pe ea se fac toate sumele.
data[].valoare.castigatori
integer
Câţi câştigători împart acelaşi contract (acord-cadru); 1 de obicei.
data[].valoare.suspecta
boolean
true dacă valoarea declarată e imposibilă (de peste 10 ori estimarea procedurii ori de mii de ori peste contractele obişnuite ale autorităţii); rămâne afişată, dar nu intră în sume.
data[].tip
string | null
Tipul.
data[].procedura
string | null
Tipul procedurii de atribuire.
meta.paginare.pagina
integer
Pagina curentă.
meta.paginare.per_pagina
integer
Rezultate pe pagină.
meta.paginare.total
integer
Total rezultate.
meta.paginare.pagini
integer
Număr de pagini.
Exemple de răspuns
GEThttps://oneapi.ro/api/business/v1/firme/6719278/achizitii
{
"data": [
{
"id": 57979033,
"an": 2026,
"data_contract": "2026-03-31",
"autoritate": "Teatrul Municipal Lucia Sturdza Bulandra",
"autoritate_cui": 4220955,
"obiect": "alimente - recuzita consumabila spectacol Mascariciul",
"cpv": "15000000-8",
"cpv_denumire": "Alimente, băuturi, tutun şi produse conexe",
"valoare": {
"ron": 81.27,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 81.27,
"castigatori": 1,
"suspecta": false
},
"tip": "notificari",
"procedura": "Furnizare"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 776,
"pagini": 39
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/14399840/achizitii
{
"data": [
{
"id": 47405479,
"an": 2026,
"data_contract": "2026-03-31",
"autoritate": "RAJA S.A CONSTANTA",
"autoritate_cui": 1890420,
"obiect": "Apple MacBook Air 13'' cu procesor Apple M5, 10 nuclee CPU, 8 nuclee GPU, 16GB RAM, 512GB SSD",
"cpv": "30213100-6",
"cpv_denumire": "Computere portabile",
"valoare": {
"ron": 4958.67,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 4958.67,
"castigatori": 1,
"suspecta": false
},
"tip": "directe",
"procedura": "Furnizare"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 67306,
"pagini": 3366
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/2054341/achizitii
{
"data": null,
"meta": {
"fara_date": "Firma [2054341] n-a câştigat nicio achiziţie publică.",
"fara_date_cod": "fara_contracte"
}
}
GEThttps://oneapi.ro/api/business/v1/firme/24890577/achizitii
{
"data": [
{
"id": 47408306,
"an": 2026,
"data_contract": "2026-03-31",
"autoritate": "Biblioteca Municipala Gheorgheni",
"autoritate_cui": 15980999,
"obiect": "ACHIZITIE PACHET CURATENIE",
"cpv": "44423000-1",
"cpv_denumire": "Diverse articole",
"valoare": {
"ron": 562.14,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 562.14,
"castigatori": 1,
"suspecta": false
},
"tip": "directe",
"procedura": "Furnizare"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 520,
"pagini": 26
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | CUI-ul [{cui}] nu e nici în registrul firmelor, nici câştigător în SEAP. |
| 422 | validare | Un parametru nedeclarat ori o valoare care nu trece validarea (an, tip). Câmpul vinovat e în detalii. |
| 429 | cota_depasita | Cota 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": "Un parametru nedeclarat ori o valoare care nu trece validarea (an, tip). Câmpul vinovat e în detalii.",
"detalii": {
"cui": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}