oneapi
Autentificare
Business v1 / Locații

Firme în jurul unui punct

⭐ Firmele al căror sediu cade pe o stradă care trece prin cercul dat, ordonate după distanță.
Firmele nu au coordonate proprii — legătura se face prin stradă, deci acoperirea e de ~71%.

GET
https://oneapi.ro/api/business/v1/firme/aproape

Parametri de interogare

NumeTipDescriereValori acceptate
latopțional string | null Latitudinea centrului (WGS84), în România. ex. 46.77ex. 44.4526ex. 46.7712
lngopțional string | null Longitudinea centrului (WGS84), în România. ex. 23.59ex. 26.0855ex. 23.6236
raza_kmopțional string | null Raza în km: între 0,05 şi 25; implicit 0,5. ex. 0.3
stareopțional string | null Categoria de stare, nu denumirea ONRC: cele 197 de denumiri se reduc la şapte categorii, iar
„ce funcţionează aici" e o întrebare despre categorie. in: aici, nu permisiv ca restul:
o valoare greşită trebuie să dea 422, nu o zonă goală care arată ca o zonă fără firme.
activasuspendatadizolvatalichidareradiatainsolventaalta

Cum se comportă

  • ⭐ Firmele al căror sediu cade pe o stradă care trece prin cercul dat, ordonate după distanţă.
  • ⚠️ Firmele nu au coordonate proprii. Legătura se face prin stradă: sediul e legat de o arteră, iar artera are geometrie din OpenStreetMap. Acoperirea, măsurată pe 4 octombrie 2026, e de 2,75M din 3,91M de firme (70,4%) — restul nu pot fi găsite pe rază, oricât de aproape ar fi.
  • Distanţa se măsoară până la centrul arterei, nu până la sediul exact — la scara unei străzi diferenţa e sub eroarea de legare a sediului, dar înseamnă că firmele de pe aceeaşi stradă au aceeaşi distanţă.
  • Raza e plafonată la 25 km: dincolo de câţiva kilometri întrebarea nu mai e „ce firme sunt în jur", ci „ce firme sunt în oraş" — pentru asta există rutele pe entitate geografică.
  • Varianta agregată, fără lista de firme, e la /firme/zona.

La ce folosește

  • Prospectare pe teren: ce firme sunt în raza agentului, ordonate după distanţă.
  • Studiu de amplasament: ce activităţi există deja în jurul unui punct pe care îl evaluezi.
  • Alimentarea unei hărţi interactive cu firmele din zona vizibilă.

Structura răspunsului

CâmpTipDescriere
data[].cui integer Codul fiscal al firmei.
data[].denumire string Denumirea firmei.
data[].forma_juridica string | null Forma juridică (SRL, SA, PFA…).
data[].stare string | null Starea firmei, ca obiect: denumire e textul brut din ONRC (107 valori distincte folosite), categorie e clasificarea noastră în 7 cutii — activa, suspendata, dizolvata, lichidare, radiata, insolventa, alta — pe care o foloseşti ca să filtrezi sau să grupezi. cod e codul ONRC al stării.
data[].data_inmatriculare string | null Data înmatriculării la ONRC.
data[].caen_principal string | null Codul CAEN principal, din starea fiscală ANAF.
data[].platitor_tva boolean | null Plătitoare de TVA la ultima sincronizare.
data[].sediu.strada_id integer | null
data[].sediu.strada string | null
data[].sediu.numar string | null Numărul de la adresa sediului, așa cum e scris la sursă.
data[].sediu.localitate string | null Localitatea sediului.
data[].sediu.cod_siruta integer | null Codul SIRUTA al localității — chainable spre /locations/v1/localitati/{cod}.
data[].sediu.judet string | null Județul sediului.
data[].coordonate.lat number Latitudinea punctului (WGS84).
data[].coordonate.lng number Longitudinea punctului (WGS84).
data[].coordonate.precizie string Vezi precizie de la /firme/{cui}/locatie: numar, numar_aproximativ, strada ori localitate. ⚠️ Într-o listă, precizia diferă de la rând la rând — nu o citi o dată pentru tot setul.
data[].distanta_m integer | null Distanţa în metri de la punctul cerut până la PUNCTUL ÎNTORS pe rândul ăsta — adică până la numărul din adresă acolo unde îl ştim, altfel până la centrul străzii. ⚠️ Selecţia pe rază se face însă pe centrul arterei, singurul cu index spaţial, deci un rând poate ieşi cu câteva zeci de metri peste raza_km. Nu e o garanţie pierdută: nici înainte „centrul străzii în rază" nu însemna „firma în rază".
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.distanta object Cum sunt măsurate distanţele din răspuns. Apare pe orice răspuns care conţine o distanţă.
meta.distanta.metoda string Mereu linie_dreapta: distanţa geodezică pe suprafaţa Pământului, nu pe drum.
meta.distanta.detaliu string Aceeaşi informaţie, în cuvinte.

Exemple de răspuns

GEThttps://oneapi.ro/api/business/v1/firme/aproape?lat=46.77&lng=23.59&raza_km=0.3
{
    "data": [
        {
            "cui": 232949,
            "denumire": "MEDEX SRL",
            "forma_juridica": "SRL",
            "stare": {
                "cod": "1048",
                "denumire": "funcțiune",
                "categorie": "activa"
            },
            "data_inmatriculare": "1992-01-10",
            "caen_principal": "8512",
            "platitor_tva": false,
            "sediu": {
                "strada_id": 14967,
                "strada": "Iuliu Maniu",
                "numar": "1",
                "localitate": "Cluj-Napoca",
                "cod_siruta": 54984,
                "judet": "Cluj"
            },
            "coordonate": {
                "lat": 46.770235,
                "lng": 23.590533,
                "precizie": "numar"
            },
            "distanta_m": 48
        }
    ],
    "meta": {
        "centru": {
            "lat": 46.77,
            "lng": 23.59
        },
        "raza_km": 0.3,
        "stare": null,
        "precizie": "strada",
        "paginare": {
            "pagina": 1,
            "per_pagina": 20,
            "total": 2479,
            "pagini": 124
        },
        "distanta": {
            "metoda": "linie_dreapta",
            "detaliu": "Distanţele sunt geodezice, în linie dreaptă pe suprafaţa Pământului (WGS84) — nu pe drum."
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareUn parametru nedeclarat ori o valoare care nu trece validarea (lat, lng, raza_km). Câmpul vinovat e în detalii.
422parametri_invaliziParametrii lat și lng sunt obligatorii.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "Un parametru nedeclarat ori o valoare care nu trece validarea (lat, lng, raza_km). Câmpul vinovat e în detalii.",
        "detalii": {
            "lat": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}