oneapi
Autentificare
Business v1 / Firme

Top firme

Firmele clasate după cifra de afaceri, profitul net ori numărul de salariaţi, pe bilanţurile unui an, opţional într-un judeţ ori un sector CAEN.

GET
https://oneapi.ro/api/business/v1/firme/top

Parametri de interogare

NumeTipDescriereValori acceptate
caenopțional string | null Cod CAEN de orice nivel — secţiune (G), diviziune (62), grupă, clasă (4711). ex. 62
caen_versiuneopțional string | null Revizia codului din caen (1, 2, 3), când forma lui e ambiguă. 123
dupaobligatoriu string Obligatoriu. cifra_afaceri, profit ori salariati. cifra_afaceriprofitsalariati
anopțional integer | null Anul bilanţului. Implicit, cel mai nou an cu bilanţurile depuse în mare parte. ex. 2025
judetopțional string | null Judeţul sediului: indicativul auto (CJ) ori numele. ex. CJ
limitaopțional integer | null Câte firme. Implicit 20, maxim 100. 1 – 100

Cum se comportă

  • Clasamentul firmelor după cifra_afaceri, profit (profitul net, cu semn) ori salariati, pe bilanţurile unui singur an — toate rândurile au acelaşi financiar.an, deci sunt comparabile. Listele obişnuite (/judete/{judet}/firme?sortare=) ordonează în schimb după ultimul bilanţ depus al fiecărei firme.
  • Fără an, se foloseşte cel mai nou an cu bilanţurile depuse în mare parte (cel puţin 90% din firmele anului dinainte), spus în meta.an_implicit. Anul în curs de depunere (iunie–septembrie) ar clasa doar firmele grăbite. Un an fără bilanţuri întoarce 200 cu data: null şi meta.fara_date, cu anii disponibili.
  • judet e judeţul sediului din anul clasat (din istoricul ONRC: o firmă mutată în 2024 din Cluj în Bucureşti apare în topul Clujului pe 2021), iar caen activitatea principală de azi din ANAF (un cod de orice nivel, desfăcut în toate reviziile).
  • Bilanţurile vin de la Ministerul Finanţelor (situaţiile financiare anuale depuse). Firmele care nu depun bilanţ (PFA, II) nu apar.
  • Valorile imposibile scrise în formular (o cifră de afaceri de 300.000 de miliarde de lei, 62.355 de salariaţi la o firmă cu 275.000 de lei cifră de afaceri) devin null, nu intră în clasament ori în medii. Asigurătorii n-au rând de cifră de afaceri în formular, deci au cifra_afaceri: null.

La ce folosește

  • Cele mai mari 20 de firme dintr-un judeţ, pentru o pagină de prezentare a economiei locale.
  • Liderii unui sector (caen=62) după numărul de angajaţi, pentru prospectare ori recrutare.
  • Cele mai profitabile firme dintr-un an, pentru un articol ori un raport.

Structura răspunsului

CâmpTipDescriere
data[].pozitie integer Locul în clasament, de la 1.
data[].cui integer Codul fiscal.
data[].denumire string Denumirea.
data[].cod_inmatriculare string Numărul de ordine în registrul comerţului (J…).
data[].forma_juridica string Forma juridică (SRL, SA, PFA…).
data[].stare object 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[].stare.cod string Codul din nomenclatorul sursei — cheia pe care se filtrează.
data[].stare.denumire string Denumirea, aşa cum o publică sursa.
data[].stare.categorie string Categoria din clasificarea sursei.
data[].data_inmatriculare string Data înmatriculării la registrul comerţului.
data[].sediu.judet string Judeţul sediului social.
data[].sediu.localitate string Localitatea sediului social.
data[].sediu.cod_siruta integer Codul SIRUTA al localităţii — chainable spre /locations/v1.
data[].caen_principal.cod string Codul CAEN principal.
data[].caen_principal.denumire string 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.an integer Anul bilanţului clasat — acelaşi pe toate rândurile.
data[].financiar.cifra_afaceri integer Cifra de afaceri netă, în lei.
data[].financiar.profit_net integer Profitul net, în lei; negativ = pierdere.
data[].financiar.salariati integer Numărul mediu de salariaţi.
meta.dupa string Criteriul clasamentului.
meta.an integer Anul bilanţurilor clasate.
meta.an_implicit integer Anul folosit când lipseşte an: cel mai nou an cu bilanţurile depuse în mare parte.
meta.limita integer Câte firme s-au cerut.
meta.nr_firme integer
meta.judet string Judeţul cerut, dacă e cazul.
meta.caen object Cum s-a rezolvat codul CAEN cerut (nivel, denumire, câte clase s-au căutat).

Exemple de răspuns

GEThttps://oneapi.ro/api/business/v1/firme/top?dupa=cifra_afaceri&limita=10
{
    "data": [
        {
            "pozitie": 1,
            "cui": 1590082,
            "denumire": "OMV PETROM SA",
            "cod_inmatriculare": "J1997008302407",
            "forma_juridica": "SA",
            "stare": {
                "cod": "2072",
                "denumire": "sechestru părți sociale/acțiuni deținute de unul sau mai mulți asoc./acționari",
                "categorie": "alta"
            },
            "data_inmatriculare": "1997-10-23",
            "sediu": {
                "judet": "București",
                "localitate": "București Sectorul 1",
                "cod_siruta": 179141
            },
            "caen_principal": {
                "cod": "0610",
                "denumire": "Extracția petrolului brut"
            },
            "fiscal": {
                "tva": true,
                "inactiv": false,
                "e_factura": false
            },
            "financiar": {
                "an": 2025,
                "cifra_afaceri": 30828147506,
                "profit_net": 3067559914,
                "salariati": 6701
            }
        }
    ],
    "meta": {
        "dupa": "cifra_afaceri",
        "an": 2025,
        "an_implicit": 2025,
        "limita": 10,
        "nr_firme": 730163
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareUn parametru nedeclarat ori o valoare care nu trece validarea (dupa lipsă ori necunoscut, an, limita peste 100, caen). Câmpul vinovat e în detalii.
422filtru_necunoscutJudeţul din judet nu există; detalii.camp spune care.
422caen_inexistentCodul din caen nu există în nicio revizie CAEN.
429cota_depasitaCota 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": "Un parametru nedeclarat ori o valoare care nu trece validarea (dupa lipsă ori necunoscut, an, limita peste 100, caen). Câmpul vinovat e în detalii.",
        "detalii": {
            "caen": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}