Business v1 / Firme
Related companies
The companies linked to this one through shared people (directors and shareholders), ordered by the number of people in common. Paginated (?pagina=&per_pagina=). Useful for identifying groups of companies.
GET
https://oneapi.ro/api/business/v1/firme/{cui}/conexe
Path parameters
NameTypeDescriptionExample
cuirequired
string
The company tax identification number, without the
RO prefix (e.g. 6719278).
Query parameters
This route accepts no query parameters.
How it behaves
- How we identify a person: by name + county of birth + date of birth, hashed into a fingerprint. The birth data is stored nowhere and never appears in the API; the fingerprint only separates people who share a name. Until 18 Sep 2026 identity was 'name + county', and the Trade Register leaves the county empty for 99.3% of representatives: every namesake in the country collapsed into one person, and companies with no real connection showed up as related (68% of the graph edges). Where the register has no date of birth (13% of mentions, mostly corporate liquidators), the person stays distinct at each company: we would rather lose a real link than invent one.
- The companies related to the given one — those that share at least one person (administrator or associate). It is the basis for ownership and control graphs.
- For the concrete path between two companies (how they are linked, through whom), use
/firme/{cui}/conexe/{cui2}— a path search in the connection graph, up to a given depth. - Keep in mind the limitation from people: links are based on name + county matching, so there can be both omissions (the same person written differently) and false positives (namesakes in the same county).
What it is for
- Ownership graphs and mapping of company groups.
- Risk analysis of exposure to a group.
- Investigations and data journalism.
Response structure
FieldTypeDescription
data[].cui
integer
The tax ID.
data[].denumire
string | null
The name.
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[].judet
string | null
The county.
data[].localitate
string | null
The locality.
data[].persoane_comune
integer
How many people hold mandates in both companies.
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/6719278/conexe
{
"data": [
{
"cui": 16114842,
"denumire": "MASCO MANAGEMENT SRL",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"judet": "București",
"localitate": "București Sectorul 5",
"persoane_comune": 1
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 4,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/14399840/conexe
{
"data": [
{
"cui": 404416,
"denumire": "Bancpost SA",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"judet": "București",
"localitate": "București Sectorul 2",
"persoane_comune": 1
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 3,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/2054341/conexe
{
"data": [
{
"cui": 49335041,
"denumire": "ALGESO ADMIN S.R.L.",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"judet": "Neamț",
"localitate": "Roman",
"persoane_comune": 1
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 2,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/24890577/conexe
{
"data": [
{
"cui": 46003960,
"denumire": "UNIVERS-ALL KMCS S.R.L.",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"judet": "Harghita",
"localitate": "Gheorgheni",
"persoane_comune": 1
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 1,
"pagini": 1
}
}
}
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 | negasit | The company with tax ID [{cui}] was not found. |
| 422 | validare | The route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored. |
| 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": "The route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored.",
"detalii": {
"cui": [
"The value sent does not satisfy the parameter rule."
]
}
}
}