Business v1 / Firme
Companies by phone
The companies that carry a given phone number (it can be shared — accountants, call centres), as summaries. Paginated.
GET
https://oneapi.ro/api/business/v1/firme/dupa-telefon/{telefon}
Path parameters
NameTypeDescriptionExample
telefonrequired
string
Phone number, with or without country prefix.
Query parameters
This route accepts no query parameters.
How it behaves
- The companies that have a given phone number published. It returns a list of summaries, paginated, because the same number can belong to several companies (accountant, group).
- ⚠️ The source is the phone field of the tax return, filled in by the COMPANY, not by the tax authority: out of 2.44 million values, 370,138 are not numbers at all — strings of zeros, registry numbers, even 1,333 e-mail addresses. They do not enter the search and are never shown as a phone.
- The search works on the canonical form, not on the raw text. Before 29 Sep 2026 it compared exactly, and 44,937 companies were unfindable although the number was correct, simply because the source had written it differently.
What it is for
- Identifying the caller in a call centre, from the displayed number.
- Spotting companies sharing a number — often the same accountant or group.
- Deduplicating a lead database by phone number.
Response structure
FieldTypeDescription
data[].cui
integer
The tax ID.
data[].denumire
string | null
The name.
data[].cod_inmatriculare
string | null
The trade register order number (J…).
data[].forma_juridica
string | null
Legal form (SRL, SA, PFA…).
data[].stare
string | null
The company status, as an object:
denumire is the raw ONRC text (107 distinct values in use), categorie is our classification into 7 buckets — activa, suspendata, dizolvata, lichidare, radiata, insolventa, alta — which is what you filter or group by. cod is the ONRC code of the status.
data[].data_inmatriculare
string | null
The trade register incorporation date.
data[].radiere.vazut_la
string
data[].radiere.dupa
string | null
data[].sediu.judet
string
The county of the registered office.opțional
data[].sediu.localitate
string
The locality of the registered office.opțional
data[].sediu.cod_siruta
integer
The locality SIRUTA code — chainable to /api/locations/v1.opțional
data[].caen_principal.cod
string
The primary CAEN code.
data[].caen_principal.denumire
string | null
The name of the primary activity.
data[].fiscal.tva
boolean
VAT-registered.
data[].fiscal.inactiv
boolean
Declared fiscally inactive.
data[].fiscal.e_factura
boolean
Enrolled in e-Invoicing.
data[].financiar
object
The latest filed balance sheet (year, turnover, net profit, employees);
null for companies without one — sole traders, new companies —, not zero.
data[].financiar.an
integer
The balance-sheet year.
data[].financiar.cifra_afaceri
number | null
Net turnover, in lei.
data[].financiar.profit_net
number | null
Net profit, in lei; negative = loss.
data[].financiar.salariati
integer | null
The average number of employees.
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
The number in canonical form, i.e. what was actually searched — so you can see how your input was read.
meta.fara_date
Present when the number is valid but no company carries it, together with
data: []. ⚠️ Absence does NOT mean the number is not a company's: the field is filled in by the company itself and is missing for 37% of them.
meta.fara_date_cod
The short, STABLE word for the reason, for clients that branch on it in code:
fara_date is prose and may be rephrased, this is not.
meta.atentie
string
⚠️ Present ONLY when the number belongs to 10 companies or more. It is then almost certainly an INTERMEDIARY number (the accountant who registered them), not a phone the companies share: 88% of numbers belong to exactly one company, while a single one appears at 3,659. The number is true, but the conclusion "these companies are connected" would be false.
Response examples
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
}
}
}
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 | negasit | Nothing exists for the telefon in the path. |
| 422 | validare | The value is not a phone number. ⚠️ The route's ONLY error response: if the number is valid but nobody has it, you get 200 with an empty list and a sentence in meta.fara_date, not a 404. With a 404, "the number belongs to nobody" and "the route does not exist" looked identical, and the client had to guess which one it was reading. |
| 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": "The value is not a phone number. ⚠️ The route's ONLY error response: if the number is valid but nobody has it, you get **200 with an empty list** and a sentence in meta.fara_date, not a 404. With a 404, \"the number belongs to nobody\" and \"the route does not exist\" looked identical, and the client had to guess which one it was reading.",
"detalii": {
"telefon": [
"The value sent does not satisfy the parameter rule."
]
}
}
}