Business v1 / Nomenclatoare
Service categories
Plain-language service categories (plumbers, dentists, car repair), each with the CAEN Rev.3 codes that cover it.
GET
https://oneapi.ro/api/business/v1/caen/categorii
Query parameters
NameTypeDescriptionAccepted values
qoptional
string | null
A word from the name or synonyms (diacritics optional).
max 100 car.
domeniuoptional
string | null
constructii, casa, auto, transport, horeca, sanatate, personal, profesionale, imobiliare, it, educatie, comert, agricultura, energie.
constructiicasaautotransporthorecasanatatepersonalprofesionaleimobiliareiteducatiecomertagriculturaenergie
How it behaves
- 97 categories in 14 domains, each with the Rev.3 CAEN codes that cover it, written and checked by us against the nomenclature. A category's companies:
/firme/cauta?categorie=instalatori&judet=CJ— the codes are expanded there into Rev.2 too, by the rule below. - For free text ("I want to repair bicycles"), semantic matching is at
/caen/potriveste. On a single word, though, it gets exactly the most searched trades wrong ("instalator" returned industrial machinery installation), which is why this list is hand-written. qsearches the name, synonyms and key, ignoring diacritics and case:q=stomatolog,q=centrala.- Companies still on Rev.2 join a category only when their old code clearly leads there: all its Rev.3 correspondents are in the category, or it was merely renumbered into at most 3 codes (5610 restaurants → 5611 + 5612; 4120 → 4100; 4532 car parts → 4782), or it keeps its number (6820 → 6820). Catch-all codes are left out: 4399 "other specialised construction" splits into ten Rev.3 codes, so "instalatori" no longer picks up scaffolding or foundation firms. The cost: activities that in Rev.2 lived only in catch-all codes (masonry, in 4399) appear only as companies move, as they must, to Rev.3.
What it is for
- A "Find a service" menu (plumbers, dentists, car repair) without the user knowing what a CAEN code is.
- A search box that turns "dentist" into the right code before listing companies.
- Grouping a city's companies by type of service, in a local directory.
Response structure
FieldTypeDescription
data[].cheie
string
The category identifier — pass it to
/firme/cauta?categorie=.
data[].denumire
string
The name, in Romanian.
data[].denumire_en
string
The name, in English.
data[].domeniu.cheie
string
The domain (
constructii, auto, sanatate…).
data[].domeniu.denumire
string
The domain name.
data[].coduri[].cod
string
A CAEN Rev.3 code of the category.
data[].coduri[].denumire
string
The official name of the code.
data[].sinonime
array
The (Romanian) words the category is found by ("instalator", "centrala termica"…).
data[].nr_firme
integer
The number of companies.
data[].nr_firme_functiune
integer
meta.q
string
The searched word, if any.
meta.domeniu
string
The requested domain, if any.
Response examples
GEThttps://oneapi.ro/api/business/v1/caen/categorii?q=instalator
{
"data": [
{
"cheie": "instalatori",
"denumire": "Instalatori (sanitare, termice, aer condiţionat)",
"denumire_en": "Plumbers and HVAC",
"domeniu": {
"cheie": "constructii",
"denumire": "Construcţii"
},
"coduri": [
{
"cod": "4322",
"denumire": "Lucrări de instalații sanitare, de încălzire și de aer condiționat"
}
],
"sinonime": [
"instalator",
"instalatii sanitare",
"centrala termica",
"incalzire",
"aer conditionat",
"climatizare",
"gaze"
],
"nr_firme": 31268,
"nr_firme_functiune": 15688
}
],
"meta": {
"q": "instalator"
}
}
GEThttps://oneapi.ro/api/business/v1/caen/categorii?domeniu=auto
{
"data": [
{
"cheie": "service-auto",
"denumire": "Service auto",
"denumire_en": "Car repair and maintenance",
"domeniu": {
"cheie": "auto",
"denumire": "Auto"
},
"coduri": [
{
"cod": "9531",
"denumire": "Repararea și întreținerea autovehiculelor"
}
],
"sinonime": [
"service",
"mecanic auto",
"reparatii auto",
"vulcanizare",
"tinichigerie",
"vopsitorie auto",
"spalatorie auto",
"itp"
],
"nr_firme": 55598,
"nr_firme_functiune": 32160
}
],
"meta": {
"domeniu": "auto"
}
}
GEThttps://oneapi.ro/api/business/v1/caen/categorii
{
"data": [
{
"cheie": "constructii-cladiri",
"denumire": "Construcţii de clădiri",
"denumire_en": "Building construction",
"domeniu": {
"cheie": "constructii",
"denumire": "Construcţii"
},
"coduri": [
{
"cod": "4100",
"denumire": "Lucrări de construcții ale clădirilor rezidențiale și nerezidențiale"
}
],
"sinonime": [
"constructor",
"firma de constructii",
"case la rosu",
"antreprenor"
],
"nr_firme": 154233,
"nr_firme_functiune": 80242
}
]
}
GEThttps://oneapi.ro/api/business/v1/caen/categorii?q=Cluj
{
"data": [],
"meta": {
"q": "Cluj"
}
}
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 an unknown domain. 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 unknown domain. The offending field is in detalii.",
"detalii": {
"q": [
"The value sent does not satisfy the parameter rule."
]
}
}
}