oneapi
Autentificare
Business v1 / Firme

Firme după telefon

Firmele care au un anumit număr de telefon (poate fi comun — contabili, call-center), ca rezumate. Paginat.

GET
https://oneapi.ro/api/business/v1/firme/dupa-telefon/{telefon}

Parametri de cale

NumeTipDescriereExemplu
telefonobligatoriu string Numărul de telefon, cu sau fără prefix de ţară.

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • Firmele care au un anumit număr de telefon publicat. Întoarce o listă de rezumate, paginată, fiindcă acelaşi număr poate aparţine mai multor firme (contabil, grup).
  • ⚠️ Sursa e câmpul de telefon din declaraţia fiscală, completat de FIRMĂ, nu de ANAF: din 2,44 milioane de valori, 370.138 nu sunt numere — şiruri de zerouri, numere de registru, chiar 1.333 de adrese de e-mail. Ele nu intră în căutare şi nu se afişează nicăieri ca telefon.
  • Căutarea merge pe forma canonică, nu pe textul brut. Înainte de 29 sep 2026 compara exact, iar 44.937 de firme erau negăsibile deşi numărul era corect, doar fiindcă sursa îl scrisese altfel.

La ce folosește

  • Identificarea apelantului într-un call center, din numărul afişat.
  • Detectarea firmelor care împart acelaşi număr — adesea acelaşi contabil sau grup.
  • Deduplicarea unei baze de lead-uri pe număr de telefon.

Structura răspunsului

CâmpTipDescriere
data[].cui integer Codul fiscal.
data[].denumire string | null Denumirea.
data[].cod_inmatriculare string | null Numărul de ordine în registrul comerţului (J…).
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 registrul comerţului.
data[].radiere.vazut_la string
data[].radiere.dupa string | null
data[].sediu.judet string Judeţul sediului social.opțional
data[].sediu.localitate string Localitatea sediului social.opțional
data[].sediu.cod_siruta integer Codul SIRUTA al localităţii — chainable spre /locations/v1.opțional
data[].caen_principal.cod string Codul CAEN principal.
data[].caen_principal.denumire string | null Denumirea activităţii principale.
data[].fiscal.tva boolean Plătitoare de TVA.
data[].fiscal.inactiv boolean Declarată inactivă fiscal.
data[].fiscal.e_factura boolean Înrolată în e-Factura.
data[].financiar object Ultimul bilanţ depus (an, cifră de afaceri, profit net, salariaţi); null la firmele fără bilanţ — PFA-uri, firme noi —, nu zero.
data[].financiar.an integer Anul bilanţului.
data[].financiar.cifra_afaceri number | null Cifra de afaceri netă, în lei.
data[].financiar.profit_net number | null Profitul net, în lei; negativ = pierdere.
data[].financiar.salariati integer | null Numărul mediu de salariaţi.
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.telefon string Numărul în forma canonică, aşa cum a fost căutat de fapt — ca să vezi cum ţi-a fost interpretată intrarea.
meta.fara_date Apare când numărul e valid dar nu-l are nicio firmă, alături de data: []. ⚠️ Absenţa NU înseamnă că numărul n-ar fi al unei firme: câmpul e completat de firmă şi lipseşte la 37% dintre ele.
meta.fara_date_cod Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.
meta.atentie string ⚠️ Apare DOAR când numărul e la 10 firme sau mai multe. Atunci e aproape sigur al unui INTERMEDIAR (contabilul care le-a înregistrat), nu un telefon pe care firmele îl împart: 88% din numere aparţin exact unei firme, iar unul singur apare la 3.659 de firme. Numărul e adevărat, dar concluzia „firmele astea au o legătură" ar fi falsă.

Exemple de răspuns

GEThttps://oneapi.ro/api/business/v1/firme/dupa-telefon/0212246677
{
    "data": [
        {
            "cui": 5260249,
            "denumire": "GASTRO INTERNATIONAL SRL",
            "cod_inmatriculare": "J40/26843/1993",
            "forma_juridica": "SRL",
            "stare": {
                "cod": "1084",
                "denumire": "radiată",
                "categorie": "radiata"
            },
            "data_inmatriculare": "1993-12-03",
            "sediu": {
                "judet": "București",
                "localitate": "București Sectorul 1",
                "cod_siruta": 179141
            },
            "caen_principal": {
                "cod": "4711",
                "denumire": "Comerț cu amănuntul în magazine nespecializate, cu vânzare predominantă de produse alimentare, băuturi și tutun"
            },
            "fiscal": {
                "tva": false,
                "inactiv": false,
                "e_factura": false
            },
            "financiar": null
        }
    ],
    "meta": {
        "telefon": "0212246677",
        "paginare": {
            "pagina": 1,
            "per_pagina": 20,
            "total": 4,
            "pagini": 1
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitNu există nimic pentru telefon din cale.
422validareValoarea nu e un număr de telefon. ⚠️ Singurul răspuns de eroare al rutei: dacă numărul e valid dar nu-l are nimeni, primeşti 200 cu listă goală şi propoziţia în meta.fara_date, nu 404. Cu 404, „numărul nu e al nimănui" şi „ruta nu există" arătau identic, iar clientul trebuia să ghicească pe care o citeşte.
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": "Valoarea nu e un număr de telefon. ⚠️ Singurul răspuns de eroare al rutei: dacă numărul e valid dar nu-l are nimeni, primeşti **200 cu listă goală** şi propoziţia în meta.fara_date, nu 404. Cu 404, „numărul nu e al nimănui\" şi „ruta nu există\" arătau identic, iar clientul trebuia să ghicească pe care o citeşte.",
        "detalii": {
            "telefon": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}