oneapi
Sign in
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 returns 200 with data: null and meta.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 null and stay out of rankings and averages. Insurers' forms have no turnover line, so they have cifra_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
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404negasitThe county [{judet}] does not exist. It is given by its licence-plate code (CJ) or by name.
422validareAn undeclared parameter or an an that is not a year. The offending field is in detalii.
429cota_depasitaThe 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."
            ]
        }
    }
}