oneapi
Sign in
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=true is the parameter that gives the route its point. Without it, results are mostly commercial companies, which /firme/cauta already 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_firma whether 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
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareNothing is searched without a filter: give at least one (q, judet, tip_contrib).
429cota_depasitaThe 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."
            ]
        }
    }
}