Enterprise economic indicators
Fourteen economic and financial indicators — turnover, gross value added, gross result, investment, direct exports, staff — by NACE activity and by size class, annually since 2004. This is the set a company can compare itself against its sector with.
Two classifications, requested separately through versiune: rev2 (the default) covers 2008–2024, rev1 covers 2004–2007. ⚠️ They do not overlap and are not spliced — Rev. 1 stops exactly where Rev. 2 begins, so no equality can be checked between them.
NACE at four levels in Rev. 2: section (16), division (77), group (237), class (531). In Rev. 1 there are five — the subsection is added (26 two-letter codes, such as DD) — and there are 12 sections, one of which, alte, is an aggregate remainder with no NACE letter.
⚠️ Monetary values from 2004 are published in thousand ROL, as the source's own dimension name says („Thousand lei, RON lei (from 2005)"). They are brought to RON with the factor 0.1; the publicat block keeps the raw value and the source's unit.
✅ The size classes sum exactly: the total is the sum of the five, verified across every comparable group, without a single exception.
⚠️ The NACE hierarchy is not a partition and is not checked as one. The source suppresses cells with too few enterprises, so that no individual company can be identified. Measured on 2024, the sum of the children falls below the parent in 18 of 208 sections, 77 of 956 divisions and 227 of 2,767 groups — almost all in the same direction, which is the signature of suppression, not of an error. For the same reason, a code can be missing entirely.
Query parameters
rev2 (default, 2008-2024) or rev1 (2004-2007). One request covers one classification.
rev1rev2
sectiune, diviziune, grupa, clasa — plus subsectiune, only in rev1. Without caen, the whole level; with caen, the rows at that level under the code.
sectiunesubsectiunediviziunegrupaclasa
C), division (62), group, class (6201) — from any revision. It is brought to the finest level published in versiune; what was used is in meta.caen. With nivel below the code's level, it returns the rows at nivel under it (caen=C&nivel=diviziune); a nivel above the code is nivel_peste_caen.
e.g. C
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
alte (the Rev.1 residual section; with nivel, its rows at that level). Not sent together with caen.
e.g. alte
total (default), 0-9, 10-19, 20-49, 50-249, 250+.
total0-910-1920-4950-249250+
How it behaves
- Fourteen economic and financial indicators — turnover, gross value added at factor cost, output, gross operating surplus, gross result, personnel and wage costs, net and gross investment, direct exports, share capital, the number of enterprises, employees and persons employed — by CAEN activity and size class, annually from 2004, across two classifications.
- Two classifications, requested separately through
versiune.rev2(the default) covers 2008-2024 from matrixINT109C;rev1covers 2004-2007 fromINT109A, 199,625 values. ⚠️ They neither overlap nor join: Rev.1 stops exactly where Rev.2 begins, so no equality can be verified between them, and their nomenclatures differ. One request covers one version. - This is the dataset a company measures itself against. Combined with its own CAEN code and accounts, it gives relative position: in 2024 the 30,329 firms in division 62 (IT services) had 70.58 billion lei of turnover, but the 100 firms with over 250 employees accounted for 29.74 billion, i.e. 42% — and turnover per firm climbs from 0.58 million in the 0-9 class to 297 million in the largest.
- Rev.1 has five levels, not four: it adds the subsection — 26 two-letter codes such as
DD— which Rev.2 abolished. It has 12 sections rather than 16, and the twelfth,alte, is an aggregated remainder with no CAEN letter, flagged witheste_rest. - ⚠️ The 2004 monetary values are published in thousands of ROL — the source says so in the dimension name itself, “Thousand lei, lei RON (from 2005)”. They are brought here to lei RON with a factor of 0.1, and the
publicatblock keeps the raw value and the source unit. Verified on manufacturing turnover: 137.9 billion lei RON in 2004 (after conversion) against 149.5 in 2005 — a continuous series. - CAEN on four levels in Rev.2: 16 sections, 77 divisions, 237 groups, 531 classes. The requested code is brought to the finest published level. Without a code,
nivelreturns a whole level; with a code,nivelreturns the rows under it —caen=C&nivel=diviziuneare the manufacturing divisions. - ✅ Size classes add up exactly. The total is the sum of the five — 0-9, 10-19, 20-49, 50-249 and 250+ employees — verified across 5,646 of 5,646 comparable groups in 2024 under Rev.2 and 23,539 of 23,539 under Rev.1, without exception. The identity runs on every request, but only where the source publishes all five classes — and it must: gross operating surplus and the gross result offset one another between classes, so a partial sum can exceed the total in magnitude (2005, class 2871: the total is −896 while the two published size classes (0-9 and 250+) sum to −1,606,120).
- ⚠️ The CAEN hierarchy is NOT a partition, and the route does not check it as one. The source suppresses cells with too few enterprises, so that no individual firm can be identified. Measured for 2024, with the direction of the gap verified: the children's sum falls below the parent in 18 of 208 sections, 77 of 956 divisions and 227 of 2,767 groups — nearly all in the same direction, which is the signature of suppression rather than of an error. The largest gap is 45.7 billion lei. For the same reason a code may be missing entirely, and an indicator may be missing for a code that otherwise exists.
- ⚠️ The source writes the same word two ways. Section rows carry the division marked
TOTALin capitals, while the finer levels useTotal. A case-sensitive comparison misses the entire section level — 21,087 values, that is all sixteen sections. The projection handles both. - Eleven indicators are in lei, one in number of enterprises and two in number of persons;
serii[].unitatesays which, so they are never added together wrongly. - 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
- Positioning a company against its sector average, on turnover or margin.
- The structure of a sector by size class: how much of the market the large firms hold.
- The path of investment or direct exports within a given activity.
Response structure
sectiune, diviziune, grupa or clasa — plus subsectiune under Rev.1. The levels do not add together.
lei, numar or persoane.
alte section, which is an aggregated remainder rather than an activity.
data is null and this says why. The projection over the INS data is empty. As on the other 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).
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.
nivel under the requested code, when caen comes with a finer nivel (caen=C&nivel=diviziune).
Response examples
{
"data": {
"de_la": 2020,
"pana_la": 2023,
"filtre": {
"versiune": "rev2",
"indicator": [
"cifra_afaceri"
],
"nivel": "sectiune"
},
"ani": [
2020,
2021,
2022,
2023
],
"serii": [
{
"caen": "B",
"versiune": "rev2",
"nivel": "sectiune",
"sectiune": "B",
"denumire": "B INDUSTRIA EXTRACTIVA",
"indicator": "cifra_afaceri",
"indicator_eticheta": "cifra de afaceri",
"marime": "total",
"unitate": "lei",
"ani_publicati": 4,
"valori": {
"2020": "25397242641",
"2021": "36875876517",
"2022": "26919841531",
"2023": "20182254386"
}
}
],
"identitati": {
"identitate": "clasa de mărime `total` = suma celor cinci clase",
"nota_clase": "Rulată doar acolo unde sursa publică toate cinci clasele. Verificat pe toată proiecţia: 5.646 din 5.646 de grupuri în 2024 pe Rev.2 şi 23.539 din 23.539 pe Rev.1. Unde o clasă e suprimată, verificarea se sare — şi trebuie sărită: excedentul brut şi rezultatul brut se compensează între clase, aşa că o sumă parţială poate depăşi în modul totalul.",
"nota_ierarhie": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"verificari": 64,
"inchise": 64,
"abatere_maxima": "0"
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — principalii indicatori economici şi financiari ai întreprinderilor (TEMPO, matricea INT109C).",
"versiune": "rev2",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 16,
"coduri_pe_nivel": {
"clasa": 531,
"diviziune": 77,
"grupa": 237,
"sectiune": 16
},
"nota_versiune": "Cererea acoperă o singură clasificare. `rev2` (implicit) merge 2008-2024, `rev1` merge 2004-2007; nu se suprapun şi nu se lipesc, iar nomenclatoarele lor sunt diferite.",
"nota_nivel": "Nivelul CAEN se deduce din forma codului: o literă e secţiune, iar 2, 3 sau 4 cifre sunt diviziunea, grupa şi clasa. În Rev.1, două litere sunt o subsecţiune, iar `alte` e secţiunea-rest. Codul poate fi din orice revizie: se aduce la cel mai fin nivel publicat (`meta.caen`). Cu `nivel` alături, `caen` devine sfera: `caen=C&nivel=diviziune` sunt diviziunile secţiunii C; fără `caen`, `nivel` dă toate codurile nivelului.",
"nota_marime": "Fără `marime`, se întoarce doar clasa `total`. Verificat: totalul e suma exactă a celor cinci clase, 64 din 64 verificări în acest răspuns.",
"nota_suprimare": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"nota_unitati": "Unsprezece indicatori sunt în lei, unul în număr de întreprinderi şi doi în număr de persoane. `serii[].unitate` o spune pentru fiecare."
}
}
{
"data": {
"de_la": 2023,
"pana_la": 2024,
"filtre": {
"versiune": "rev2",
"indicator": [
"cifra_afaceri"
],
"nivel": "diviziune",
"sfera": [
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29",
"30",
"31",
"32",
"33"
]
},
"ani": [
2023,
2024
],
"serii": [
{
"caen": "10",
"versiune": "rev2",
"nivel": "diviziune",
"sectiune": "C",
"denumire": "10 Industria alimentara",
"indicator": "cifra_afaceri",
"indicator_eticheta": "cifra de afaceri",
"marime": "total",
"unitate": "lei",
"ani_publicati": 2,
"valori": {
"2023": "76162300485",
"2024": "81339778948"
}
}
],
"identitati": {
"identitate": "clasa de mărime `total` = suma celor cinci clase",
"nota_clase": "Rulată doar acolo unde sursa publică toate cinci clasele. Verificat pe toată proiecţia: 5.646 din 5.646 de grupuri în 2024 pe Rev.2 şi 23.539 din 23.539 pe Rev.1. Unde o clasă e suprimată, verificarea se sare — şi trebuie sărită: excedentul brut şi rezultatul brut se compensează între clase, aşa că o sumă parţială poate depăşi în modul totalul.",
"nota_ierarhie": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"verificari": 48,
"inchise": 48,
"abatere_maxima": "0"
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — principalii indicatori economici şi financiari ai întreprinderilor (TEMPO, matricea INT109C).",
"versiune": "rev2",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 24,
"coduri_pe_nivel": {
"clasa": 531,
"diviziune": 77,
"grupa": 237,
"sectiune": 16
},
"nota_versiune": "Cererea acoperă o singură clasificare. `rev2` (implicit) merge 2008-2024, `rev1` merge 2004-2007; nu se suprapun şi nu se lipesc, iar nomenclatoarele lor sunt diferite.",
"nota_nivel": "Nivelul CAEN se deduce din forma codului: o literă e secţiune, iar 2, 3 sau 4 cifre sunt diviziunea, grupa şi clasa. În Rev.1, două litere sunt o subsecţiune, iar `alte` e secţiunea-rest. Codul poate fi din orice revizie: se aduce la cel mai fin nivel publicat (`meta.caen`). Cu `nivel` alături, `caen` devine sfera: `caen=C&nivel=diviziune` sunt diviziunile secţiunii C; fără `caen`, `nivel` dă toate codurile nivelului.",
"nota_marime": "Fără `marime`, se întoarce doar clasa `total`. Verificat: totalul e suma exactă a celor cinci clase, 48 din 48 verificări în acest răspuns.",
"nota_suprimare": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"nota_unitati": "Unsprezece indicatori sunt în lei, unul în număr de întreprinderi şi doi în număr de persoane. `serii[].unitate` o spune pentru fiecare.",
"caen": {
"cerut": "C",
"versiune_cerut": "Rev.2",
"folosit": "C",
"nivel": "sectiune",
"denumire": "INDUSTRIA PRELUCRĂTOARE",
"versiune_serie": "Rev.2",
"conversie": false,
"urcat": false,
"sfera": [
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29",
"30",
"31",
"32",
"33"
]
}
}
}
{
"data": {
"de_la": 2024,
"pana_la": 2024,
"filtre": {
"versiune": "rev2",
"indicator": [
"cifra_afaceri"
],
"marime": [
"total"
]
},
"ani": [
2024
],
"serii": [
{
"caen": "05",
"versiune": "rev2",
"nivel": "diviziune",
"sectiune": "B",
"denumire": "05 Extractia carbunelui superior si inferior",
"indicator": "cifra_afaceri",
"indicator_eticheta": "cifra de afaceri",
"marime": "total",
"unitate": "lei",
"ani_publicati": 1,
"valori": {
"2024": "110870468"
}
}
],
"identitati": {
"identitate": "clasa de mărime `total` = suma celor cinci clase",
"nota_clase": "Rulată doar acolo unde sursa publică toate cinci clasele. Verificat pe toată proiecţia: 5.646 din 5.646 de grupuri în 2024 pe Rev.2 şi 23.539 din 23.539 pe Rev.1. Unde o clasă e suprimată, verificarea se sare — şi trebuie sărită: excedentul brut şi rezultatul brut se compensează între clase, aşa că o sumă parţială poate depăşi în modul totalul.",
"nota_ierarhie": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"verificari": 858,
"inchise": 858,
"abatere_maxima": "0"
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — principalii indicatori economici şi financiari ai întreprinderilor (TEMPO, matricea INT109C).",
"versiune": "rev2",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 858,
"coduri_pe_nivel": {
"clasa": 531,
"diviziune": 77,
"grupa": 237,
"sectiune": 16
},
"nota_versiune": "Cererea acoperă o singură clasificare. `rev2` (implicit) merge 2008-2024, `rev1` merge 2004-2007; nu se suprapun şi nu se lipesc, iar nomenclatoarele lor sunt diferite.",
"nota_nivel": "Nivelul CAEN se deduce din forma codului: o literă e secţiune, iar 2, 3 sau 4 cifre sunt diviziunea, grupa şi clasa. În Rev.1, două litere sunt o subsecţiune, iar `alte` e secţiunea-rest. Codul poate fi din orice revizie: se aduce la cel mai fin nivel publicat (`meta.caen`). Cu `nivel` alături, `caen` devine sfera: `caen=C&nivel=diviziune` sunt diviziunile secţiunii C; fără `caen`, `nivel` dă toate codurile nivelului.",
"nota_marime": "Fără `marime`, se întoarce doar clasa `total`. Verificat: totalul e suma exactă a celor cinci clase, 858 din 858 verificări în acest răspuns.",
"nota_suprimare": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"nota_unitati": "Unsprezece indicatori sunt în lei, unul în număr de întreprinderi şi doi în număr de persoane. `serii[].unitate` o spune pentru fiecare."
}
}
{
"data": {
"de_la": 2004,
"pana_la": 2007,
"filtre": {
"versiune": "rev1",
"caen": "alte",
"nivel": "sectiune"
},
"ani": [
2004,
2005,
2006,
2007
],
"serii": [
{
"caen": "alte",
"versiune": "rev1",
"nivel": "sectiune",
"sectiune": "alte",
"este_rest": true,
"denumire": "Alte activitati ale economiei nationale",
"indicator": "capital_social",
"indicator_eticheta": "capital social la 31 decembrie",
"marime": "total",
"unitate": "lei",
"ani_publicati": 4,
"valori": {
"2004": "464860101.7",
"2005": "377770238",
"2006": "789795297",
"2007": "1157141638"
},
"publicat": {
"2004": {
"valoare": "4648601017",
"unitate": "Mii lei",
"factor": "0.1"
}
}
}
],
"identitati": {
"identitate": "clasa de mărime `total` = suma celor cinci clase",
"nota_clase": "Rulată doar acolo unde sursa publică toate cinci clasele. Verificat pe toată proiecţia: 5.646 din 5.646 de grupuri în 2024 pe Rev.2 şi 23.539 din 23.539 pe Rev.1. Unde o clasă e suprimată, verificarea se sare — şi trebuie sărită: excedentul brut şi rezultatul brut se compensează între clase, aşa că o sumă parţială poate depăşi în modul totalul.",
"nota_ierarhie": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"verificari": 56,
"inchise": 56,
"abatere_maxima": "0"
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — principalii indicatori economici şi financiari ai întreprinderilor (TEMPO, matricea INT109A).",
"versiune": "rev1",
"acoperire": {
"de_la": 2004,
"pana_la": 2007
},
"serii_returnate": 14,
"coduri_pe_nivel": {
"clasa": 467,
"diviziune": 51,
"grupa": 200,
"sectiune": 12,
"subsectiune": 26
},
"nota_versiune": "Cererea acoperă o singură clasificare. `rev2` (implicit) merge 2008-2024, `rev1` merge 2004-2007; nu se suprapun şi nu se lipesc, iar nomenclatoarele lor sunt diferite.",
"nota_denominare": "⚠️ Anul 2004 e publicat de sursă în mii lei ROL; conversia la lei RON foloseşte factorul 0,1, iar valoarea brută rămâne în `publicat` pe fiecare serie.",
"nota_nivel": "Nivelul CAEN se deduce din forma codului: o literă e secţiune, iar 2, 3 sau 4 cifre sunt diviziunea, grupa şi clasa. În Rev.1, două litere sunt o subsecţiune, iar `alte` e secţiunea-rest. Codul poate fi din orice revizie: se aduce la cel mai fin nivel publicat (`meta.caen`). Cu `nivel` alături, `caen` devine sfera: `caen=C&nivel=diviziune` sunt diviziunile secţiunii C; fără `caen`, `nivel` dă toate codurile nivelului.",
"nota_marime": "Fără `marime`, se întoarce doar clasa `total`. Verificat: totalul e suma exactă a celor cinci clase, 56 din 56 verificări în acest răspuns.",
"nota_suprimare": "Ierarhia CAEN NU se verifică: sursa suprimă celulele cu prea puţine întreprinderi, ca să nu poată fi identificată o firmă. Măsurat pe 2024, suma copiilor cade sub părinte în 18 din 208 secţiuni, 77 din 956 diviziuni şi 227 din 2.767 grupe — aproape toate în aceeaşi direcţie, ceea ce e semnătura suprimării, nu a unei erori.",
"nota_unitati": "Unsprezece indicatori sunt în lei, unul în număr de întreprinderi şi doi în număr de persoane. `serii[].unitate` o spune pentru fiecare."
}
}
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. caen_invalid — the code is neither a letter nor 2-4 digits. Plus an indicator, size or level outside the list, a year out of range, or interval_prea_lung beyond 30 years. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. nivel_peste_caen — nivel is above the caen code. |
| 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. caen_invalid — the code is neither a letter nor 2-4 digits. Plus an indicator, size or level outside the list, a year out of range, or interval_prea_lung beyond 30 years. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. nivel_peste_caen — nivel is above the caen code.",
"detalii": {
"versiune": [
"The value sent does not satisfy the parameter rule."
]
}
}
}