oneapi
Sign in
Financiar v1 / Inflatie

Economic results of enterprises

Five quantities by sector of activity × size class × form of ownership, annually from 1997 to 2024: exports, gross value added at factor cost and the gross result of the financial year — measured on enterprises — plus turnover and gross investment in tangible goods — measured on local units.

⚠️ The two universes are not additive. An enterprise is a legal entity, a local unit is a place of business. The indicator determines the universe, every series declares it, and univers is only a convenience filter.

⚠️ The Rev. 1 series goes through the 2005 denomination. The source declares it year by year: „Miliarde lei" for 1997–2004, „Milioane lei RON" for 2005–2008. The response brings everything to million RON lei and keeps publicat alongside — the raw value, the source's unit and the factor used.

⚠️ The two classifications join only on the economy total. Not by sector: in 2008, published by both, servicii_populatie differs by as much as 881.8%.

GET
https://oneapi.ro/api/financiar/v1/intreprinderi/rezultate

Query parameters

NameTypeDescriptionAccepted values
de_laoptional integer | null Optional, year, from 1997. 1997 – 2100
pana_laoptional integer | null Optional, year. 1997 – 2100
universlistoptional text Optional: intreprinderi or unitati_locale. The indicator determines it anyway; this is a convenience filter. intreprinderiunitati_locale
indicatorlistoptional text Optional, comma-separated: exporturi, valoare_adaugata, rezultat_brut (on enterprises), cifra_afaceri, investitii_brute (on local units). All five by default. exporturivaloare_adaugatarezultat_brutcifra_afaceriinvestitii_brute
clasificarelistoptional text Optional: rev1 (CAEN Rev.1, 1997-2008) or rev2 (CAEN Rev.2, 2008-2024). Both by default, each series carrying its own label. rev1rev2
sectorlistoptional text Optional, comma-separated short codes. total by default. The list of eight is in the nomenclature. e.g. total
clasa_marimelistoptional text Optional: 0_49, 50_99, 100_249, 250_499, 500_plus, total. total by default. e.g. total
proprietatelistoptional text Optional: total or majoritar_privata. total by default. totalmajoritar_privata

How it behaves

  • Five magnitudes by activity sector × size class × ownership form, annually from 1997 to 2024, 10,557 values: exports, gross value added at factor cost and the gross result of the financial year — measured on enterprises, from TEMPO matrices INT106A/B, INT107A/B, INT108A/B — plus turnover and gross investment in tangible goods — measured on local units, from INT104B/E and INT105A/F.
  • ⚠️ The two universes do not add up. An enterprise is a legal entity; a local unit is a place of work. The two groups of indicators do not overlap at all, so the indicator determines the universe: each series declares it in univers, and the parameter of the same name is only a convenience filter — asked together with an indicator from the other universe, the response is an explicit refusal rather than an empty list.
  • The size classes differ from those in /financiar/v1/intreprinderi/indicatori: 0-49, 50-99, 100-249, 250-499 and 500+ here, against 0-9, 10-19, 20-49, 50-249 and 250+ there. This is not the same breakdown seen differently but a second cut through the same economy — coarser at the bottom, finer at the top, and with eleven more years of history.
  • Size separates exporting from profit. In 2024, firms with more than 500 employees account for 58.2% of exports (231,097 of 396,839 million lei) but only 34.1% of value added and 22.3% of the gross result. Firms under 50 employees do the reverse: 16.9% of exports, 39.2% of value added and 53.9% of the gross result (101,868 of 189,143).
  • ⚠️ The Rev.1 series goes through the 2005 denomination, and the source declares it year by year. In INT106A, INT107A and INT108A the unit is “Miliarde lei” for 1997-2004 and “Milioane lei RON” for 2005-2008 (the same in INT104/INT105), so the published figures drop abruptly in 2005: exports from 537,401 to 59,778, value added from 892,586 to 104,859, gross result from 222,261 to 28,474. The jump is not uniform — the 2004/2005 ratio is 7.8-9.0 on the economy totals and between 0.75 and 3,539 across cells, because the economy itself moved between the two years — so the unit is read from the label, not inferred from the jump. Confirmed by the overlapping year: in 2008 INT106A reports 97,717 while INT106B reports 97,727 “Milioane lei RON”.
  • The response brings everything to million lei RON: 1997-2004 are multiplied by 0.1 (1 billion ROL = 0.1 million RON), the rest are left untouched. The transformation is not hidden — each series carries a publicat block with the raw source value, the source unit and the factor applied, year by year.
  • ✅ Both families declare the denomination correctly: INT106-INT108 (enterprises) and INT104/INT105 (local units) switch from “Miliarde lei” to “Milioane lei RON” exactly in 2005, and the conversion follows the unit declared on each year. Until 15 Sep the documentation wrongly said the first family kept the old label across the whole series.
  • ⚠️ The two classifications join only on the economy-wide total. In 2008, published by both, the total agrees to under 1%: exports 97,717 against 97,727 (0.01%), value added 221,156 against 221,400 (0.11%), gross result 32,105 against 32,196 (0.28%). By sector it does not: of each sector’s 36 cells, comert_ridicata matches on all 36, industrie on 18, constructii on 17, auto on 16, comert_amanuntul on 12, servicii_intreprinderi on 3 and servicii_populatie on 2 of 35, with a maximum deviation of 881.8%. The measured concordance, sector by sector, is in the nomenclature.
  • ⚠️ The majoritar_privata form stops in 2010 under the new classification; from 2011 the source publishes the total only. Under Rev.1 it is complete and shows the whole transition: the private share of value added rises from 45.8% in 1997 to 88.9% in 2007.
  • ⚠️ The gross result also takes negative values — 150 of the 1,152 Rev.1 cells and 99 of 960 under Rev.2. The private share is computed only where the base is positive: on a negative base it would mean nothing.
  • ✅ Both partitions close, all of them. The five size classes sum to the total row and the seven sectors sum to the economy total: 1,056 of 1,056 checks, at a tolerance derived from the source rounding step ((n+1)/2 steps — 3 for classes, 4 for sectors). Under Rev.1 the deviation is zero, under Rev.2 at most 2 steps. The identities are computed from the database, not from the filtered response: a response for a single sector could never close the sum over sectors.
  • Without breakdown filters the response would carry more than 16,000 cells, so the economy-wide figures are returned by default — sector=total, clasa_marime=total, proprietate=total. meta.nota_implicit states each time what was applied.

What it is for

  • How much of exports large firms account for and how much small ones do, year by year since 1997.
  • Where profit is made: value added against gross result by size class.
  • The transition to private ownership, in figures, between 1997 and 2008.
  • The long series of value added by sector, in one unit, across the denomination break.

Response structure

FieldTypeDescription
data.de_la integer Start of the interval the response covers.
data.pana_la integer End of the interval the response covers, inclusive.
data.unitate string Always milioane lei RON: the series are brought to one unit, whatever the source declares.
data.filtre.sector array Institutional or economic sector.
data.filtre.clasa_marime array Enterprise size class, by number of employees.
data.filtre.proprietate array Form of ownership.
data.ani array Years for which values exist.
data.serii[].univers string intreprinderi (legal entities) or unitati_locale (places of work). The two do not add up.
data.serii[].indicator string The statistical indicator the value refers to.
data.serii[].denumire_indicator string
data.serii[].clasificare string The classification the values are broken down by.
data.serii[].denumire_clasificare string
data.serii[].sector string Institutional or economic sector.
data.serii[].denumire_sector string Name of the sector, as published by the source.
data.serii[].clasa_marime string Enterprise size class, by number of employees.
data.serii[].denumire_clasa_marime string
data.serii[].proprietate string Form of ownership.
data.serii[].denumire_proprietate string
data.serii[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.serii[].ani_publicati integer Years the source actually published for this series.
data.serii[].valori object The values of the series, by period.
data.serii[].publicat object Present only on converted years (Rev.1, 1997-2004): the raw source value, its unit and the factor applied, year by year.
data.identitati.partitii object The two partitions, checked over the whole projection rather than the filtered response, with the derived tolerance and the maximum deviation expressed in rounding steps.
data.identitati.partitii.clase_marime.identitate string The identity being checked — which sum must equal which total.
data.identitati.partitii.clase_marime.toleranta string How much deviation is accepted before the identity counts as unclosed — the source rounding, not an error.
data.identitati.partitii.clase_marime.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.partitii.clase_marime.pe_serie[].univers string The statistical universe the values refer to — the population measured.
data.identitati.partitii.clase_marime.pe_serie[].indicator string The statistical indicator the value refers to.
data.identitati.partitii.clase_marime.pe_serie[].clasificare string The classification the values are broken down by.
data.identitati.partitii.clase_marime.pe_serie[].verificari integer How many combinations were checked.
data.identitati.partitii.clase_marime.pe_serie[].inchise integer How many checks closed within tolerance.
data.identitati.partitii.clase_marime.pe_serie[].abatere_maxima_in_pasi string
data.identitati.partitii.sectoare.identitate string The identity being checked — which sum must equal which total.
data.identitati.partitii.sectoare.toleranta string How much deviation is accepted before the identity counts as unclosed — the source rounding, not an error.
data.identitati.partitii.sectoare.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.partitii.sectoare.pe_serie[].univers string The statistical universe the values refer to — the population measured.
data.identitati.partitii.sectoare.pe_serie[].indicator string The statistical indicator the value refers to.
data.identitati.partitii.sectoare.pe_serie[].clasificare string The classification the values are broken down by.
data.identitati.partitii.sectoare.pe_serie[].verificari integer How many combinations were checked.
data.identitati.partitii.sectoare.pe_serie[].inchise integer How many checks closed within tolerance.
data.identitati.partitii.sectoare.pe_serie[].abatere_maxima_in_pasi string
data.identitati.suprapunere object The year 2008, published under both classifications: the values and the deviation, reported — no equality is required between two different reconstructions of the same year.
data.identitati.suprapunere.an integer The year the value refers to.
data.identitati.suprapunere.identitate string The identity being checked — which sum must equal which total.
data.identitati.suprapunere.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.suprapunere.valori[].indicator string The statistical indicator the value refers to.
data.identitati.suprapunere.valori[].rev1 string Values on the first revision of the classification.
data.identitati.suprapunere.valori[].rev2 string Values on the second revision of the classification.
data.identitati.suprapunere.valori[].abatere_procente string
data.identitati.pondere_majoritar_privata object The majority-private share of the total, for the years the source publishes it and only where the total is positive.
data.identitati.pondere_majoritar_privata.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.pondere_majoritar_privata.unitate string Unit of measure of the values. Read it before plotting or summing them.
data.identitati.pondere_majoritar_privata.valori[].indicator string The statistical indicator the value refers to.
data.identitati.pondere_majoritar_privata.valori[].clasificare string The classification the values are broken down by.
data.identitati.pondere_majoritar_privata.valori[].an integer The year the value refers to.
data.identitati.pondere_majoritar_privata.valori[].pondere string
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.acoperire.de_la integer The first period we have data for.
meta.acoperire.pana_la integer The last period we have data for.
meta.serii_returnate integer How many series were actually returned, after filters and the cell ceiling.
meta.unitate string Unit of measure of the values. Read it before plotting or summing them.
meta.nota_implicit string Which value was used when the parameter was not sent.
meta.nota_denominare string The 2005 denomination (1 new leu = 10,000 old lei) and what it means for comparisons.
meta.nota_eticheta string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_universuri string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_clasificari string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_negativ string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_identitate string How the identity above is checked and what it means when it does not close.
meta.nota_alaturi string A note on how to read the response: a caveat, a convention or a limit of the source.
data.serii[].poate_fi_negativ Present on the gross result, the only indicator that takes negative values.
meta.fara_date string data is null and this says why. The projection over the INS data is empty. The lists are in the nomenclature. The combination has no series; note that the private form is published only for 1997-2008 under Rev.1 and 2008-2010 under Rev.2. As for the other series.
meta.fara_date_cod string 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.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/intreprinderi/rezultate
{
    "data": {
        "de_la": 1997,
        "pana_la": 2024,
        "unitate": "milioane lei RON",
        "filtre": {
            "sector": [
                "total"
            ],
            "clasa_marime": [
                "total"
            ],
            "proprietate": [
                "total"
            ]
        },
        "ani": [
            1997,
            1998,
            1999,
            2000,
            2001,
            2002,
            2003,
            2004,
            2005,
            2006,
            2007,
            2008,
            2009,
            2010,
            2011,
            2012,
            2013,
            2014,
            2015,
            2016,
            2017,
            2018,
            2019,
            2020,
            2021,
            2022,
            2023,
            2024
        ],
        "serii": [
            {
                "univers": "intreprinderi",
                "indicator": "exporturi",
                "denumire_indicator": "Exporturile întreprinderilor",
                "clasificare": "rev1",
                "denumire_clasificare": "CAEN Rev.1",
                "sector": "total",
                "denumire_sector": "Total economie",
                "clasa_marime": "total",
                "denumire_clasa_marime": "Total",
                "proprietate": "total",
                "denumire_proprietate": "Toate formele de proprietate",
                "unitate": "milioane lei RON",
                "ani_publicati": 12,
                "valori": {
                    "1997": "6036.3",
                    "1998": "6680.2",
                    "1999": "10445.3",
                    "2000": "11049.1",
                    "2001": "18365.3",
                    "2002": "28273.8",
                    "2003": "37451.1",
                    "2004": "53740.1",
                    "2005": "59778",
                    "2006": "70418",
                    "2007": "78770",
                    "2008": "97717",
                    "2009": null,
                    "2010": null,
                    "2011": null,
                    "2012": null,
                    "2013": null,
                    "2014": null,
                    "2015": null,
                    "2016": null,
                    "2017": null,
                    "2018": null,
                    "2019": null,
                    "2020": null,
                    "2021": null,
                    "2022": null,
                    "2023": null,
                    "2024": null
                },
                "publicat": {
                    "1997": {
                        "valoare": "60363",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    },
                    "1998": {
                        "valoare": "66802",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    },
                    "1999": {
                        "valoare": "104453",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    },
                    "2000": {
                        "valoare": "110491",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    },
                    "2001": {
                        "valoare": "183653",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    },
                    "2002": {
                        "valoare": "282738",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    },
                    "2003": {
                        "valoare": "374511",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    },
                    "2004": {
                        "valoare": "537401",
                        "unitate": "miliarde lei ROL",
                        "factor": "0.1"
                    }
                }
            }
        ],
        "identitati": {
            "partitii": {
                "clase_marime": {
                    "identitate": "suma celor 5 clase de mărime = rândul `total`",
                    "toleranta": "derivată: (n+1)/2 paşi de rotunjire — 3.0 paşi, pasul fiind 1 milion RON (0,1 pe anii convertiţi din ROL)",
                    "nota": "Cerută din bază, pe toată proiecţia — un răspuns filtrat pe un singur sector ori pe o singură clasă n-ar avea cum să închidă suma.",
                    "pe_serie": [
                        {
                            "univers": "intreprinderi",
                            "indicator": "exporturi",
                            "clasificare": "rev1",
                            "verificari": 192,
                            "inchise": 192,
                            "abatere_maxima_in_pasi": "0.00"
                        }
                    ]
                },
                "sectoare": {
                    "identitate": "suma celor 7 sectoare = totalul economiei",
                    "toleranta": "derivată: (n+1)/2 paşi de rotunjire — 4.0 paşi, pasul fiind 1 milion RON (0,1 pe anii convertiţi din ROL)",
                    "nota": "Cerută din bază, pe toată proiecţia — un răspuns filtrat pe un singur sector ori pe o singură clasă n-ar avea cum să închidă suma.",
                    "pe_serie": [
                        {
                            "univers": "intreprinderi",
                            "indicator": "exporturi",
                            "clasificare": "rev1",
                            "verificari": 144,
                            "inchise": 144,
                            "abatere_maxima_in_pasi": "0.00"
                        }
                    ]
                }
            },
            "suprapunere": {
                "an": 2008,
                "identitate": "acelaşi an, publicat în amândouă clasificările, pe economia întreagă",
                "nota": "Raportată, nu ratată: cele două clasificări sunt reconstrucţii diferite ale aceluiaşi an, aşa că nu se cere egalitate. Pe totalul economiei abaterea e sub 1%; pe sectoare nu.",
                "valori": [
                    {
                        "indicator": "cifra_afaceri",
                        "rev1": "954025",
                        "rev2": "954790",
                        "abatere_procente": "0.0801"
                    }
                ]
            },
            "pondere_majoritar_privata": {
                "nota": "Calculată doar unde totalul e pozitiv — rezultatul brut ia şi valori negative, iar pe bază negativă ponderea n-ar însemna nimic. Sursa publică forma privată doar 1997-2008 pe Rev.1 şi 2008-2010 pe Rev.2.",
                "unitate": "procente din total",
                "valori": [
                    {
                        "indicator": "cifra_afaceri",
                        "clasificare": "rev1",
                        "an": 1997,
                        "pondere": "58.6"
                    }
                ]
            }
        }
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — rezultatele economice ale întreprinderilor (TEMPO, matricile INT106A/B, INT107A/B, INT108A/B).",
        "acoperire": {
            "de_la": 1997,
            "pana_la": 2024
        },
        "serii_returnate": 10,
        "unitate": "milioane lei RON",
        "nota_implicit": "Fără `sector`, `clasa_marime`, `proprietate` răspunsul ar purta peste 16.000 de celule, aşa că defalcarea implicită e economia întreagă. Cere explicit alte valori pentru a o desface.",
        "nota_denominare": "⚠️ Anii 1997-2004 sunt convertiţi din miliarde lei ROL în milioane lei RON (factor 0,1); valoarea publicată rămâne în `publicat` pe fiecare serie.",
        "nota_eticheta": "⚠️ Unitatea e declarată de sursă an cu an, pe ambele universuri: „Miliarde lei\" pe 1997-2004, „Milioane lei RON\" din 2005. Saltul 2004→2005 al cifrelor publicate nu e un factor fix (7,8-9,0 pe totalurile economiei, 0,75-3.539 pe celule), deci unitatea se citeşte din `publicat`, nu se deduce din salt.",
        "nota_universuri": "⚠️ Răspunsul amestecă două universuri (intreprinderi, unitati_locale): întreprinderile sunt entităţi juridice, unităţile locale sunt puncte de lucru. Cifrele lor NU se adună.",
        "nota_clasificari": "Rev.1 şi Rev.2 se lipesc doar pe totalul economiei; pe sectoare, nu. Concordanţa măsurată pe fiecare sector e la /financiar/v1/intreprinderi/rezultate/nomenclator.",
        "nota_negativ": "Rezultatul brut al exerciţiului ia şi valori negative — 150 din 1.152 de celule pe Rev.1, 99 din 960 pe Rev.2. Ponderile nu se calculează pe bază negativă.",
        "nota_identitate": "Partiţiile sunt verificate pe toată proiecţia, nu pe răspunsul filtrat, la o toleranţă derivată din pasul de rotunjire al sursei.",
        "nota_alaturi": "Aceiaşi indicatori pe secţiuni CAEN şi alte clase de mărime, din 2008: /financiar/v1/intreprinderi/indicatori. Naşterile şi decesele de firme: /financiar/v1/intreprinderi/demografie."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatMissing or invalid token.
403feature_indisponibilfinanciar.indici is not in the current plan.
422raspuns_prea_mareOver 20,000 cells. Plus indicator, classification, sector, class or form outside the list. indicator_in_alt_univers — the requested indicator is measured on the other universe; the response says which.
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": "raspuns_prea_mare",
        "mesaj": "Over 20,000 cells. Plus indicator, classification, sector, class or form outside the list. indicator_in_alt_univers — the requested indicator is measured on the other universe; the response says which.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}