Business v1 / Locații
Companies at an address
Every company registered on a street and, optionally, at a number — the key to any shell-office check, without starting from a known company.
GET
https://oneapi.ro/api/business/v1/firme/la-adresa
Query parameters
NameTypeDescriptionAccepted values
strada_idoptional
integer | null
The street id from the Locations nomenclature. Cannot be combined with
localitate + strada.
1
localitateoptional
integer | null
The SIRUTA code of the locality (in Bucharest, of the sector), together with
strada.
1
stradaoptional
string | null
The street name, with or without the street type, together with
localitate.
max 120 car.
numaroptional
string | null
Optional: the number, exactly as the source writes it.
max 20 car.
How it behaves
- ⭐ Every company registered on a street and, with
numar, at a given number — without starting from a known company, as/firme/{cui}/vecinidoes. - The street is given either by
strada_id(from/api/locations/v1/localitati/{cod}/strazi) or bylocalitate(the SIRUTA code of the locality — in Bucharest, of the sector) plusstrada. The name goes through the address normaliser: "Bld. Timișoara", "Bulevardul Timișoara" and "timisoara" give the same street. - When the name matches several streets in the locality (a street and an alley with the same name), the answer is
422 strada_ambiguawithcandidate— their list, withstrada_id— not the first of them. numaris matched exactly as the source writes it (26,27-33,1 bis): it is not normalised, because no rule would do that without inventing. Withoutnumar, the whole street is returned.- The search runs on the street resolved in the nomenclature: companies whose office could not be linked to a street (~21%) do not appear. Order: most recently registered first.
What it is for
- Checking a declared registered office: how many companies share the address — the classic signal of a shell or virtual office.
- Due diligence on an address before signing a lease or accepting a new customer.
- Prospecting a building or a commercial street.
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 SIRUTA code of the locality.
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
Not used here (stays
null) — it appears at /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.
meta.adresa.strada_id
integer
The street from the Locations nomenclature the search ran on.
meta.adresa.strada
string
The street name, from the nomenclature.
meta.adresa.tip
string
The street type:
strada, bulevard, alee…
meta.adresa.localitate
object
The locality of the street
{cod_siruta, nume}.
meta.adresa.numar
string
The requested number, or
null for the whole street.
Response examples
GEThttps://oneapi.ro/api/business/v1/firme/la-adresa?localitate=179196&strada=Bld.%20Timi%C8%99oara&numar=26
{
"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": {
"adresa": {
"strada_id": 221585,
"strada": "Timișoara",
"tip": "bulevard",
"localitate": {
"cod_siruta": 179196,
"nume": "București Sectorul 6"
},
"numar": "26"
},
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 96,
"pagini": 5
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/la-adresa?strada_id=14540
{
"data": [
{
"cui": 55494220,
"denumire": "AMARONE BISTRO S.R.L.",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2026-08-26",
"caen_principal": "5611",
"platitor_tva": true,
"sediu": {
"strada_id": 14540,
"strada": "Memorandumului",
"numar": "2",
"localitate": "Cluj-Napoca",
"cod_siruta": 54984,
"judet": "Cluj"
},
"coordonate": {
"lat": 46.770477,
"lng": 23.587916,
"precizie": "numar"
},
"distanta_m": null
}
],
"meta": {
"adresa": {
"strada_id": 14540,
"strada": "Memorandumului",
"tip": "strada",
"localitate": {
"cod_siruta": 54984,
"nume": "Cluj-Napoca"
},
"numar": null
},
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 278,
"pagini": 14
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/la-adresa?localitate=179196&strada=Bld.%20Timi%C8%99oara
{
"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": {
"adresa": {
"strada_id": 221585,
"strada": "Timișoara",
"tip": "bulevard",
"localitate": {
"cod_siruta": 179196,
"nume": "București Sectorul 6"
},
"numar": null
},
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 4435,
"pagini": 222
}
}
}
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 | strada_negasita | The street does not exist in the Locations nomenclature (or in the requested locality). |
| 422 | validare | An undeclared parameter or a value that fails validation (strada_id, localitate, strada, numar). The offending field is in detalii. |
| 422 | strada_ambigua | The name matches several streets in the locality; ask with strada_id (the candidates are in detalii). |
| 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 (strada_id, localitate, strada, numar). The offending field is in detalii.",
"detalii": {
"strada_id": [
"The value sent does not satisfy the parameter rule."
]
}
}
}