Business v1 / Firme
Search entities by name
Search by name across every entity holding a Romanian tax ID, not only the commercial companies in the Trade Register. With doar_neinregistrate=true it returns exclusively the entities the company search cannot see.
GET
https://oneapi.ro/api/business/v1/entitati/cauta
Query parameters
NameTypeDescriptionAccepted values
qoptional
string | null
The name searched for, whole or partial. Minimum two characters. Diacritics do not matter.
e.g. parohiae.g. Cluj
judetoptional
string | null
The county name or its registration code:
CJ, Cluj, Argeș, ARGEŞ. Diacritics do not matter, and an unknown county returns 422, not an empty list.
max 64 car.
tip_contriboptional
string | null
PJ (legal person) or PF (authorised natural person).
PJPF
doar_neinregistrateoptional
boolean | null
true = only entities that are NOT in the Trade Register.
e.g. true
How it behaves
- ⚠️ Searches somewhere else than
/firme/cauta. That route queries the Trade Register; this one searches the taxpayer records, which also cover the 611,818 entities that are not commercial companies — associations, hospitals, parishes, foundations, schools, city halls. Until this route they could not be found by name anywhere:/entitati/{cui}opened a door for them, but only if you already knew the tax ID. doar_neinregistrate=trueis the parameter that gives the route its point. Without it, results are mostly commercial companies, which/firme/cautaalready finds. With it, only the entities the other route cannot see remain.- Matching is by similarity, not equality: an approximate or partial name still finds. Results are ordered by match quality, then alphabetically, so two equally good matches come back in the same order every time.
- Each result states through
e_firmawhether the entity is also in the Trade Register. For full details, use/entitati/{cui}.
What it is for
- Finding the tax ID of a school, parish or association starting from its name.
- Checking that a non-commercial entity exists before putting it on a contract.
- Listing the non-commercial entities in a county.
Response structure
FieldTypeDescription
data[].cui
integer
The tax ID.
data[].denumire
string
The official name from Ministry of Finance records.
data[].tip_contrib
string
PJ or PF.
data[].e_firma
boolean
true when the entity is also in the Trade Register.
data[].judet
string
County from the fiscal address.
data[].localitate
string
Locality from the fiscal address.
data[].stare
string
Fiscal registration status.
data[].an
integer
The year of the snapshot the data comes from.
meta.paginare.pagina
integer
Current page, counted from 1.
meta.paginare.per_pagina
integer
How many records a page holds.
meta.paginare.total
integer
Total matching records, beyond the current page.
meta.paginare.pagini
integer
How many pages the list has.
Response examples
GEThttps://oneapi.ro/api/business/v1/entitati/cauta?q=parohia&doar_neinregistrate=true
{
"data": [
{
"cui": 40973801,
"denumire": "PAROHIA 1 DECEMBRIE",
"tip_contrib": "PJ",
"e_firma": false,
"judet": "ILFOV",
"localitate": "1 Decembrie",
"stare": "INREGISTRAT",
"an": 2026
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 14440,
"pagini": 722
}
}
}
GEThttps://oneapi.ro/api/business/v1/entitati/cauta?judet=CLUJ&doar_neinregistrate=true
{
"data": [
{
"cui": 46491089,
"denumire": "3R GREEN CLUSTER",
"tip_contrib": "PJ",
"e_firma": false,
"judet": "CLUJ",
"localitate": "Cluj-Napoca",
"stare": "INREGISTRAT",
"an": 2026
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 34339,
"pagini": 1717
}
}
}
GEThttps://oneapi.ro/api/business/v1/entitati/cauta?per_pagina=3
{
"data": [
{
"cui": 41572620,
"denumire": "$COMPANYNAME S.R.L.",
"tip_contrib": "PJ",
"e_firma": true,
"judet": "ARAD",
"localitate": "Oraş Sântana",
"stare": "SUSPENDARE ACTIVITATE",
"an": 2026
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 2647765,
"pagini": 882589
}
}
}
GEThttps://oneapi.ro/api/business/v1/entitati/cauta?per_pagina=3&q=Cluj
{
"data": [
{
"cui": 49893358,
"denumire": "CLUJ 1 PAWNBROKER S.R.L.",
"tip_contrib": "PJ",
"e_firma": true,
"judet": "ALBA",
"localitate": "Aiud",
"stare": "INREGISTRAT",
"an": 2026
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 5405,
"pagini": 1802
}
}
}
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. |
| 422 | validare | Nothing is searched without a filter: give at least one (q, judet, tip_contrib). |
| 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": "Nothing is searched without a filter: give at least one (q, judet, tip_contrib).",
"detalii": {
"q": [
"The value sent does not satisfy the parameter rule."
]
}
}
}