oneapi
Sign in
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}/vecini does.
  • The street is given either by strada_id (from /api/locations/v1/localitati/{cod}/strazi) or by localitate (the SIRUTA code of the locality — in Bucharest, of the sector) plus strada. 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_ambigua with candidate — their list, with strada_id — not the first of them.
  • numar is matched exactly as the source writes it (26, 27-33, 1 bis): it is not normalised, because no rule would do that without inventing. Without numar, 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
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404strada_negasitaThe street does not exist in the Locations nomenclature (or in the requested locality).
422validareAn undeclared parameter or a value that fails validation (strada_id, localitate, strada, numar). The offending field is in detalii.
422strada_ambiguaThe name matches several streets in the locality; ask with strada_id (the candidates are in detalii).
429cota_depasitaThe 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."
            ]
        }
    }
}