Earnings structure by occupation
What each ISCO-08 major occupational group earns — from managers to elementary occupations — by NACE activity, sex and form of ownership, annually since 2013. 162,102 values.
It is the only place in the module where earnings are seen by occupation, not just by activity. It comes from the structure of earnings survey and covers only full-time employees paid for the whole month — so it is not the general average from /financiar/v1/salariati but a „clean" one, without partial months.
Three indicators, two of which are averages. numar is people and is additive; salariu_baza and venit_brut are monthly averages in lei and are not additive — not across occupations, not across sexes, not across forms of ownership.
✅ Verified on the number of employees, with zero deviation: total = male + female (17,389 of 17,389), total = public + private (13,222 of 13,222) and total = the sum of the nine occupational groups (2,034 of 2,034). On earnings, the same identity comes out 0 of 6,141, with the sum of the groups 7.77 times the average — which is why the route does not run it there.
The difference between the two money indicators is precisely the value of the supplements. Gross earnings realised include bonuses, allowances and overtime; the basic wage does not. The ratio between them is computed on every series, in raport_venit_baza. Overall, in 2024: base 6,553 lei, earnings 8,374 lei — supplements add 28%. The average across all cells is 1.307.
⚠️ In 56 of the 54,034 cells, earnings come out BELOW the basic wage, the lowest at 0.674. They are small cells — 68 employees on average — scattered over six years, peaking in 2013 (27 cases) and 2020 (13). Those years are flagged in raport_venit_baza.ani_sub_baza.
Query parameters
venit_brut (default), salariu_baza, numar.
numarsalariu_bazavenit_brut
C), division (62), group, class (6201) — from any revision. It is brought to the published section, division or range (CAEN Rev.2); what was used is in meta.caen.
e.g. 62
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 (B–E) or the ranges (02-03, 62-63). Not sent together with caen.
e.g. 02-03e.g. 38-39e.g. 59-60
total (default) or major ISCO-08 groups 1 to 9, comma-separated.
total123456789
total (default), masculin, feminin.
totalmasculinfeminin
total (default), publica, privata.
totalpublicaprivata
How it behaves
- What each major ISCO-08 occupational group earns — from managers to elementary occupations — by CAEN activity, sex and form of ownership, annually from 2013 to 2024. 162,102 values from TEMPO matrix
FOM121A. - This is the only place in the module where earnings appear by occupation, not just by activity. It comes from the structure of earnings survey and covers only full-time employees paid for the whole month — so it is not the general average from
/financiar/v1/salariati, but a "clean" one, without partial months. - What the data shows, across all activities in 2024: specialists outearn managers — 12,365 lei gross against 12,250 — with a general average of 8,374 lei. At the other end, elementary occupations 5,367 lei and service workers 5,196.
- Three indicators, two of which are averages.
numarare people and add up;salariu_bazaandvenit_brutare monthly averages in lei and do not add up — not across occupations, not across sexes, not across ownership forms. - ✅ Verified on employee counts, with zero deviation:
total= male + female (17,389 of 17,389),total= public + private (13,222 of 13,222) andtotal= the sum of the nine occupational groups (2,034 of 2,034). On earnings the same identity comes out 0 of 6,141, with the sum of groups at 7.77 times the average — which is why the route does not run it there, returningidentitati.aplicabile = falsewith the reason. - The gap between the two money indicators is exactly the value of bonuses. Gross realised income includes premiums, bonuses and overtime; the base wage does not. The ratio comes computed on each series, in
raport_venit_baza: on the total for 2024, a base of 6,553 lei against income of 8,374 lei, meaning bonuses add 28%. The average across the whole projection is 1.307. - ⚠️ In 56 of the 54,034 cells income comes out BELOW the base wage, as low as 0.674. These are small cells — 68 employees on average — scattered over six years, peaking in 2013 (27 cases) and 2020 (13). Example: service workers in public air transport, men, in 2020 — base 3,262 lei, income 2,198. Those years are flagged in
raport_venit_baza.ani_sub_baza. - Occupations are coded with the major ISCO-08 groups,
1to9, because the source spells them out and a slug from the wording would exceed a hundred characters.denumire_ocupatiestates them in words. - 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
- What an occupation pays in a given sector — a benchmark for a pay scale.
- How much of earnings comes from bonuses rather than base pay.
- The public-private earnings gap, within the same occupation.
Response structure
numar or medie — decides whether the series can be summed.
1-9, or total.
false on average-type indicators, with the reason and figures.
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).
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": {
"indicator": "venit_brut",
"denumire": "Venitul brut realizat",
"natura": "medie",
"unitate": "lei pe lună",
"de_la": 2013,
"pana_la": 2024,
"filtre": {
"ocupatie": [
"total"
],
"sex": [
"total"
],
"forma": [
"total"
]
},
"ani": [
2013,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024
],
"serii": [
{
"caen": "01",
"nivel": "diviziune",
"denumire": "01 Agricultura, vanatoare si servicii anexe",
"ocupatie": "total",
"denumire_ocupatie": "Toate ocupaţiile",
"sex": "total",
"forma": "total",
"unitate": "lei pe lună",
"ani_publicati": 11,
"valori": {
"2013": "1539",
"2015": "1875",
"2016": "2162",
"2017": "2491",
"2018": "3301",
"2019": "3728",
"2020": "3948",
"2021": "4247",
"2022": "4748",
"2023": "4989",
"2024": "5718"
},
"raport_venit_baza": {
"nota": "Venitul brut realizat împărţit la salariul brut de bază: cât adaugă sporurile, primele şi orele suplimentare.",
"valori": {
"2013": "1.192",
"2015": "1.188",
"2016": "1.204",
"2017": "1.214",
"2018": "1.210",
"2019": "1.223",
"2020": "1.210",
"2021": "1.232",
"2022": "1.189",
"2023": "1.163",
"2024": "1.193"
}
}
}
],
"identitati": {
"aplicabile": false,
"motiv": "indicatorul_e_medie",
"nota": "Salariul de bază şi venitul brut sunt medii, nu totaluri: nu se adună nici peste ocupaţii, nici peste sexe, nici peste forme de proprietate. Măsurat, suma celor nouă grupe de ocupaţii iese de 7,77 ori media, iar identitatea se închide în 0 din 6.141 de celule. Pentru identităţi verificabile, cere `indicator=numar`."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — ancheta de structură a câştigurilor salariale (TEMPO, matricea FOM121A).",
"acoperire": {
"de_la": 2013,
"pana_la": 2024
},
"serii_returnate": 67,
"nota_populatie": "Ancheta acoperă doar salariaţii cu program complet care au fost plătiţi întreaga lună — de aceea cifrele diferă de mediile generale din /financiar/v1/salariati.",
"nota_natura": "Numărul de salariaţi se însumează; salariul de bază şi venitul brut sunt medii şi nu se adună pe nicio dimensiune.",
"nota_identitate": "Salariul de bază şi venitul brut sunt medii, nu totaluri: nu se adună nici peste ocupaţii, nici peste sexe, nici peste forme de proprietate. Măsurat, suma celor nouă grupe de ocupaţii iese de 7,77 ori media, iar identitatea se închide în 0 din 6.141 de celule. Pentru identităţi verificabile, cere `indicator=numar`.",
"nota_sporuri": "Diferenţa dintre venitul brut realizat şi salariul de bază e valoarea sporurilor, primelor şi orelor suplimentare. `raport_venit_baza` o dă calculată, iar `ani_sub_baza` marchează anii în care venitul iese sub bază.",
"nota_ocupatii": "Ocupaţiile sunt grupele majore ISCO-08, codificate `1`–`9`; `denumire_ocupatie` le spune în cuvinte."
}
}
{
"data": {
"indicator": "venit_brut",
"denumire": "Venitul brut realizat",
"natura": "medie",
"unitate": "lei pe lună",
"de_la": 2024,
"pana_la": 2024,
"filtre": {
"ocupatie": [
"total"
],
"caen": "62-63",
"sex": [
"total"
],
"forma": [
"total"
]
},
"ani": [
2024
],
"serii": [
{
"caen": "62-63",
"nivel": "diviziune",
"denumire": "62-63 Activitati de servicii in tehnologia informatiei; Activitati de servicii informatice",
"ocupatie": "total",
"denumire_ocupatie": "Toate ocupaţiile",
"sex": "total",
"forma": "total",
"unitate": "lei pe lună",
"ani_publicati": 1,
"valori": {
"2024": "16590"
},
"raport_venit_baza": {
"nota": "Venitul brut realizat împărţit la salariul brut de bază: cât adaugă sporurile, primele şi orele suplimentare.",
"valori": {
"2024": "1.166"
}
}
}
],
"identitati": {
"aplicabile": false,
"motiv": "indicatorul_e_medie",
"nota": "Salariul de bază şi venitul brut sunt medii, nu totaluri: nu se adună nici peste ocupaţii, nici peste sexe, nici peste forme de proprietate. Măsurat, suma celor nouă grupe de ocupaţii iese de 7,77 ori media, iar identitatea se închide în 0 din 6.141 de celule. Pentru identităţi verificabile, cere `indicator=numar`."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — ancheta de structură a câştigurilor salariale (TEMPO, matricea FOM121A).",
"acoperire": {
"de_la": 2013,
"pana_la": 2024
},
"serii_returnate": 1,
"nota_populatie": "Ancheta acoperă doar salariaţii cu program complet care au fost plătiţi întreaga lună — de aceea cifrele diferă de mediile generale din /financiar/v1/salariati.",
"nota_natura": "Numărul de salariaţi se însumează; salariul de bază şi venitul brut sunt medii şi nu se adună pe nicio dimensiune.",
"nota_identitate": "Salariul de bază şi venitul brut sunt medii, nu totaluri: nu se adună nici peste ocupaţii, nici peste sexe, nici peste forme de proprietate. Măsurat, suma celor nouă grupe de ocupaţii iese de 7,77 ori media, iar identitatea se închide în 0 din 6.141 de celule. Pentru identităţi verificabile, cere `indicator=numar`.",
"nota_sporuri": "Diferenţa dintre venitul brut realizat şi salariul de bază e valoarea sporurilor, primelor şi orelor suplimentare. `raport_venit_baza` o dă calculată, iar `ani_sub_baza` marchează anii în care venitul iese sub bază.",
"nota_ocupatii": "Ocupaţiile sunt grupele majore ISCO-08, codificate `1`–`9`; `denumire_ocupatie` le spune în cuvinte.",
"caen": {
"cerut": "62",
"versiune_cerut": "Rev.2",
"folosit": "62-63",
"cod": "62",
"nivel": "agregat",
"denumire": "Activități de servicii în tehnologia informației",
"versiune_serie": "Rev.2",
"conversie": false,
"urcat": false
}
}
}
{
"data": {
"indicator": "venit_brut",
"denumire": "Venitul brut realizat",
"natura": "medie",
"unitate": "lei pe lună",
"de_la": 2024,
"pana_la": 2024,
"filtre": {
"ocupatie": [
"total"
],
"sex": [
"total"
],
"forma": [
"total"
]
},
"ani": [
2024
],
"serii": [
{
"caen": "01",
"nivel": "diviziune",
"denumire": "01 Agricultura, vanatoare si servicii anexe",
"ocupatie": "total",
"denumire_ocupatie": "Toate ocupaţiile",
"sex": "total",
"forma": "total",
"unitate": "lei pe lună",
"ani_publicati": 1,
"valori": {
"2024": "5718"
},
"raport_venit_baza": {
"nota": "Venitul brut realizat împărţit la salariul brut de bază: cât adaugă sporurile, primele şi orele suplimentare.",
"valori": {
"2024": "1.193"
}
}
}
],
"identitati": {
"aplicabile": false,
"motiv": "indicatorul_e_medie",
"nota": "Salariul de bază şi venitul brut sunt medii, nu totaluri: nu se adună nici peste ocupaţii, nici peste sexe, nici peste forme de proprietate. Măsurat, suma celor nouă grupe de ocupaţii iese de 7,77 ori media, iar identitatea se închide în 0 din 6.141 de celule. Pentru identităţi verificabile, cere `indicator=numar`."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — ancheta de structură a câştigurilor salariale (TEMPO, matricea FOM121A).",
"acoperire": {
"de_la": 2013,
"pana_la": 2024
},
"serii_returnate": 67,
"nota_populatie": "Ancheta acoperă doar salariaţii cu program complet care au fost plătiţi întreaga lună — de aceea cifrele diferă de mediile generale din /financiar/v1/salariati.",
"nota_natura": "Numărul de salariaţi se însumează; salariul de bază şi venitul brut sunt medii şi nu se adună pe nicio dimensiune.",
"nota_identitate": "Salariul de bază şi venitul brut sunt medii, nu totaluri: nu se adună nici peste ocupaţii, nici peste sexe, nici peste forme de proprietate. Măsurat, suma celor nouă grupe de ocupaţii iese de 7,77 ori media, iar identitatea se închide în 0 din 6.141 de celule. Pentru identităţi verificabile, cere `indicator=numar`.",
"nota_sporuri": "Diferenţa dintre venitul brut realizat şi salariul de bază e valoarea sporurilor, primelor şi orelor suplimentare. `raport_venit_baza` o dă calculată, iar `ani_sub_baza` marchează anii în care venitul iese sub bază.",
"nota_ocupatii": "Ocupaţiile sunt grupele majore ISCO-08, codificate `1`–`9`; `denumire_ocupatie` le spune în cuvinte."
}
}
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,200; all occupations × sexes × forms exceed the limit on their own. interval_prea_lung — beyond 20 years. Plus an indicator, occupation, sex or form outside the list. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. |
| 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,200; all occupations × sexes × forms exceed the limit on their own. interval_prea_lung — beyond 20 years. Plus an indicator, occupation, sex or form outside the list. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped.",
"detalii": {
"indicator": [
"The value sent does not satisfy the parameter rule."
]
}
}
}