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/potrivesteand 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
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/dupa-activitate?per_pagina=3&text=Cluj
{
"data": [
{
"cui": 54150023,
"denumire": "1001 DANCES S.R.L.",
"cod_inmatriculare": "J2026014214006",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2026-03-03",
"sediu": {
"judet": "Timiș",
"localitate": "Săcălaz",
"cod_siruta": 158573
},
"caen_principal": {
"cod": "8559",
"denumire": "Alte forme de învățământ n.c.a."
},
"fiscal": {
"tva": false,
"inactiv": false,
"e_factura": false
},
"financiar": null
}
],
"meta": {
"activitate": {
"text": "Cluj",
"caen": {
"cod": "85",
"denumire": "Învăţământ",
"scor": 0.43629056215286255
},
"alternative": [
{
"cod": "731",
"denumire": "Publicitate",
"scor": 0.4311078529889678
}
]
},
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 115428,
"pagini": 38476
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/dupa-activitate?per_pagina=3&text=Cluj&judet=CJ&localitate=54984&uat=54975
{
"data": [
{
"cui": 40725563,
"denumire": "123 CHANGE YOUR WAY S.R.L.",
"cod_inmatriculare": "J12/872/2019",
"forma_juridica": "SRL",
"stare": {
"cod": "2069",
"denumire": "sediu expirat",
"categorie": "alta"
},
"data_inmatriculare": "2019-03-04",
"sediu": {
"judet": "Cluj",
"localitate": "Cluj-Napoca",
"cod_siruta": 54984
},
"caen_principal": {
"cod": "8559",
"denumire": "Alte forme de învățământ n.c.a."
},
"fiscal": {
"tva": false,
"inactiv": true,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 7756,
"profit_net": 1407,
"salariati": 1
}
}
],
"meta": {
"activitate": {
"text": "Cluj",
"caen": {
"cod": "85",
"denumire": "Învăţământ",
"scor": 0.43629056215286255
},
"alternative": [
{
"cod": "731",
"denumire": "Publicitate",
"scor": 0.4311078529889678
}
]
},
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 3881,
"pagini": 1294
}
}
}
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 | The text parameter is missing. |
| 429 | cota_depasita | The plan's monthly quota has been exceeded (see Retry-After). |
| 503 | mentenanta | The 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."
]
}
}
}