Locations v1 / Referință & business
County company aggregates: total, VAT-registered, top CAEN, breakdown by status
How many companies the county holds and what they look like: active, VAT registered, broken down by status, with the most frequent activities. Aggregates, not a list — the companies route gives the list.
GET
https://oneapi.ro/api/locations/v1/judete/{cod}/firme/sumar
Path parameters
NameTypeDescriptionExample
codrequired
string
County code, two letters (e.g.
CJ). Bucharest is B.
Query parameters
NameTypeDescriptionAccepted values
limitaoptional
integer | null
How many activities
top_caen returns. Default 5, maximum 25. A value outside the range returns 422 rather than being silently clamped.
1 – 25
How it behaves
- The aggregates are precomputed (
locations:build-firme-sumar) — computing them live for a county takes about 9 seconds. Theactualizatfield says when. top_caen= activities by company count, 5 by default, up to 25 withlimita;pe_stare= the breakdown by status.
What it is for
- The economic profile of an area in a single call
- Comparing areas by company count or dominant sectors
Response structure
FieldTypeDescription
data.total
integer
The total number of companies registered in the entity.
data.in_functiune
integer
How many of them exist NOW (state in the „active" category). ⚠️ 48.8% of companies with a linked registered office are struck off —
total includes them, because it counts everything ever registered here.
data.platitori_tva
integer
How many of them are VAT-registered.
data.top_caen[].cod
string
The NACE (CAEN) code of the sector.
data.top_caen[].denumire
string | null
The name of the sector.
data.top_caen[].nr
integer
How many companies have this as their main NACE code.
data.pe_stare[].stare
string | null
The status as ONRC writes it. ALL statuses present in the area are returned (median: 4 for a locality, 8 for a UAT, 39 for a county), so the rows add up to
total exactly. Each row also carries its categorie.
data.pe_stare[].categorie
string | null
Category in the source classification.
data.pe_stare[].nr
integer
How many companies are in this status.
data.pe_categorie[].categorie
string
The breakdown across the 7 categories, derived from
pe_stare — the overview, for when the detailed list is too long.
data.pe_categorie[].nr
integer
How many companies are in this category.
meta.actualizat
object
Prospețimea datelor pe domenii (dată ISO 8601).
Response examples
GEThttps://oneapi.ro/api/locations/v1/judete/CJ/firme/sumar
{
"data": {
"total": 194068,
"in_functiune": 92059,
"platitori_tva": 26852,
"top_caen": [
{
"nr": 5124,
"cod": "4120",
"denumire": "Lucrări de construcții a clădirilor rezidențiale și nerezidențiale"
}
],
"pe_stare": [
{
"nr": 92059,
"stare": "funcțiune",
"categorie": "activa"
}
],
"pe_categorie": [
{
"categorie": "activa",
"nr": 92059
}
]
},
"meta": {
"actualizat": {
"firme": "2026-09-18T07: 16: 22+03: 00",
"agregate": "2026-10-06T23: 13: 50+03: 00"
}
}
}
GEThttps://oneapi.ro/api/locations/v1/judete/AB/firme/sumar
{
"data": {
"total": 70607,
"in_functiune": 30517,
"platitori_tva": 7392,
"top_caen": [
{
"nr": 4568,
"cod": "0150",
"denumire": "Activități în ferme mixte (cultura vegetală combinată cu creșterea animalelor)"
}
],
"pe_stare": [
{
"nr": 35118,
"stare": "radiată",
"categorie": "radiata"
}
],
"pe_categorie": [
{
"categorie": "radiata",
"nr": 35118
}
]
},
"meta": {
"actualizat": {
"firme": "2026-09-18T07: 16: 22+03: 00",
"agregate": "2026-10-06T23: 13: 50+03: 00"
}
}
}
GEThttps://oneapi.ro/api/locations/v1/judete/B/firme/sumar
{
"data": {
"total": 725317,
"in_functiune": 296678,
"platitori_tva": 101907,
"top_caen": [
{
"nr": 25563,
"cod": "7022",
"denumire": "Activități de consultanță pentru afaceri și management"
}
],
"pe_stare": [
{
"nr": 332111,
"stare": "radiată",
"categorie": "radiata"
}
],
"pe_categorie": [
{
"categorie": "radiata",
"nr": 332111
}
]
},
"meta": {
"actualizat": {
"firme": "2026-09-18T07: 16: 22+03: 00",
"agregate": "2026-10-06T23: 13: 50+03: 00"
}
}
}
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 entity [{cod}] does not exist. |
| 422 | validare | limita outside the range 1-25, or any parameter other than lang and limita. |
| 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": "limita outside the range 1-25, or any parameter other than lang and limita.",
"detalii": {
"cod": [
"The value sent does not satisfy the parameter rule."
]
}
}
}