Business v1 / Firme
Company profile
The synthetic profile of a company by tax id: ONRC identity, legal form, status, main NACE code, tax status (VAT / inactive / e-invoicing), the registered office in both forms — RAW (ONRC) and RESOLVED (Locations: SIRUTA, unit, county, region, NUTS, population) — plus a summary of the sub-resources available.
GET
https://oneapi.ro/api/business/v1/firme/{cui}
Path parameters
NameTypeDescriptionExample
cuirequired
string
The company tax identification number, without the
RO prefix (e.g. 6719278).
Query parameters
This route accepts no query parameters.
How it behaves
- The unified profile of a company, keyed on its tax ID (CUI). It brings together the ONRC identity (name, legal form, headquarters, status, incorporation date), the ANAF tax status (VAT payer, inactivity) and the primary CAEN code.
- The primary CAEN code comes from the tax status (ANAF), not from the list of authorised activities. In the registry the ONRC "primary activity" field is empty for every company, so the source of truth for the current CAEN is the tax vector. Coverage is ~97%.
- The headquarters is served in two forms:
sediu.raw(the raw text from ONRC) andsediu.rezolvat(resolved through the Locations module to county, locality and, where possible, street). Resolution covers 99.9% of companies at the locality level. - Individual slices have dedicated routes:
/firme/{cui}/fiscal,/financiar,/activitati,/persoane,/achizitii,/contact,/locatie. The full profile (all slices in one call) is at/firme/{cui}/profil-complet.
What it is for
- Autofilling company data at invoicing or when onboarding a business customer.
- A quick check of status and VAT registration before a transaction.
- Enriching a customer base with official data, starting from the tax ID.
Response structure
All fields below live inside data.
FieldTypeDescription
cui
integer
The tax ID.
denumire
string | null
The name.
cod_inmatriculare
string | null
The trade register order number (J…).
euid
string | null
The European Unique Identifier of the company.
forma_juridica
string | null
Legal form (SRL, SA, PFA…).
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_inmatriculare
string | null
The trade register incorporation date.
sediu
object
Object with the raw headquarters (
raw) and the one resolved through Locations (rezolvat).
sediu.raw[]
string | integer
The registered office address as the source writes it, field by field; empty keys are omitted.
sediu.rezolvat.localitate_id
integer
The internal locality id in Locations.
sediu.rezolvat.localitate
string
The locality.
sediu.rezolvat.cod_siruta
integer | null
The locality SIRUTA code — chainable to /api/locations/v1.
sediu.rezolvat.uat
string | null
The administrative-territorial unit.
sediu.rezolvat.judet
string | null
The county.
sediu.rezolvat.regiune
string | null
The development region.
sediu.rezolvat.cod_nuts
string | null
The NUTS code of the territorial unit.
sediu.rezolvat.populatie
integer | null
The locality population (census).
sediu.rezolvat.strada_id
integer | null
The street id in Locations — chainable to /api/locations/v1/strazi/{id}.
sediu.rezolvat.strada
string | null
The street.
sediu.rezolvat.potrivire[]
string
How confident the link to the register is, for locality and for street.
sediu.rezolvat.coordonate.lat
number
Latitude of the point (WGS84, 6 decimals ≈ 11 cm).
sediu.rezolvat.coordonate.lng
number
Longitude of the point (WGS84).
sediu.rezolvat.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.
caen_principal
object
The primary CAEN code, from the tax status.
null where ANAF does not publish it.
caen_principal.cod
string
The primary CAEN code.
caen_principal.denumire
string | null
The name of the primary activity.
caen_principal.versiune
string
The CAEN revision the code is expressed in.
fiscal.platitor_tva
boolean
VAT-registered as of the last sync.
fiscal.tva_la_incasare
boolean
Applies VAT on collection.
fiscal.split_tva
boolean
Applies split VAT.
fiscal.inactiv_fiscal
boolean
Declared fiscally inactive.
fiscal.e_factura
boolean
Enrolled in e-Invoicing.
fiscal.radiata
boolean
The company is struck off.
prezente[]
mixed
Which other datasets the company appears in (financials, procurement, registers…).
tva
VAT payer as of the last ANAF sync.
Response examples
GEThttps://oneapi.ro/api/business/v1/firme/6719278
{
"data": {
"cui": 6719278,
"denumire": "MEGA IMAGE SRL",
"cod_inmatriculare": "J1994027872407",
"euid": "ROONRC.J1994027872407",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "1994-12-27",
"sediu": {
"raw": {
"judet": "Bucureşti",
"localitate": "Bucureşti Sectorul 6",
"strada": "Timişoara",
"numar": "26",
"etaj": "2",
"sector": 6,
"cod_postal": "61331"
},
"rezolvat": {
"localitate_id": 13755,
"localitate": "București Sectorul 6",
"cod_siruta": 179196,
"uat": "București",
"judet": "București",
"regiune": "București-Ilfov",
"cod_nuts": "RO321",
"populatie": 324994,
"strada_id": 221585,
"strada": "Timișoara",
"potrivire": {
"loc": "exact",
"str": "exact"
},
"coordonate": {
"lat": 44.428876,
"lng": 26.036041,
"precizie": "numar"
}
}
},
"caen_principal": {
"cod": "4711",
"denumire": "Comerț cu amănuntul în magazine nespecializate, cu vânzare predominantă de produse alimentare, băuturi și tutun",
"versiune": "CAEN Rev.2"
},
"fiscal": {
"platitor_tva": true,
"tva_la_incasare": false,
"split_tva": false,
"inactiv_fiscal": false,
"e_factura": false,
"radiata": false
},
"prezente": {
"nr_persoane": 5,
"ani_financiar": [
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"nr_achizitii": 776,
"registre": [
"anaf_datorii",
"anpm_eee",
"ansvsa",
"contribuabili",
"mcpds_sponsorizari"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/14399840
{
"data": {
"cui": 14399840,
"denumire": "DANTE INTERNATIONAL SA",
"cod_inmatriculare": "J2002000372404",
"euid": "ROONRC.J2002000372404",
"forma_juridica": "SA",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2002-01-23",
"sediu": {
"raw": {
"judet": "Bucureşti",
"localitate": "Bucureşti Sectorul 6",
"strada": "Şos. VIRTUŢII",
"numar": "148",
"sector": 6,
"cod_postal": "60787"
},
"rezolvat": {
"localitate_id": 13755,
"localitate": "București Sectorul 6",
"cod_siruta": 179196,
"uat": "București",
"judet": "București",
"regiune": "București-Ilfov",
"cod_nuts": "RO321",
"populatie": 324994,
"strada_id": null,
"strada": null,
"potrivire": {
"loc": "exact",
"str": "none"
},
"coordonate": {
"lat": 44.435278,
"lng": 26.102778,
"precizie": "localitate"
}
}
},
"caen_principal": {
"cod": "4754",
"denumire": "Comerț cu amănuntul al articolelor și aparatelor electrocasnice, în magazine specializate",
"versiune": "CAEN Rev.2"
},
"fiscal": {
"platitor_tva": true,
"tva_la_incasare": false,
"split_tva": false,
"inactiv_fiscal": false,
"e_factura": false,
"radiata": false
},
"prezente": {
"nr_persoane": 4,
"ani_financiar": [
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"nr_achizitii": 67306,
"registre": [
"anpm_eee",
"anspdcp",
"ansvsa",
"bnr_moneda_electronica",
"contribuabili",
"marci",
"ted_ro",
"transparency_register"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/2054341
{
"data": {
"cui": 2054341,
"denumire": "SMIRODAVA S.A.",
"cod_inmatriculare": "J27/24/1991",
"euid": "ROONRC.J27/24/1991",
"forma_juridica": "SA",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"data_inmatriculare": "1991-01-22",
"sediu": {
"raw": {
"judet": "Neamţ",
"localitate": "Municipiul Roman",
"strada": "B-dul REPUBLICII",
"numar": "123-125",
"sector": 0,
"cod_postal": "5550"
},
"rezolvat": {
"localitate_id": 9302,
"localitate": "Roman",
"cod_siruta": 120879,
"uat": "Roman",
"judet": "Neamț",
"regiune": "Nord-Est",
"cod_nuts": "RO214",
"populatie": 48644,
"strada_id": 142741,
"strada": "Republicii",
"potrivire": {
"loc": "exact",
"str": "exact"
},
"coordonate": {
"lat": 46.924989,
"lng": 26.943953,
"precizie": "numar"
}
}
},
"caen_principal": {
"cod": "1410",
"denumire": "Fabricarea articolelor de îmbrăcăminte prin tricotare sau croșetare",
"versiune": "CAEN Rev.3"
},
"fiscal": {
"platitor_tva": true,
"tva_la_incasare": false,
"split_tva": false,
"inactiv_fiscal": false,
"e_factura": false,
"radiata": false
},
"prezente": {
"nr_persoane": 3,
"ani_financiar": [
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"nr_achizitii": 0,
"registre": [
"mcpds_sponsorizari"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/24890577
{
"data": {
"cui": 24890577,
"denumire": "UNIVERS-ALL DISTRIBUTION SRL",
"cod_inmatriculare": "J19/1161/2008",
"euid": "ROONRC.J19/1161/2008",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2008-12-18",
"sediu": {
"raw": {
"judet": "Harghita",
"localitate": "Municipiul Gheorgheni",
"strada": "POMPIERILOR",
"numar": "118",
"cod_postal": "535500"
},
"rezolvat": {
"localitate_id": 6756,
"localitate": "Gheorgheni",
"cod_siruta": 83570,
"uat": "Gheorgheni",
"judet": "Harghita",
"regiune": "Centru",
"cod_nuts": "RO124",
"populatie": 15762,
"strada_id": 128938,
"strada": "Pompierilor",
"potrivire": {
"loc": "exact",
"str": "exact"
},
"coordonate": {
"lat": 46.724202,
"lng": 25.589422,
"precizie": "strada"
}
}
},
"caen_principal": {
"cod": "4619",
"denumire": "Intermedieri în comerțul cu produse diverse",
"versiune": "CAEN Rev.2"
},
"fiscal": {
"platitor_tva": true,
"tva_la_incasare": false,
"split_tva": false,
"inactiv_fiscal": false,
"e_factura": true,
"radiata": false
},
"prezente": {
"nr_persoane": 1,
"ani_financiar": [
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024
],
"nr_achizitii": 520,
"registre": [
"ansvsa",
"mcpds_sponsorizari"
]
}
}
}
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 | Tax ID not found in the registry. The error code is negasit. |
| 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": "negasit",
"mesaj": "Tax ID not found in the registry. The error code is negasit."
}
}