Business v1 / Achiziții publice
Căutare achiziţii
Caută contracte publice (SEAP/TED) după: ?cpv= (prefix), ?autoritate_cui=, ?castigator_cui=,
?an=, ?tip=, ?val_min=, ?val_max=. Cel puțin un filtru e obligatoriu. Paginat.
GET
https://oneapi.ro/api/business/v1/achizitii/cauta
Parametri de interogare
NumeTipDescriereValori acceptate
judet_autoritateopțional
string | null
Judeţul AUTORITĂŢII care cumpără — „cât s-a cheltuit acolo”. Nu-l confunda cu
judet_castigator.
max 64 car.
judet_castigatoropțional
string | null
Judeţul FIRMEI care încasează — „cât au încasat firmele de acolo”. Nu-l confunda cu
judet_autoritate.
max 64 car.
anopțional
integer | null
Anul contractului.
ex. 2024ex. 2023
autoritate_cuiopțional
integer | null
CUI-ul autorităţii contractante.
1
castigator_cuiopțional
integer | null
CUI-ul câştigătorului.
1
cpvopțional
string | null
Cod CPV.
ex. 03000000-1
tipopțional
string | null
Tipul procedurii:
contracte (atribuiri clasice), directe (achiziţii directe) sau notificari. La notificari peste jumătate din rânduri n-au valoare — orice sumă e a jumătăţii care are cifră.
contractedirectenotificari
val_maxopțional
number | null
Valoarea maximă a contractului, în lei. Aceeaşi coloană ca
val_min.
0
val_minopțional
number | null
Valoarea minimă a contractului, în lei. Filtrul lucrează pe
valoare_ron, deci prinde şi contractele exprimate în valută.
0
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. - Căutare globală în contractele de achiziţii publice, cu filtre:
cpv,autoritate_cui,castigator_cui,an,tip,val_min,val_max. Cel puţin un filtru e obligatoriu — baza are ~17 milioane de contracte. - 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
- Monitorizarea contractelor dintr-un cod CPV care te interesează.
- Analiza pieţei înainte de a licita: cine câştigă, la ce valori.
- Alimentarea unui flux de alerte pe achiziţii publice.
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 | null
Anul de referinţă.
data[].data_contract
string | null
Data contractului.
data[].autoritate.nume
string | null
Denumirea autorităţii contractante.
data[].autoritate.cui
integer | null
Codul fiscal al autorităţii contractante.
data[].castigator.nume
string | null
Denumirea firmei câştigătoare.
data[].castigator.cui
integer | null
Codul fiscal al câştigătorului. ⚠️ SEAP scrie în acelaşi câmp şi identificatori străini: din 179.814 identificatori distincţi, 8.656 (4,8%) nu sunt CUI-uri româneşti valide — vezi
cui_romanesc.
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.
data[].castigator.cui_romanesc
boolean
true dacă valoarea validează ca CUI românesc (inclusiv cifra de control). false înseamnă doar că NU e un CUI românesc — de regulă un identificator străin (1.257 au peste 10 cifre) sau un cod cu cifra de control greşită (7.392). Nu pretindem că ştim a cui e. Util înainte de /firme/{cui}: cu false, firma nu va fi găsită acolo.
Exemple de răspuns
GEThttps://oneapi.ro/api/business/v1/achizitii/cauta?castigator_cui=6719278
{
"data": [
{
"id": 57979033,
"an": 2026,
"data_contract": "2026-03-31",
"autoritate": {
"nume": "Teatrul Municipal Lucia Sturdza Bulandra",
"cui": 4220955
},
"castigator": {
"nume": "Mega Image",
"cui": 6719278,
"cui_romanesc": true
},
"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/achizitii/cauta?judet_autoritate=CJ&an=2024&per_pagina=3
{
"data": [
{
"id": 53792523,
"an": 2024,
"data_contract": "2024-12-31",
"autoritate": {
"nume": "Compania de Apa Somes S.A.",
"cui": 201217
},
"castigator": {
"nume": "NTT DATA ROMANIA",
"cui": 13091574,
"cui_romanesc": true
},
"obiect": null,
"cpv": "48517000-5",
"cpv_denumire": "Pachete software IT",
"valoare": {
"ron": 1691916,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 1691916,
"castigatori": 1,
"suspecta": false
},
"tip": "contracte",
"procedura": "Procedura simplificata"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 150741,
"pagini": 50247
}
}
}
GEThttps://oneapi.ro/api/business/v1/achizitii/cauta?cpv=03000000-1&per_pagina=3
{
"data": [
{
"id": 47402467,
"an": 2026,
"data_contract": "2026-03-31",
"autoritate": {
"nume": "GRADINITA CU PROGRAM PRELUNGIT NR.5",
"cui": 29034729
},
"castigator": {
"nume": "MUNTEAN VASILE-VALENTIN",
"cui": 30446928,
"cui_romanesc": true
},
"obiect": "LEGUME -FRUCTE",
"cpv": "03000000-1",
"cpv_denumire": "Produse agricole, de fermă, de pescuit, de silvicultură şi produse conexe",
"valoare": {
"ron": 2101.34,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 2101.34,
"castigatori": 1,
"suspecta": false
},
"tip": "directe",
"procedura": "Furnizare"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 4894,
"pagini": 1632
}
}
}
GEThttps://oneapi.ro/api/business/v1/achizitii/cauta?tip=directe&an=2023&per_pagina=3
{
"data": [
{
"id": 56109553,
"an": 2023,
"data_contract": "2023-12-28",
"autoritate": {
"nume": "ACADEMIA DE STUDII ECONOMICE BUCURESTI",
"cui": 4433775
},
"castigator": {
"nume": "CRISCAT INVEST",
"cui": 39400533,
"cui_romanesc": true
},
"obiect": "Lucrari izolare fonica sala de sport Academia de Studii Economice din Bucuresti",
"cpv": "44112600-4",
"cpv_denumire": "Izolaţie acustică",
"valoare": {
"ron": 845000,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 845000,
"castigatori": 1,
"suspecta": false
},
"tip": "directe",
"procedura": null
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 2317110,
"pagini": 772370
}
}
}
GEThttps://oneapi.ro/api/business/v1/achizitii/cauta?val_min=1000000&an=2024&per_pagina=3
{
"data": [
{
"id": 53792575,
"an": 2024,
"data_contract": "2024-12-31",
"autoritate": {
"nume": "Compania Nationala Aeroporturi Bucuresti SA",
"cui": 26490194
},
"castigator": {
"nume": "BUSINESS PLUS",
"cui": 15732322,
"cui_romanesc": true
},
"obiect": null,
"cpv": "50100000-6",
"cpv_denumire": "Servicii de reparare şi de întreţinere a vehiculelor şi a echipamentelor aferente şi servicii conexe",
"valoare": {
"ron": 1718475,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 1718475,
"castigatori": 1,
"suspecta": false
},
"tip": "contracte",
"procedura": "Licitatie deschisa"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 12066,
"pagini": 4022
}
}
}
GEThttps://oneapi.ro/api/business/v1/achizitii/cauta?autoritate_cui=4220955&per_pagina=3
{
"data": [
{
"id": 57979004,
"an": 2026,
"data_contract": "2026-03-31",
"autoritate": {
"nume": "Teatrul Municipal Lucia Sturdza Bulandra",
"cui": 4220955
},
"castigator": {
"nume": "Lica Flower Shop",
"cui": 40565934,
"cui_romanesc": true
},
"obiect": "aranjament florar",
"cpv": "44423000-1",
"cpv_denumire": "Diverse articole",
"valoare": {
"ron": 600,
"eur": null,
"moneda_originala": null,
"atribuita_ron": 600,
"castigatori": 1,
"suspecta": false
},
"tip": "notificari",
"procedura": "Furnizare"
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 4588,
"pagini": 1530
}
}
}
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. |
| 422 | validare | Un parametru nedeclarat ori o valoare care nu trece validarea (an, autoritate_cui, castigator_cui, cpv, tip, val_max, val_min). Câmpul vinovat e în detalii. |
| 422 | fara_filtru | Specifică cel puțin un filtru (cpv/autoritate_cui/castigator_cui/an/tip/val_min/val_max). |
| 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, autoritate_cui, castigator_cui, cpv, tip, val_max, val_min). Câmpul vinovat e în detalii.",
"detalii": {
"judet_autoritate": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}