The economy of local units, by county
Turnover, gross investment, net investment and staff of the active local units — by activity, size class and county, annually since 1998. 161,938 values, on two classifications requested separately through versiune: rev2 (2008–2024) and rev1 (1998–2008).
It brings what /financiar/v1/intreprinderi/indicatori lacks, being national: the county. There you get fourteen indicators on detailed NACE, but only nationwide; here you get four measures, on coarse NACE, but taken down to the county.
All four are totals, so they are additive — unlike the earnings in /financiar/v1/salariati, which is an average. Gross and net investment are different quantities, not variants of the same one: in 2020, nationwide, 146,604 million lei gross against 95,646 net.
⚠️ Territorial coverage widens in 2002: the years 1998–2001 have only 13 territories — four macro-regions, eight regions and the total, with no county at all.
⚠️ Rev. 1 monetary values up to 2004 are published in billions of ROL and brought here to millions of RON (factor 0.1); the publicat block keeps the raw value.
⚠️ The size class identity is checked with a tolerance, not with strict equality. The source publishes millions of lei rounded to the unit, and the sum of four rounded values can deviate from the rounded total. Measured on turnover: total = the sum of the four classes comes out exact in 2,501 of 3,354 cells, but all 3,354 sit under 2 million lei of difference, and 2,880 under a thousandth of a percent. The tolerance is derived from the published precision, not chosen; on staff, which is in whole persons, the check stays exact.
⚠️ The NACE dimension is not a clean partition. It mixes three divisions split out of agriculture (01, 02, 03), eleven sections, a pair merged by the source (R+S), two aggregates written out in words and the total. Codes from different levels are not additive; nivel separates them, and the complete list is at /financiar/v1/unitati-locale/activitati.
Query parameters
rev2 (default, 2008-2024) or rev1 (1998-2008).
rev1rev2
cifra_afaceri (default), investitii_brute, investitii_nete, personal. investitii is an alias for investitii_brute.
personalcifra_afaceriinvestitii_bruteinvestitii_neteinvestitii
total, agregat, sectiune, sectiuni_comasate, diviziune.
totalagregatsectiunesectiuni_comasatediviziune
TOTAL.
max 80 car.
tara (default), macroregiune, regiune, judet.
taramacroregiuneregiunejudet
C), division (62), group, class (6201) — from any revision. It is brought to what versiune publishes: the section, divisions 01–03 (Rev.2, 2008–2012), the R+S pair, the imobiliare_si_servicii_firme aggregate (L+M+N) or, in Rev.1, the divisions the source names (01 agriculture, 02 forestry, 60–63 transport, 64 post). Default industrie_comert_servicii on Rev.2 and total on Rev.1; what was used is in meta.caen.
e.g. 7022
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
total, industrie, industrie_comert_servicii, imobiliare_si_servicii_firme, R+S, alte_activitati, transport_depozitare. Not sent together with caen.
e.g. imobiliare_si_servicii_firmee.g. industrie_comert_serviciie.g. R+S
total (default), 0-9, 10-49, 50-249, 250+.
total0-910-4950-249250+
How it behaves
- Turnover, gross investment in tangible goods, net investment and the staff of active local units — by activity, size class and county, annually from 1998 to 2024. 161,938 values from TEMPO matrices
INT102C/D,INT104C/DandINT105B/C/D/E. - Two classifications, requested separately through
versiune:rev2(the default) covers 2008-2024,rev1covers 1998-2008. They overlap in 2008 and the join actually validates: staff nationwide comes out at 4,654,718 under both, with zero deviation; turnover at 958,923 against 959,414 (0.05%). Thesuprapunereblock carries the comparison on every request. - ⚠️
investitii_neteis a new measure that was missing from the module entirely. The route held a single investment measure, the gross one. The difference is large: in 2020, nationwide, 146,604 million lei gross against 95,646 net. The old nameinvestitiiremains accepted as an alias forinvestitii_brute. - It brings what
/financiar/v1/intreprinderi/indicatorilacks: the county. That route holds fourteen indicators on detailed CAEN, but only nationally; this one holds four measures on coarse CAEN, but down to county level. - What the data shows: in 2024 the turnover of local units is 2,694,851 million lei, of which Bucharest alone accounts for 790,197 — 29% of the economy. Next come Ilfov (190,141), Cluj (128,414), Timiş (125,482) and Prahova (116,619).
- All four measures are totals and therefore add up — unlike the earnings in
/financiar/v1/salariati, which are averages. - ⚠️ Territorial coverage widens in 2002. The years 1998-2001 hold only 13 territories — four macroregions, eight regions and the total, with no counties at all; from 2002 there are 55. The sections grow too: 17 in 1998-2001, 18 in 2002, 19 from 2003.
- ⚠️ The activity default is reversed between the classifications. Under Rev.2,
totalstops in 2012 and theindustrie_comert_serviciiaggregate covers the whole series; under Rev.1 it is the other way round — the aggregate, like sectionI, appears only from 2003, whiletotalis the single code published across all eleven years. The route picks the default that fits the version, so a request withoutcaennever comes back empty. - ⚠️ The 2005 denomination, under Rev.1 — but here the source declares it correctly, in the dimension name itself: “Billion lei” up to 2004, “Million lei RON” from 2005. Earlier years are brought to million lei RON with a factor of 0.1, and the
publicatblock keeps the raw value. Unlike/financiar/v1/intreprinderi/rezultate, where the source label lagged behind. - ⚠️ The size-class identity is checked with a tolerance, not with strict equality. The source publishes millions of lei rounded to the unit, and the sum of four rounded values can drift from the rounded total. Measured on turnover:
total= the sum of the four classes comes out exact in 2,501 of 3,354 cells, but all 3,354 stay under 2 million lei apart, and 2,880 under a thousandth of a percent. The tolerance is derived from the published precision, not chosen. Onpersonal, which is in whole persons, the check stays exact — zero tolerance. - ⚠️ The nomenclature changes in 2013. The
totalcode and the three divisions split out of agriculture (01,02,03) are published only between 2008 and 2012; from 2013 the source drops them. The aggregate covering the whole series isindustrie_comert_servicii, and it is the route's default — otherwise a request withoutcaenwould come back empty for recent years. A request fortotalafter 2012 getsinterval_golwith the explanation. - ⚠️ The CAEN dimension is not a clean partition. It mixes three agricultural divisions, eleven sections, a source-merged pair (
R+S) and two aggregates whose names run past two hundred characters, to which we gave short codes. Codes of different levels do not add together;nivelkeeps them apart. - Activity is requested the same way across the platform.
caentakes 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.caenstates the requested code, the one used and whether it was climbed or converted.grupareis for the source aggregates that are not CAEN codes.
What it is for
- How much a county weighs economically, in turnover and in investment.
- The size-class structure of a sector within a given county.
- Gross investment as a growth signal, alongside building permits.
Response structure
total, agregat, sectiune, sectiuni_comasate or diviziune.
data is null and this says why. The projection over the INS data is empty. The name does not appear; the full list comes back. The window holds no values; if a code was dropped in 2013, the message says so. The window lies entirely outside the series.
fara_date is prose and may be rephrased, this is not.
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.
caen_versiune, otherwise the first it exists in.
02-03).
agricultura = 01) or the key is an aggregate (62-63).
sectiune, subsectiune, diviziune, grupa, clasa or agregat.
true when the code was translated from one revision to another through the official INS correspondence.
true when the series does not publish the requested code and a higher level was used.
Response examples
{
"data": {
"masura": "cifra_afaceri",
"denumire": "Cifra de afaceri din unităţile locale active",
"unitate": "milioane lei",
"versiune": "rev2",
"de_la": 2008,
"pana_la": 2024,
"filtre": {
"versiune": "rev2",
"caen": "industrie_comert_servicii",
"marime": [
"total"
],
"nivel_teritoriu": "tara"
},
"ani": [
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024
],
"serii": [
{
"teritoriu": "TOTAL",
"nivel_teritoriu": "tara",
"versiune": "rev2",
"caen": "industrie_comert_servicii",
"nivel": "agregat",
"denumire": "Total industrie, constructii, comert si alte servicii",
"marime": "total",
"unitate": "milioane lei",
"ani_publicati": 17,
"valori": {
"2008": "959414",
"2009": "850834",
"2010": "903238",
"2011": "1007151",
"2012": "1062122",
"2013": "1054993",
"2014": "1105671",
"2015": "1177483",
"2016": "1232567",
"2017": "1352340",
"2018": "1522235",
"2019": "1667867",
"2020": "1642883",
"2021": "1983965",
"2022": "2487852",
"2023": "2583596",
"2024": "2694851"
}
}
],
"identitati": {
"identitate": "clasa `total` = suma celor patru clase de mărime",
"toleranta": "2",
"nota_toleranta": "Sursa publică milioane de lei rotunjite la unitate, iar suma a patru valori rotunjite poate devia de la totalul rotunjit. Toleranţa e derivată din precizia publicată — 2 milioane pe anii publicaţi direct în RON şi 0.25 pe anii Rev.1 convertiţi din miliarde ROL, unde pasul scade la 0,1. Măsurat pe cifra de afaceri Rev.2: exact în 2.501 din 3.354 de celule, dar toate 3.354 sub toleranţă, iar 2.880 sub o miime de procent.",
"verificari": 0,
"inchise": 0
},
"suprapunere": {
"an": 2008,
"caen": "industrie_comert_servicii",
"marime": "total",
"rev1": "958923",
"rev2": "959414",
"abatere": "491",
"nota": "Anul 2008 e publicat în amândouă clasificările, pe total ţară. Raportat, nu cerut ca egalitate: cele două sunt reconstrucţii diferite ale aceluiaşi an, iar nomenclatoarele lor nu coincid."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — personalul, cifra de afaceri şi investiţiile unităţilor locale active (TEMPO, matricile INT102C/D, INT104C/D şi INT105B/C/D/E).",
"versiune": "rev2",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 1,
"nota_versiune": "Cererea acoperă o singură clasificare: `rev2` (implicit) merge 2008-2024, `rev1` merge 1998-2008. Se suprapun pe 2008 — vezi `data.suprapunere` — dar nomenclatoarele lor nu coincid cod cu cod.",
"nota_judet": "E singura serie de indicatori economici ai firmelor care coboară la judeţ. Varianta naţională, cu paisprezece indicatori pe CAEN detaliat, e la /financiar/v1/intreprinderi/indicatori.",
"nota_investitii": "Brute şi nete sunt mărimi diferite, nu variante: în 2020, pe total ţară, 146.604 milioane lei brute faţă de 95.646 nete. `investitii` rămâne acceptat ca alias pentru `investitii_brute`.",
"nota_toleranta": "Sursa publică milioane de lei rotunjite la unitate, iar suma a patru valori rotunjite poate devia de la totalul rotunjit. Toleranţa e derivată din precizia publicată — 2 milioane pe anii publicaţi direct în RON şi 0.25 pe anii Rev.1 convertiţi din miliarde ROL, unde pasul scade la 0,1. Măsurat pe cifra de afaceri Rev.2: exact în 2.501 din 3.354 de celule, dar toate 3.354 sub toleranţă, iar 2.880 sub o miime de procent.",
"nota_caen": "Dimensiunea CAEN amestecă diviziuni, secţiuni, o pereche comasată şi agregate. Codurile de niveluri diferite nu se adună între ele.",
"nota_activitati": "Lista completă a codurilor, cu nivelul fiecăruia: /financiar/v1/unitati-locale/activitati."
}
}
{
"data": {
"masura": "cifra_afaceri",
"denumire": "Cifra de afaceri din unităţile locale active",
"unitate": "milioane lei",
"versiune": "rev2",
"de_la": 2020,
"pana_la": 2024,
"filtre": {
"versiune": "rev2",
"caen": "imobiliare_si_servicii_firme",
"marime": [
"total"
],
"nivel_teritoriu": "tara"
},
"ani": [
2020,
2021,
2022,
2023,
2024
],
"serii": [
{
"teritoriu": "TOTAL",
"nivel_teritoriu": "tara",
"versiune": "rev2",
"caen": "imobiliare_si_servicii_firme",
"nivel": "agregat",
"denumire": "TRANZACTII IMOBILIARE, INCHIRIERI SI ACTIVITATI DE SERVICII PRESTATE IN PRINCIPAL INTREPRINDERILOR (activitati profesionale, stiintifice si tehnice, activitati de servicii administrative si activitati de servicii suport )",
"marime": "total",
"unitate": "milioane lei",
"ani_publicati": 5,
"valori": {
"2020": "104984",
"2021": "119505",
"2022": "143943",
"2023": "169321",
"2024": "188902"
}
}
],
"identitati": {
"identitate": "clasa `total` = suma celor patru clase de mărime",
"toleranta": "2",
"nota_toleranta": "Sursa publică milioane de lei rotunjite la unitate, iar suma a patru valori rotunjite poate devia de la totalul rotunjit. Toleranţa e derivată din precizia publicată — 2 milioane pe anii publicaţi direct în RON şi 0.25 pe anii Rev.1 convertiţi din miliarde ROL, unde pasul scade la 0,1. Măsurat pe cifra de afaceri Rev.2: exact în 2.501 din 3.354 de celule, dar toate 3.354 sub toleranţă, iar 2.880 sub o miime de procent.",
"verificari": 0,
"inchise": 0
},
"suprapunere": null
},
"meta": {
"sursa": "Institutul Naţional de Statistică — personalul, cifra de afaceri şi investiţiile unităţilor locale active (TEMPO, matricile INT102C/D, INT104C/D şi INT105B/C/D/E).",
"versiune": "rev2",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 1,
"nota_versiune": "Cererea acoperă o singură clasificare: `rev2` (implicit) merge 2008-2024, `rev1` merge 1998-2008. Se suprapun pe 2008 — vezi `data.suprapunere` — dar nomenclatoarele lor nu coincid cod cu cod.",
"nota_judet": "E singura serie de indicatori economici ai firmelor care coboară la judeţ. Varianta naţională, cu paisprezece indicatori pe CAEN detaliat, e la /financiar/v1/intreprinderi/indicatori.",
"nota_investitii": "Brute şi nete sunt mărimi diferite, nu variante: în 2020, pe total ţară, 146.604 milioane lei brute faţă de 95.646 nete. `investitii` rămâne acceptat ca alias pentru `investitii_brute`.",
"nota_toleranta": "Sursa publică milioane de lei rotunjite la unitate, iar suma a patru valori rotunjite poate devia de la totalul rotunjit. Toleranţa e derivată din precizia publicată — 2 milioane pe anii publicaţi direct în RON şi 0.25 pe anii Rev.1 convertiţi din miliarde ROL, unde pasul scade la 0,1. Măsurat pe cifra de afaceri Rev.2: exact în 2.501 din 3.354 de celule, dar toate 3.354 sub toleranţă, iar 2.880 sub o miime de procent.",
"nota_caen": "Dimensiunea CAEN amestecă diviziuni, secţiuni, o pereche comasată şi agregate. Codurile de niveluri diferite nu se adună între ele.",
"nota_activitati": "Lista completă a codurilor, cu nivelul fiecăruia: /financiar/v1/unitati-locale/activitati.",
"caen": {
"cerut": "7022",
"versiune_cerut": "Rev.2",
"folosit": "imobiliare_si_servicii_firme",
"cod": "M",
"nivel": "agregat",
"denumire": "ACTIVITĂŢI PROFESIONALE, ŞTIINŢIFICE ŞI TEHNICE",
"versiune_serie": "Rev.2",
"conversie": false,
"urcat": true
}
}
}
{
"data": {
"masura": "cifra_afaceri",
"denumire": "Cifra de afaceri din unităţile locale active",
"unitate": "milioane lei",
"versiune": "rev2",
"de_la": 2024,
"pana_la": 2024,
"filtre": {
"versiune": "rev2",
"caen": "industrie_comert_servicii",
"marime": [
"total"
],
"nivel_teritoriu": "tara"
},
"ani": [
2024
],
"serii": [
{
"teritoriu": "TOTAL",
"nivel_teritoriu": "tara",
"versiune": "rev2",
"caen": "industrie_comert_servicii",
"nivel": "agregat",
"denumire": "Total industrie, constructii, comert si alte servicii",
"marime": "total",
"unitate": "milioane lei",
"ani_publicati": 1,
"valori": {
"2024": "2694851"
}
}
],
"identitati": {
"identitate": "clasa `total` = suma celor patru clase de mărime",
"toleranta": "2",
"nota_toleranta": "Sursa publică milioane de lei rotunjite la unitate, iar suma a patru valori rotunjite poate devia de la totalul rotunjit. Toleranţa e derivată din precizia publicată — 2 milioane pe anii publicaţi direct în RON şi 0.25 pe anii Rev.1 convertiţi din miliarde ROL, unde pasul scade la 0,1. Măsurat pe cifra de afaceri Rev.2: exact în 2.501 din 3.354 de celule, dar toate 3.354 sub toleranţă, iar 2.880 sub o miime de procent.",
"verificari": 0,
"inchise": 0
},
"suprapunere": {
"an": 2008,
"caen": "industrie_comert_servicii",
"marime": "total",
"rev1": "958923",
"rev2": "959414",
"abatere": "491",
"nota": "Anul 2008 e publicat în amândouă clasificările, pe total ţară. Raportat, nu cerut ca egalitate: cele două sunt reconstrucţii diferite ale aceluiaşi an, iar nomenclatoarele lor nu coincid."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — personalul, cifra de afaceri şi investiţiile unităţilor locale active (TEMPO, matricile INT102C/D, INT104C/D şi INT105B/C/D/E).",
"versiune": "rev2",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 1,
"nota_versiune": "Cererea acoperă o singură clasificare: `rev2` (implicit) merge 2008-2024, `rev1` merge 1998-2008. Se suprapun pe 2008 — vezi `data.suprapunere` — dar nomenclatoarele lor nu coincid cod cu cod.",
"nota_judet": "E singura serie de indicatori economici ai firmelor care coboară la judeţ. Varianta naţională, cu paisprezece indicatori pe CAEN detaliat, e la /financiar/v1/intreprinderi/indicatori.",
"nota_investitii": "Brute şi nete sunt mărimi diferite, nu variante: în 2020, pe total ţară, 146.604 milioane lei brute faţă de 95.646 nete. `investitii` rămâne acceptat ca alias pentru `investitii_brute`.",
"nota_toleranta": "Sursa publică milioane de lei rotunjite la unitate, iar suma a patru valori rotunjite poate devia de la totalul rotunjit. Toleranţa e derivată din precizia publicată — 2 milioane pe anii publicaţi direct în RON şi 0.25 pe anii Rev.1 convertiţi din miliarde ROL, unde pasul scade la 0,1. Măsurat pe cifra de afaceri Rev.2: exact în 2.501 din 3.354 de celule, dar toate 3.354 sub toleranţă, iar 2.880 sub o miime de procent.",
"nota_caen": "Dimensiunea CAEN amestecă diviziuni, secţiuni, o pereche comasată şi agregate. Codurile de niveluri diferite nu se adună între ele.",
"nota_activitati": "Lista completă a codurilor, cu nivelul fiecăruia: /financiar/v1/unitati-locale/activitati."
}
}
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. |
| 404 | caen_nepublicat | Neither 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. |
| 422 | caen_inexistent | The code in caen exists in no CAEN revision; it is a bad FILTER value, hence 422, not 404. prea_multe_serii — beyond 1,500. interval_prea_lung — beyond 25 years on a narrow cut and beyond 8 when the response spans several. Plus a measure, level, class or code outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. masura_in_alta_versiune — the measure does not exist there. |
| 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": "caen_inexistent",
"mesaj": "The code in caen exists in no CAEN revision; it is a bad FILTER value, hence 422, not 404. prea_multe_serii — beyond 1,500. interval_prea_lung — beyond 25 years on a narrow cut and beyond 8 when the response spans several. Plus a measure, level, class or code outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. masura_in_alta_versiune — the measure does not exist there.",
"detalii": {
"versiune": [
"The value sent does not satisfy the parameter rule."
]
}
}
}