Business v1 / Achiziții publice
Top winners
The ranking of public contract winners by total value. Filters: ?an=, ?cpv=.
GET
https://oneapi.ro/api/business/v1/achizitii/top-castigatori
Query parameters
NameTypeDescriptionAccepted values
judet_autoritateoptional
string | null
The county of the AUTHORITY doing the buying — "how much was spent there". Not to be confused with
judet_castigator.
max 64 car.
judet_castigatoroptional
string | null
The county of the COMPANY being paid — "how much companies from there earned". Not to be confused with
judet_autoritate.
max 64 car.
anoptional
integer | null
Contract year; without it the ranking covers the whole series.
e.g. 2024
cpvoptional
string | null
The CPV code of the object, to see the ranking within a single category.
e.g. 03000000-1
autoritate_cuioptional
integer | null
„De la cine cumpără instituţia asta", însumat pe furnizor. Fără el, răspunsul la întrebarea
aia exista doar ca listă fixă de cinci rânduri pe fişa autorităţii — la Ministerul
Finanţelor sunt 1.398 de poziţii şi 1,35 miliarde de lei, deci cinci furnizori nu descriu
unde s-au dus banii. 1
aia exista doar ca listă fixă de cinci rânduri pe fişa autorităţii — la Ministerul
Finanţelor sunt 1.398 de poziţii şi 1,35 miliarde de lei, deci cinci furnizori nu descriu
unde s-au dus banii. 1
limitaoptional
integer | null
How many rows the ranking returns, 1–200. Defaults to what the route returns without it.
1 – 200
How it behaves
- Not every contract has a declared value. Measured on 4 October 2026, across all 17.39 million rows: it is missing on 10.8% of contracts (312,587 rows), and almost never on direct awards (47 out of 13.68 million) or notices (52 out of 811,033). Any total is therefore the total of the rows that DO carry a figure, not of the whole set — for
tip=contracte, of nine tenths of them. Contract counts cover all rows. Theval_min/val_maxfilters work on the RON value, so they exclude rows without one. - The ranking of companies by the value of public contracts won. Filterable by year and CPV, for sector top lists.
- Sums count each contract once, with each winner's share. SEAP republishes the award notice on every update (1.19 M contract rows are republications), repeats the contract value on every lot (0.52 M) and puts the value of the WHOLE framework agreement on every winner (228,000 rows). Read raw, the 2021–2026 contracts added up to 7,059 billion lei and Farmexim to 248 billion; corrected, 1,212 billion and 14.6. Impossible values (a 125.9-billion air-traffic simulator, 1.59 billion of dairy at a child-protection directorate) are left out of sums.
What it is for
- Identifying the dominant players in a procurement sector.
- A ranking for data journalism, filtered by year and CPV.
- Finding potential partners or competitors before bidding.
Response structure
All fields below live inside data[].
FieldTypeDescription
castigator
string
The winning company.
cui
integer
The tax ID.
nr_contracte
integer
The number of contracts.
valoare_ron
number | null
The value, in RON.
Response examples
GEThttps://oneapi.ro/api/business/v1/achizitii/top-castigatori
{
"data": [
{
"castigator": "ALLIANCE HEALTHCARE ROMANIA",
"cui": 8955860,
"cui_romanesc": true,
"nr_contracte": 103581,
"valoare_ron": 22574958360.69
}
],
"meta": {
"limita": 20
}
}
GEThttps://oneapi.ro/api/business/v1/achizitii/top-castigatori?an=2024
{
"data": [
{
"castigator": "Hanwha Aerospace Co. Ltd",
"cui": 1942110000480,
"cui_romanesc": false,
"nr_contracte": 1,
"valoare_ron": 4602657510
}
],
"meta": {
"an": 2024,
"limita": 20
}
}
GEThttps://oneapi.ro/api/business/v1/achizitii/top-castigatori?cpv=03000000-1
{
"data": [
{
"castigator": "MATRA S.R.L.",
"cui": 6287579,
"cui_romanesc": true,
"nr_contracte": 11,
"valoare_ron": 2154051.2
}
],
"meta": {
"cpv": "03000000-1",
"limita": 20
}
}
GEThttps://oneapi.ro/api/business/v1/achizitii/top-castigatori?judet_castigator=CJ
{
"data": [
{
"castigator": "DELTAMED",
"cui": 9434372,
"cui_romanesc": true,
"nr_contracte": 12986,
"valoare_ron": 5654565666.83
}
],
"meta": {
"judet_castigator": "CJ",
"limita": 20
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 422 | validare | An undeclared parameter or a value that fails validation (an, cpv). The offending field is in detalii. |
| 429 | cota_depasita | The 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": "An undeclared parameter or a value that fails validation (an, cpv). The offending field is in detalii.",
"detalii": {
"judet_autoritate": [
"The value sent does not satisfy the parameter rule."
]
}
}
}