Business v1 / Firme
Companies in a CAEN code
The companies whose main activity falls under the CAEN code in the path, at any level: section (J), division (62), group (620), class (6201). The code is looked up in Rev.3 first, then Rev.2 and Rev.1 (?caen_versiune= pins the revision); companies with codes from other revisions are caught through the official correspondence. A code that does not exist is a 404. What was searched is in meta.caen. Paginated.
GET
https://oneapi.ro/api/business/v1/caen/{cod}/firme
Path parameters
NameTypeDescriptionExample
codrequired
string
NACE Rev. 2 (CAEN) code, four digits (e.g.
6201).
Query parameters
NameTypeDescriptionAccepted values
caen_versiuneoptional
string | null
The revision of the code (
1, 2, 3), when its form is ambiguous. Without it: Rev.3, then Rev.2, then Rev.1.
123
sortareoptional
string | null
The order:
denumire (default), cifra_afaceri, profit, salariati (descending, on the latest filed balance sheet), data_inmatriculare (newest first).
relevantadenumirecifra_afaceriprofitsalariatidata_inmatriculare
How it behaves
- The companies whose primary activity falls under the code in the path, paginated — equivalent to
/firme/cauta?caen=, but with the code in the path. - The code can be at any level: section (
J), division (62), group (620), class (6201). Companies with codes from other revisions are caught through the official INS correspondence;meta.caenstates the revision the code was read in and how many classes were searched. - A code missing from the nomenclature is a 404 (
caen_inexistent) — here the code is in the PATH, so it IS the resource; on routes wherecaenis a filter the same code yields 422. A malformed one is a 422 (caen_invalid). Neither is ever an empty list. - With
sortare=cifra_afaceri,profitorsalariati, the list becomes a ranking on each company's latest filed balance sheet (the year is infinanciar.an, so it may differ between companies) and covers only companies that have one —meta.paginare.totaldrops accordingly. For a ranking on a single year:/firme/top.
What it is for
- Building the full list of companies in a sector, for prospecting.
- Analysing the geographic distribution of an industry.
- A sector export, with geographic filters and pagination.
Response structure
FieldTypeDescription
data[].cui
integer
The tax ID.
data[].denumire
string
The name.
data[].cod_inmatriculare
string
The trade register order number (J…).
data[].forma_juridica
string
Legal form (SRL, SA, PFA…).
data[].stare
string
The company status, as an object:
denumire is the raw ONRC text (107 distinct values in use), categorie is our classification into 7 buckets — activa, suspendata, dizolvata, lichidare, radiata, insolventa, alta — which is what you filter or group by. cod is the ONRC code of the status.
data[].data_inmatriculare
string
The trade register incorporation date.
data[].sediu.judet
string
The county of the registered office.
data[].sediu.localitate
string
The locality of the registered office.
data[].sediu.cod_siruta
integer
The locality SIRUTA code — chainable to /api/locations/v1.
data[].caen_principal.cod
string
The primary CAEN code.
data[].caen_principal.denumire
string
The name of the primary activity.
data[].fiscal.tva
boolean
VAT-registered.
data[].fiscal.inactiv
boolean
Declared fiscally inactive.
data[].fiscal.e_factura
boolean
Enrolled in e-Invoicing.
data[].financiar
object | null
The latest filed balance sheet (year, turnover, net profit, employees);
null for companies without one — sole traders, new companies —, not zero.
data[].financiar.an
integer
The balance-sheet year.
data[].financiar.cifra_afaceri
number | null
Net turnover, in lei.
data[].financiar.profit_net
number | null
Net profit, in lei; negative = loss.
data[].financiar.salariati
integer | null
The average number of employees.
meta.paginare.pagina
integer
Current page, counted from 1.
meta.paginare.per_pagina
integer
How many records a page holds.
meta.paginare.total
integer
Total matching records, beyond the current page.
meta.paginare.pagini
integer
How many pages the list has.
meta.caen
object
How the
caen parameter was understood: the requested code, the revision it was read in and the code the route used. For a list of codes, one object per code.
meta.caen.cerut
string
The CAEN code sent, normalised (upper case, no dots).
meta.caen.versiune_cerut
string
The revision the code sent was read in: the one in
caen_versiune, otherwise the first it exists in.
meta.caen.nivel
string
The level of the code used — on company routes, of the requested code:
sectiune, subsectiune, diviziune, grupa, clasa or agregat.
meta.caen.denumire
string
The name of the code, from the CAEN nomenclature.
meta.caen.clase_cautate
integer
How many CAEN classes, across all revisions companies carry, fall under the requested code.
meta.caen.clase_altele_decat_cerut
integer
How many of them are NOT the requested code. The search is permissive (it translates the code into every edition so that companies not yet renumbered are found), and the translation sometimes lands on far broader classes — so the total can be about more than the trade you asked for.
meta.caen.nota_acoperire
string
Present only when classes other than the requested code were searched; it says what to use instead if you want a figure strictly about the trade you asked for.
meta.caen.clase
string[]
The raw classes actually searched, when there are at most 20. So the total can be checked rather than taken on trust.
Response examples
GEThttps://oneapi.ro/api/business/v1/caen/6201/firme
{
"data": [
{
"cui": 41572620,
"denumire": "$COMPANYNAME S.R.L.",
"cod_inmatriculare": "J2/1494/2019",
"forma_juridica": "SRL",
"stare": {
"cod": "1074",
"denumire": "întrerupere temporară de activitate",
"categorie": "alta"
},
"data_inmatriculare": "2019-08-28",
"sediu": {
"judet": "Arad",
"localitate": "Sântana",
"cod_siruta": 12108
},
"caen_principal": {
"cod": "6201",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)"
},
"fiscal": {
"tva": false,
"inactiv": true,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 234660,
"profit_net": 155214,
"salariati": 1
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 65600,
"pagini": 3280
},
"caen": {
"cerut": "6201",
"versiune_cerut": "Rev.2",
"nivel": "clasa",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)",
"clase_cautate": 5,
"clase_altele_decat_cerut": 4,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 4 clase diferite de [6201], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"6201",
"6210",
"7240",
"7221",
"7222"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/caen/62/firme?per_pagina=5
{
"data": [
{
"cui": 41572620,
"denumire": "$COMPANYNAME S.R.L.",
"cod_inmatriculare": "J2/1494/2019",
"forma_juridica": "SRL",
"stare": {
"cod": "1074",
"denumire": "întrerupere temporară de activitate",
"categorie": "alta"
},
"data_inmatriculare": "2019-08-28",
"sediu": {
"judet": "Arad",
"localitate": "Sântana",
"cod_siruta": 12108
},
"caen_principal": {
"cod": "6201",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)"
},
"fiscal": {
"tva": false,
"inactiv": true,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 234660,
"profit_net": 155214,
"salariati": 1
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 126807,
"pagini": 25362
},
"caen": {
"cerut": "62",
"versiune_cerut": "Rev.3",
"nivel": "diviziune",
"denumire": "Activităţi de programare și activități de consultanță în tehnologia informaţiei",
"clase_cautate": 13,
"clase_altele_decat_cerut": 13,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 13 clase diferite de [62], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"6201",
"6202",
"6203",
"6209",
"6220",
"6210",
"6290",
"3002",
"7230",
"7240",
"7260",
"7221",
"7222"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/caen/0113/firme?per_pagina=5
{
"data": [
{
"cui": 43509939,
"denumire": "4GDM NAVAL S.R.L.",
"cod_inmatriculare": "J13/3439/2020",
"forma_juridica": "SRL",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"data_inmatriculare": "2020-12-31",
"sediu": {
"judet": "Constanța",
"localitate": "Făclia",
"cod_siruta": 62306
},
"caen_principal": {
"cod": "0113",
"denumire": "Cultivarea legumelor și a pepenilor, a rădăcinoaselor și tuberculilor"
},
"fiscal": {
"tva": false,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2024,
"cifra_afaceri": null,
"profit_net": -600,
"salariati": null
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 45471,
"pagini": 9095
},
"caen": {
"cerut": "0113",
"versiune_cerut": "Rev.3",
"nivel": "clasa",
"denumire": "Cultivarea legumelor și a pepenilor, a rădăcinoaselor și tuberculiferelor",
"clase_cautate": 3,
"clase_altele_decat_cerut": 2,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 2 clase diferite de [0113], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"0113",
"0119",
"0128"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/caen/4711/firme?sortare=salariati&per_pagina=5
{
"data": [
{
"cui": 15991149,
"denumire": "KAUFLAND ROMANIA SCS",
"cod_inmatriculare": "J2003017052408",
"forma_juridica": "SCS",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2003-12-12",
"sediu": {
"judet": "București",
"localitate": "București Sectorul 2",
"cod_siruta": 179150
},
"caen_principal": {
"cod": "4711",
"denumire": "Comerț cu amănuntul în magazine nespecializate, cu vânzare predominantă de produse alimentare, băuturi și tutun"
},
"fiscal": {
"tva": true,
"inactiv": false,
"e_factura": true
},
"financiar": {
"an": 2025,
"cifra_afaceri": 20972574034,
"profit_net": 796899754,
"salariati": 15359
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 103723,
"pagini": 20745
},
"caen": {
"cerut": "4711",
"versiune_cerut": "Rev.3",
"nivel": "clasa",
"denumire": "Comerț cu amănuntul nespecializat, cu vânzare predominantă de produse alimentare, băuturi și tutun",
"clase_cautate": 8,
"clase_altele_decat_cerut": 7,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 7 clase diferite de [4711], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"4711",
"4781",
"4791",
"4799",
"5211",
"5261",
"5262",
"5263"
]
}
}
}
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 | caen_inexistent | The code [{cod}] does not exist in any CAEN revision (Rev.1, Rev.2, Rev.3). |
| 422 | validare | An undeclared parameter or a value that fails validation (caen_versiune, pagina, per_pagina, sortare). The offending field is in detalii. |
| 422 | caen_invalid | The code [{cod}] is not shaped like a CAEN code: a section letter, two subsection letters (Rev.1), 2, 3 or 4 digits. |
| 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 (caen_versiune, pagina, per_pagina, sortare). The offending field is in detalii.",
"detalii": {
"cod": [
"The value sent does not satisfy the parameter rule."
]
}
}
}