Business v1 / Statistici
County statistics
The aggregates of the companies registered in a county: their number by status, one year's summed balance sheets and the public contracts they won.
GET
https://oneapi.ro/api/business/v1/judete/{judet}/statistici
Path parameters
NameTypeDescriptionExample
judetrequired
string
County name (e.g.
Cluj) or its two-letter code.
Query parameters
NameTypeDescriptionAccepted values
anoptional
integer | null
The year of the balance sheets and contracts. By default, the newest year with most balance sheets filed.
e.g. 2025
How it behaves
- Three aggregates of the companies with their registered office in the county: how many, by status; one year's summed balance sheets (turnover, net profit, employees); the public contracts won that year.
- Without
an, the newest year with most balance sheets filed. A year without balance sheets returns200withdata: nullandmeta.fara_date. - The company count and contracts use today's registered office; balance sheets use the office of their year (from the trade-register history): a company that moved from Cluj to Bucharest in 2024 counts for Cluj for its 2021 balance sheet. Activity at working points in other counties is added to the registered office — as the Ministry of Finance reports it.
- Employees are the sum of the average headcounts in balance sheets, not the jobs located in the county (an employee of a national chain headquartered in Bucharest counts for Bucharest).
- Impossible values written in the form (a turnover of 300,000 billion lei, 62,355 employees at a company with 275,000 lei in turnover) become
nulland stay out of rankings and averages. Insurers' forms have no turnover line, so they havecifra_afaceri: null. - 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
- A county page on an economics site: how many companies, how much they produce, how many people they employ.
- Comparing counties by summed turnover or by the share of loss-making companies.
- How much public money reaches the county's companies.
Response structure
FieldTypeDescription
data.firme.total
integer
How many companies have their registered office in the county, in any status.
data.firme.pe_stare.activa
integer
data.firme.pe_stare.radiata
integer
data.firme.pe_stare.alta
integer
data.firme.pe_stare.dizolvata
integer
data.firme.pe_stare.suspendata
integer
data.firme.pe_stare.insolventa
integer
data.firme.pe_stare.lichidare
integer
data.financiar.an
integer
The balance-sheet year.
data.financiar.firme_cu_bilant
integer
How many companies in the county filed a balance sheet for that year.
data.financiar.cifra_afaceri
integer
Summed turnover, in lei.
data.financiar.profit_net
integer
Summed net profit, in lei (profits minus losses).
data.financiar.salariati
integer
Summed employees (the sum of the average headcounts).
data.financiar.firme_profitabile
integer
Companies with a positive net profit.
data.financiar.firme_pe_pierdere
integer
Companies with a loss.
data.achizitii.an
integer
The contracts' year.
data.achizitii.contracte
integer
The contracts and direct purchases won by the county's companies.
data.achizitii.valoare_ron
number
Their summed value, in lei.
data.achizitii.firme_castigatoare
integer
How many companies in the county won at least one.
meta.judet
string
The requested county.
meta.an
integer
The year of the balance sheets and of the contracts.
data.firme.pe_categorie
The companies by trade-register status category:
activa, radiata, suspendata, dizolvata, lichidare, insolventa, alta (expired office, temporary suspension…).
Response examples
GEThttps://oneapi.ro/api/business/v1/judete/CJ/statistici
{
"data": {
"firme": {
"total": 194068,
"pe_stare": {
"activa": 92059,
"radiata": 86032,
"alta": 8851,
"dizolvata": 3361,
"suspendata": 2385,
"insolventa": 862,
"lichidare": 518
}
},
"financiar": {
"an": 2025,
"firme_cu_bilant": 57955,
"cifra_afaceri": 143299532993,
"profit_net": 11479995899,
"salariati": 203976,
"firme_profitabile": 32059,
"firme_pe_pierdere": 19887
},
"achizitii": {
"an": 2025,
"contracte": 117524,
"valoare_ron": 10206696537.11,
"firme_castigatoare": 4757
}
},
"meta": {
"judet": "CJ",
"an": 2025
}
}
GEThttps://oneapi.ro/api/business/v1/judete/IS/statistici
{
"data": {
"firme": {
"total": 144330,
"pe_stare": {
"radiata": 72039,
"activa": 61203,
"alta": 6935,
"dizolvata": 1727,
"suspendata": 1509,
"insolventa": 681,
"lichidare": 236
}
},
"financiar": {
"an": 2025,
"firme_cu_bilant": 30739,
"cifra_afaceri": 57122269894,
"profit_net": 5062312440,
"salariati": 116037,
"firme_profitabile": 18835,
"firme_pe_pierdere": 9477
},
"achizitii": {
"an": 2025,
"contracte": 96766,
"valoare_ron": 7948926030.36,
"firme_castigatoare": 3386
}
},
"meta": {
"judet": "IS",
"an": 2025
}
}
GEThttps://oneapi.ro/api/business/v1/judete/B/statistici
{
"data": {
"firme": {
"total": 725317,
"pe_stare": {
"radiata": 332111,
"activa": 296678,
"alta": 72324,
"dizolvata": 11198,
"suspendata": 7715,
"insolventa": 3082,
"lichidare": 2209
}
},
"financiar": {
"an": 2025,
"firme_cu_bilant": 183433,
"cifra_afaceri": 1088035975827,
"profit_net": 67847126523,
"salariati": 1117423,
"firme_profitabile": 99135,
"firme_pe_pierdere": 68318
},
"achizitii": {
"an": 2025,
"contracte": 659517,
"valoare_ron": 150873957791.73,
"firme_castigatoare": 13017
}
},
"meta": {
"judet": "B",
"an": 2025
}
}
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. |
| 404 | negasit | The county [{judet}] does not exist. It is given by its licence-plate code (CJ) or by name. |
| 422 | validare | An undeclared parameter or an an that is not a year. 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 an an that is not a year. The offending field is in detalii.",
"detalii": {
"judet": [
"The value sent does not satisfy the parameter rule."
]
}
}
}