oneapi
Sign in
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.
  • q searches 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"
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareAn undeclared parameter or an unknown domain. 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 unknown domain. The offending field is in detalii.",
        "detalii": {
            "q": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}