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
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/dupa-telefon/0212213742
{
"data": [
{
"cui": 14319035,
"denumire": "ALFA PRIMA SRL",
"cod_inmatriculare": "J40/9940/2001",
"forma_juridica": "SRL",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"data_inmatriculare": "2001-11-29",
"sediu": {
"judet": "București",
"localitate": "București Sectorul 6",
"cod_siruta": 179196
},
"caen_principal": {
"cod": "6820",
"denumire": "Închirierea și subînchirierea bunurilor imobiliare proprii sau închiriate"
},
"fiscal": {
"tva": false,
"inactiv": false,
"e_factura": false
},
"financiar": null
}
],
"meta": {
"telefon": "0212213742",
"atentie": "Numărul apare la 12 de firme, deci e foarte probabil al unui intermediar (contabil, firmă de înregistrări), nu un telefon pe care firmele îl împart. NU deduce o legătură între ele.",
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 12,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/dupa-telefon/0264255138
{
"data": [
{
"cui": 24710439,
"denumire": "LOGISTIC LANDSCAPE TOM SRL",
"cod_inmatriculare": "J2008004447126",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2008-11-06",
"sediu": {
"judet": "Cluj",
"localitate": "Chinteni",
"cod_siruta": 56997
},
"caen_principal": {
"cod": "4776",
"denumire": "Comerț cu amănuntul al florilor, plantelor și semințelor; comerț cu amănuntul al animalelor de companie și a hranei pentru acestea, în magazine specializate"
},
"fiscal": {
"tva": true,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 3240712,
"profit_net": 185346,
"salariati": 9
}
}
],
"meta": {
"telefon": "0264255138",
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 2,
"pagini": 1
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | Nu există nimic pentru telefon din cale. |
| 422 | validare | 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. |
| 429 | cota_depasita | Cota 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."
]
}
}
}