oneapi
Sign in
Business v1 / Firme

Companies by activity (semantic)

You describe what the company does in free text (e.g. „bicycle repairs") and get back the companies in the NACE code that matches by MEANING. Under the hood: the text is matched semantically to a NACE code (see /caen/potriveste), then the companies with that code are listed. The response also shows the detected code plus the alternatives. Filters can be added: ?judet=, ?stare=, ?tva=. Paginated.

GET
https://oneapi.ro/api/business/v1/firme/dupa-activitate

Query parameters

NameTypeDescriptionAccepted values
formaoptional string | null Legal form (SRL, SA, PFA…). e.g. SRL
judetoptional string | null Optional filter on county. e.g. CJ
localitateoptional integer | null The locality of the head office resolved through Locations — name or SIRUTA code. 1
stareoptional string | null Optional filter on company status (funcţiune, radiată…). e.g. funcțiune
textoptional string | null The activity description (required). E.g. "bicycle repair". e.g. reparatii de bicicletee.g. Cluj
tvaoptional boolean | null With 1 returns only VAT payers, with 0 only non-payers. e.g. true
uatoptional integer | null The LAU of the head office resolved through Locations — name or SIRUTA code. 1

How it behaves

  • Describe in free text what the company does (e.g. "bicycle repair") and get the companies from the matching CAEN by meaning — not by words. It composes two things: the semantic text→CAEN match (see /caen/potriveste) followed by listing the companies with that code.
  • The response explicitly shows the detected CAEN (with score) and the alternatives, so it is transparent what it filtered on. Companies come in summary form, paginated.
  • You can add the usual listing filters: ?judet=, ?localitate=, ?uat=, ?forma=, ?stare=, ?tva=. ?text= is required.
  • It filters on the highest-scoring CAEN. If you want to pick among the suggestions yourself, use /caen/potriveste and then /caen/{cod}/firme.

What it is for

  • Finding companies in a field described in words, without knowing the CAEN code.
  • Prospecting / lead generation on an activity niche.
  • Market analysis on a naturally described sector.

Response structure

FieldTypeDescription
data[].cui integer The tax ID.
data[].denumire string | null The name.
data[].cod_inmatriculare string | null The trade register order number (J…).
data[].forma_juridica string | null Legal form (SRL, SA, PFA…).
data[].stare string | null 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 | null The trade register incorporation date.
data[].radiere.vazut_la string
data[].radiere.dupa string | null
data[].sediu.judet string The county of the registered office.opțional
data[].sediu.localitate string The locality of the registered office.opțional
data[].sediu.cod_siruta integer The locality SIRUTA code — chainable to /api/locations/v1.opțional
data[].caen_principal.cod string The primary CAEN code.
data[].caen_principal.denumire string | null 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 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 Pagina curentă.
meta.paginare.per_pagina integer Rezultate pe pagină.
meta.paginare.total integer Total rezultate.
meta.paginare.pagini integer Număr de pagini.

Response examples

GEThttps://oneapi.ro/api/business/v1/firme/dupa-activitate?text=reparatii+de+biciclete&per_pagina=3
{
    "data": [
        {
            "cui": 21341760,
            "denumire": "141 GSM SRL",
            "cod_inmatriculare": "J10/352/2007",
            "forma_juridica": "SRL",
            "stare": {
                "cod": "1084",
                "denumire": "radiată",
                "categorie": "radiata"
            },
            "data_inmatriculare": "2007-03-13",
            "sediu": {
                "judet": "Buzău",
                "localitate": "Nehoiu",
                "cod_siruta": 47925
            },
            "caen_principal": {
                "cod": "5274",
                "denumire": "Alte reparații de articole personale n.c.a."
            },
            "fiscal": {
                "tva": false,
                "inactiv": false,
                "e_factura": false
            },
            "financiar": null
        }
    ],
    "meta": {
        "activitate": {
            "text": "reparatii de biciclete",
            "caen": {
                "cod": "9529",
                "denumire": "Repararea și întreținerea articolelor de uz personal și gospodăresc n.c.a.",
                "scor": 0.617999792098999
            },
            "alternative": [
                {
                    "cod": "951",
                    "denumire": "Repararea și întreținerea calculatoarelor şi a echipamentelor de comunicaţii",
                    "scor": 0.5903294086456299
                }
            ]
        },
        "paginare": {
            "pagina": 1,
            "per_pagina": 3,
            "total": 5056,
            "pagini": 1686
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareThe text parameter is missing.
429cota_depasitaThe plan's monthly quota has been exceeded (see Retry-After).
503mentenantaThe CAEN semantic index is not built, or the embeddings service is temporarily unavailable.

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": "The text parameter is missing.",
        "detalii": {
            "forma": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}