Business v1 / Locații
A company's neighbours
⭐ Which other companies are registered at the same address (by default) or on the same street (?scop=strada). The company asked about does not appear in the list.
GET
https://oneapi.ro/api/business/v1/firme/{cui}/vecini
Path parameters
NameTypeDescriptionExample
cuirequired
string
The company tax identification number, without the
RO prefix (e.g. 6719278).
Query parameters
NameTypeDescriptionAccepted values
scopoptional
string | null
How close the neighbourhood is counted:
adresa (default) or strada.
e.g. strada
How it behaves
- ⭐ Which other companies are registered at the same address (default) or on the same street (
?scop=strada). The queried company is excluded from the list. - The numbers say something about the real economy: at the address with the most registered offices in the country — Bucureştii Noi no. 136 — 24,409 companies are registered. Registered-office services are a phenomenon, not an exception, and this route makes them visible.
- Neighbourhood is computed on the street resolved in the register, not on the raw address text. For companies whose office could not be linked to a street (~21%) the answer is a 422 with the reason, not an empty list that would suggest the company has no neighbours.
scop=adresamatches the number exactly as the source writes it (26,27-33,1 bis) — it is not normalised, because no rule would do that without inventing.
What it is for
- Spotting registered-office addresses shared by dozens of companies.
- A risk signal at onboarding: an address with hundreds of companies deserves a second look.
- Prospecting by building or street: who else is next to your customer.
Response structure
FieldTypeDescription
data[].cui
integer
The company tax ID.
data[].denumire
string
The company name.
data[].forma_juridica
string | null
Legal form (SRL, SA, PFA…).
data[].stare
string | null
Company status (active, struck off…).
data[].data_inmatriculare
string | null
Registration date at the trade register.
data[].caen_principal
string | null
Primary CAEN code, from the ANAF fiscal record.
data[].platitor_tva
boolean | null
VAT-registered as of the last sync.
data[].sediu.strada_id
integer | null
data[].sediu.strada
string | null
data[].sediu.numar
string | null
The street number of the registered office, as written by the source.
data[].sediu.localitate
string | null
The locality of the registered office.
data[].sediu.cod_siruta
integer | null
The locality SIRUTA code — chainable to /api/locations/v1/localitati/{cod}.
data[].sediu.judet
string | null
The county of the registered office.
data[].coordonate.lat
number
Latitude, in decimal degrees (WGS 84).
data[].coordonate.lng
number
Longitude, in decimal degrees (WGS 84).
data[].coordonate.precizie
string
⚠️ How fine the point is, in four steps that are NOT interchangeable:
numar (the OSM address point, matched exactly on the house number in the register — 1,308,114 companies), numar_aproximativ (the same kind of point, matched only on the integer part: "4A" placed at "4" — 115,040 companies), strada (street centroid) and localitate (the rest). Only drop a pin for the first two; a pin on strada claims a precision we do not have.
data[].distanta_m
integer | null
Unused for neighbours (stays
null) — it appears on /firme/aproape.
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/vecini
{
"data": [
{
"cui": 54306506,
"denumire": "VANGUARD ESTATES S.R.L.",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2026-03-20",
"caen_principal": "6831",
"platitor_tva": true,
"sediu": {
"strada_id": 221585,
"strada": "Timișoara",
"numar": "26",
"localitate": "București Sectorul 6",
"cod_siruta": 179196,
"judet": "București"
},
"coordonate": {
"lat": 44.428876,
"lng": 26.036041,
"precizie": "numar"
},
"distanta_m": null
}
],
"meta": {
"scop": "adresa",
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 95,
"pagini": 5
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/6719278/vecini?scop=strada
{
"data": [
{
"cui": 55520442,
"denumire": "CÎRCIUMARU MIHAI-JUNIOR PERSOANĂ FIZICĂ AUTORIZATĂ",
"forma_juridica": "PFA",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2026-09-01",
"caen_principal": "4933",
"platitor_tva": false,
"sediu": {
"strada_id": 221585,
"strada": "Timișoara",
"numar": "35",
"localitate": "București Sectorul 6",
"cod_siruta": 179196,
"judet": "București"
},
"coordonate": {
"lat": 44.427357,
"lng": 26.03988,
"precizie": "numar"
},
"distanta_m": null
}
],
"meta": {
"scop": "strada",
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 4434,
"pagini": 222
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/2054341/vecini
{
"data": [
{
"cui": 49335041,
"denumire": "ALGESO ADMIN S.R.L.",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2023-12-22",
"caen_principal": "7022",
"platitor_tva": false,
"sediu": {
"strada_id": 142741,
"strada": "Republicii",
"numar": "123-125",
"localitate": "Roman",
"cod_siruta": 120879,
"judet": "Neamț"
},
"coordonate": {
"lat": 46.924989,
"lng": 26.943953,
"precizie": "numar"
},
"distanta_m": null
}
],
"meta": {
"scop": "adresa",
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 5,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/24890577/vecini
{
"data": [
{
"cui": 46003960,
"denumire": "UNIVERS-ALL KMCS S.R.L.",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2022-04-21",
"caen_principal": "4941",
"platitor_tva": true,
"sediu": {
"strada_id": 128938,
"strada": "Pompierilor",
"numar": "118",
"localitate": "Gheorgheni",
"cod_siruta": 83570,
"judet": "Harghita"
},
"coordonate": {
"lat": 46.724202,
"lng": 25.589422,
"precizie": "strada"
},
"distanta_m": null
}
],
"meta": {
"scop": "adresa",
"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 | An undeclared parameter or a value that fails validation (scop). The offending field is in detalii. |
| 422 | parametri_invalizi | The scope [{scop}] does not exist. Accepted: adresa, strada. |
| 422 | sediu_nelegat | The office of company [{cui}] is not linked to a street in the nomenclature, so neighbours cannot be determined. |
| 422 | sediu_fara_numar | The office of company [{cui}] has no street number, so address neighbours cannot be determined. Try ?scop=strada. |
| 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 a value that fails validation (scop). The offending field is in detalii.",
"detalii": {
"cui": [
"The value sent does not satisfy the parameter rule."
]
}
}
}