oneapi
Sign in
Financiar v1 / Inflatie

GDP by county

Regional gross domestic product, by branch of activity and county — annually from 2000 to 2023, in million lei. 17,136 values.

It complements /financiar/v1/pib, which is quarterly and national. There you get the economy's pace by quarter; here you get its map — the only place in the module where you can see how much each county produces.

The fifteen categories are of four kinds and do not mix: ten ramura (the components of value added), the vab aggregate, three element_trecere (taxes on products, subsidies on products, customs duties) and the pibr total. Added together, they would count the economy twice.

⚠️ Subsidies on products are published with a NEGATIVE sign, exactly as in the national account: in 2023, nationwide, −16,383.8 million lei. The correct identity is an addition that looks like a subtraction. Verified across the whole projection: pibr = vab + taxes + subsidies + customs duties closes 336 of 336 cells, with a maximum deviation of 0.3 million; anyone subtracting the subsidies gets only 24 of 336. The series carry them with semn_negativ: true.

✅ vab = the sum of the ten branches closes 1,344 of 1,344, with zero deviation.

⚠️ Taxes, subsidies and customs duties are not published by county — only for the country, macro-regions, regions and Extra-regiuni, the artificial territory where the source puts what cannot be allocated. At county level, GDP is nevertheless larger than value added in all 1,008 cells, with a mean ratio of 1.115: the taxes are included, but not published separately, so the GDP identity cannot be run at that level. Extra-regiuni has its own nivel_teritoriu, so that it does not appear in county rankings.

Every county series comes with its share of the national total, computed on the same category — the figure that says how much the county weighs in the economy. In 2023, Bucharest makes up 26.02% of GDP, followed by Cluj with 5.33% and Timiș with 4.51%.

GET
https://oneapi.ro/api/financiar/v1/pib/judete

Query parameters

NameTypeDescriptionAccepted values
niveloptional string | null Optional: total, agregat, element_trecere, ramura. totalagregatelement_trecereramura
teritoriuoptional string | null Optional, the exact name — a county, a region, a macroregion, TOTAL or Extra-regiuni. max 80 car.
nivel_teritoriuoptional string | null Optional: judet (default), tara, macroregiune, regiune, extra_regiuni. taramacroregiuneregiunejudetextra_regiuni
de_laoptional integer | null Optional, a year, from 2000. 2000 – 2100
pana_laoptional integer | null Optional, a year. 2000 – 2100
caen_versiuneoptional string | null Optional: the revision of the caen code — 1, 2 or 3 — when its form is ambiguous (4932 means different things in Rev.2 and Rev.3). Without it, the code is looked up in the series revision first. 123
categorielistoptional text Optional, separated by commas: pibr, vab, impozite, subventii, taxe_vamale — the account rows that are not branches. Branches are requested through caen or grupare. Without any of them and without nivel, only pibr is returned. pibrvabimpozitesubventiitaxe_vamale
caenlistoptional text Optional, codes separated by commas: any CAEN code — section (C), division (62), group, class (6201) — from any revision. It is brought to the A10 branch that contains it (2410 → industrie); what was used is in meta.caen. e.g. C
gruparelistoptional text Optional, separated by commas: the source aggregates that are not CAEN codes — the A10 sum branches requested directly (industrie, comert_transport_horeca, profesionale_administrative, administratie_educatie_sanatate, spectacole_alte_servicii). Not sent together with caen. e.g. industriee.g. comert_transport_horecae.g. profesionale_administrative

How it behaves

  • Regional gross domestic product, by branch of activity and county — annually from 2000 to 2023, in millions of lei. 17,136 values from TEMPO matrix CON103J.
  • It complements /financiar/v1/pib, which is quarterly and national. That route holds the pace of the economy; this one holds its map — the only place in the module showing what each county produces.
  • What the data shows for 2023: Bucharest accounts for 26.02% of the country's GDP — 413,945.2 of 1,590,749.4 million lei — followed by Cluj with 5.33% (84,794.1) and Timiş with 4.51% (71,779.8). Each county series carries its own share, computed on the same category.
  • The fifteen rows are of four kinds and do not mix: ten ramura (the components of value added), the vab aggregate, three element_trecere — product taxes, product subsidies, customs duties — and the pibr total. Added together they would count the economy twice.
  • ⚠️ Product subsidies are published with a NEGATIVE sign, exactly as in the national account: in 2023, nationally, −16,383.8 million lei. The correct identity is an addition that looks like a subtraction. Verified across the whole projection: pibr = vab + impozite + subventii + taxe_vamale closes 336 of 336 cells, with a maximum gap of 0.3 million; subtracting the subsidies yields only 24 of 336. The series flags them with semn_negativ: true.
  • ✅ vab = the sum of the ten branches closes 1,344 of 1,344, with zero deviation.
  • ⚠️ Taxes, subsidies and customs duties are not published by county — only for the country, macroregions, regions and Extra-regiuni, an artificial territory holding what cannot be allocated. At county level GDP is nonetheless larger than value added in all 1,008 cells, with a mean ratio of 1.115: the taxes are included in the figure but not published separately, so the GDP identity cannot be run there. Extra-regiuni carries its own nivel_teritoriu, so it never appears in county rankings.
  • What the structure shows: in Cluj, in 2023, the largest branch is it_comunicatii, at 16,207.6 million lei — above trade-transport-hospitality (14,536.6) and above industry (13,667.7).
  • Territories also carry a short code, teritoriu_cod — bucuresti_ilfov, nord_vest, cluj, total — which is also accepted as the teritoriu filter. It was needed because the INS sources write the same regions differently from one matrix to the next: Total versus TOTAL, Regiunea Nord -Vest versus Regiunea NORD-VEST. It is the same code as in /financiar/v1/conturi-regionale, so the two routes can be joined.
  • Activity is requested the same way across the platform. caen takes any CAEN code, at any level and from any revision, and the route brings it to what the series publishes — climbing to a parent or translating it through the official INS correspondence; meta.caen states the requested code, the one used and whether it was climbed or converted. grupare is for the source aggregates that are not CAEN codes.

What it is for

  • How much a county weighs in the national economy, in percent.
  • The economic structure of a county: which branch produces the most.
  • Comparing counties on the same branch, over a long series.

Response structure

FieldTypeDescription
data.unitate string The unit of the values. Read it before plotting or adding them up.
data.de_la integer Start of the interval the response covers.
data.pana_la integer End of the interval the response covers, inclusive.
data.filtre.categorie array Category in the source classification.
data.filtre.nivel_teritoriu string Territorial level of the value (country, region, county, locality).
data.ani array Years for which values exist.
data.serii[].teritoriu string The territory the value refers to.
data.serii[].teritoriu_cod string The territory short code, shared with /financiar/v1/conturi-regionale; also accepted as the teritoriu filter.
data.serii[].nivel_teritoriu string Territorial level of the value (country, region, county, locality).
data.serii[].categorie string Category in the source classification.
data.serii[].nivel string total, agregat, element_trecere or ramura — they do not add together.
data.serii[].denumire string The name, exactly as the source publishes it.
data.serii[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.serii[].pondere_in_tara_procent object The territory's share of the national total, on the same category.
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.identitati.identitate_vab string
data.identitati.identitate_pib string
data.identitati.nota_semn string What the sign of the value means (inflow/outflow, rise/fall).
data.identitati.nota_vab string
data.identitati.nota_elemente string
data.identitati.toleranta string One million lei, derived from the decimal the source publishes.
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.nota_national string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_semn string What the sign of the value means (inflow/outflow, rise/fall).
meta.nota_vab string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_elemente string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_niveluri string What each level means and which of them are comparable.
meta.nota_pondere string A note on how to read the response: a caveat, a convention or a limit of the source.
data.serii[].semn_negativ Present only on subventii, which is ADDED in the identity.
meta.fara_date string data is null and this says why. The projection over the INS data is empty. The code is not published; the full list is at /pib/judete/categorii. The name does not appear. As on 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.
meta.caen[] object[] How the caen parameter was understood: the requested code, the revision it was read in and the code the route used. For a list of codes, one object per code.
meta.caen[].cerut string The CAEN code sent, normalised (upper case, no dots).
meta.caen[].versiune_cerut string The revision the code sent was read in: the one in caen_versiune, otherwise the first it exists in.
meta.caen[].folosit string The code the series used: the requested one, its first published parent or the source aggregate that contains it (02-03).
meta.caen[].cod string The CAEN code the key used stands for, when the series names its activities differently (agricultura = 01) or the key is an aggregate (62-63).
meta.caen[].nivel string The level of the code used — on company routes, of the requested code: sectiune, subsectiune, diviziune, grupa, clasa or agregat.
meta.caen[].denumire string The name of the code, from the CAEN nomenclature.
meta.caen[].versiune_serie string The CAEN revision the series is published in.
meta.caen[].conversie boolean true when the code was translated from one revision to another through the official INS correspondence.
meta.caen[].urcat boolean true when the series does not publish the requested code and a higher level was used.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/pib/judete?de_la=2020&pana_la=2022
{
    "data": {
        "unitate": "milioane lei",
        "de_la": 2020,
        "pana_la": 2022,
        "filtre": {
            "categorie": [
                "pibr"
            ],
            "nivel_teritoriu": "judet"
        },
        "ani": [
            2020,
            2021,
            2022
        ],
        "serii": [
            {
                "teritoriu": "Alba",
                "teritoriu_cod": "alba",
                "nivel_teritoriu": "judet",
                "categorie": "pibr",
                "nivel": "total",
                "denumire": "Produs intern brut regional (PIBR) - total",
                "unitate": "milioane lei",
                "pondere_in_tara_procent": {
                    "2020": "1.64",
                    "2021": "1.70",
                    "2022": "1.55"
                },
                "ani_publicati": 3,
                "valori": {
                    "2020": "17521",
                    "2021": "20254.4",
                    "2022": "21583.5"
                }
            }
        ],
        "identitati": {
            "identitate_vab": "`vab` = suma celor zece ramuri",
            "identitate_pib": "`pibr` = `vab` + `impozite` + `subventii` + `taxe_vamale`",
            "nota_semn": "Subvenţiile pe produs sunt publicate cu semn NEGATIV — în 2023, pe ţară, −16.383,8 milioane lei. Identitatea e o ADUNARE care arată ca o scădere. Verificat pe toată proiecţia: adunarea se închide 336 din 336 de celule, cu abatere maximă de 0,3 milioane; scăderea, doar 24 din 336.",
            "nota_vab": "Verificat pe toată proiecţia: `vab` = suma celor zece ramuri se închide 1.344 din 1.344, cu abatere zero.",
            "nota_elemente": "Impozitele, subvenţiile şi taxele vamale nu se publică pe judeţe — doar pe ţară, macroregiuni, regiuni şi pe `Extra-regiuni`, teritoriul artificial în care sursa pune ce nu se repartizează. Pe judeţ, PIB-ul e totuşi mai mare decât valoarea adăugată în toate cele 1.008 celule, cu un raport mediu de 1,115: impozitele sunt incluse, dar nu şi publicate separat, deci identitatea PIB nu se poate rula acolo.",
            "toleranta": "1"
        }
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — produsul intern brut regional (TEMPO, matricea CON103J).",
        "acoperire": {
            "de_la": 2000,
            "pana_la": 2023
        },
        "serii_returnate": 42,
        "nota_national": "Pentru PIB-ul trimestrial pe ţară, cu opt forme şi două optici ale contului: /financiar/v1/pib.",
        "nota_semn": "Subvenţiile pe produs sunt publicate cu semn NEGATIV — în 2023, pe ţară, −16.383,8 milioane lei. Identitatea e o ADUNARE care arată ca o scădere. Verificat pe toată proiecţia: adunarea se închide 336 din 336 de celule, cu abatere maximă de 0,3 milioane; scăderea, doar 24 din 336.",
        "nota_vab": "Verificat pe toată proiecţia: `vab` = suma celor zece ramuri se închide 1.344 din 1.344, cu abatere zero.",
        "nota_elemente": "Impozitele, subvenţiile şi taxele vamale nu se publică pe judeţe — doar pe ţară, macroregiuni, regiuni şi pe `Extra-regiuni`, teritoriul artificial în care sursa pune ce nu se repartizează. Pe judeţ, PIB-ul e totuşi mai mare decât valoarea adăugată în toate cele 1.008 celule, cu un raport mediu de 1,115: impozitele sunt incluse, dar nu şi publicate separat, deci identitatea PIB nu se poate rula acolo.",
        "nota_niveluri": "Cele patru feluri de rânduri — ramuri, agregat, elemente de trecere şi total — nu se adună între ele.",
        "nota_pondere": "Fiecare serie de judeţ poartă ponderea ei în totalul ţării, pe aceeaşi categorie."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404caen_nepublicatNeither the code nor its parents are published in the series; detalii.disponibile lists the keys. grupare_nepublicata — the grouping is not in the series; the response lists them.
422caen_inexistentThe code in caen exists in no CAEN revision; it is a bad FILTER value, hence 422, not 404. interval_prea_lung — beyond 30 years for a single territory and beyond 12 when the response spans several. Plus a level or category code outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped.
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": "caen_inexistent",
        "mesaj": "The code in caen exists in no CAEN revision; it is a bad FILTER value, hence 422, not 404. interval_prea_lung — beyond 30 years for a single territory and beyond 12 when the response spans several. Plus a level or category code outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped.",
        "detalii": {
            "nivel": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}