Employees and earnings, by activity and county
How many employees each NACE activity has in each county and how much they earn — annually since 2008, by sex, across 55 territories and 68 activities. 694,836 values.
It complements /castig-salarial, it does not repeat it. That one is monthly and national, without sexes and without counties, and has no employee count; here you get both, but annually.
⚠️ Two of the four measures are averages, not totals — and that changes everything you can do with them. numar_mediu and efectiv_final are people and are additive; castig_net and castig_brut are monthly averages in lei and are not additive, neither across counties nor across sexes. Measured on 2024: on the employee count, country = the sum of the 42 counties closes 204 of 204; on gross earnings, 0 of 204 — the sum of the counties comes out 32.26 times the national average. Across sexes, the male average plus the female average gives 1.98 times the total. The route runs the identities only on the count measures and returns identitati.aplicabile = false with the reason on the others.
✅ Verified across the whole projection, on the employee count: total = male + female 57,315 of 57,315, country = the sum of the counties 2,460 of 2,460, the NACE total = the sum of the 19 sections 2,805 of 2,805, all with zero deviation.
⚠️ industrie is a partial aggregate, not a section. Verified: it covers exactly sections B, C, D and E — 1,327,503 employees in 2024. Anyone adding it alongside the sections counts industry twice.
The NACE dimension has 19 sections and 47 divisions, some merged by the source (02-03). The complete list, with the source's names: /financiar/v1/salariati/activitati.
Query parameters
numar_mediu (default), efectiv_final, castig_net, castig_brut.
numar_mediuefectiv_finalcastig_netcastig_brut
total, agregat, sectiune, diviziune.
totalagregatsectiunediviziune
TOTAL.
max 80 car.
tara (default), macroregiune, regiune, judet.
taramacroregiuneregiunejudet
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. 4711
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, 38-39, 59-60, 62-63). Not sent together with caen.
e.g. 02-03e.g. 38-39e.g. 59-60
total (default), masculin, feminin.
totalmasculinfeminin
How it behaves
- The number of employees and their average earnings, by CAEN activity, county and sex — annually from 2008 to 2024, across 55 territories and 68 activities. 694,836 values from TEMPO matrices
FOM104F,FOM105F,FOM106EandFOM107E. - This complements
/castig-salarial, it does not repeat it. That one is monthly and national, without sex or county, and carries no employee counts. Here both are present, but annually. - What the data shows: in IT (section J), the average gross earning in 2024 is highest in Cluj — 18,737 lei, above Timiş (17,625) and above Bucharest (17,543). IT also employed 249,698 people, of whom 103,374 women.
- ⚠️ Two of the four measures are averages, not totals — and that changes everything you can do with them.
numar_mediuandefectiv_finalare people and add up.castig_netandcastig_brutare monthly averages in lei and do not add up, neither across counties nor across sexes. - The figures show why, brutally. Measured on 2024: on employee counts, country = the sum of the 42 counties closes 204 of 204, and
total= male + female 3,495 of 3,495. On gross earnings: 0 of 204 across territories — the sum of counties comes out 32.26 times the national average — and only 60 of 3,495 across sexes, where the male average plus the female average gives 1.98 times the total. The route runs the identities only on count-type measures and returnsidentitati.aplicabile = falsewith the reason on the others, instead of false discrepancies. - ✅ On employee counts the identities close across the whole projection, with zero deviation:
total= male + female 57,315 of 57,315, country = sum of counties 2,460 of 2,460, CAEN total = sum of the 19 sections 2,805 of 2,805. - ⚠️
industrieis a partial aggregate, not a section. Verified: it covers exactly sections B, C, D and E — 1,327,503 employees in 2024, to the unit. Adding it beside the sections counts industry twice. - The CAEN dimension holds 19 sections and 47 divisions, four of which the source merges into pairs:
02-03,38-39,59-60,62-63. The full list, with source wording, is at/financiar/v1/salariati/activitati. - 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
- The average earning in a given activity and county — a benchmark for a salary offer.
- The earnings gap between women and men, within the same activity.
- How many employees a sector holds in a county, as the size of the local labour market.
Response structure
numar or medie — decides whether the series can be summed.
total, agregat, sectiune or diviziune.
false on average-type measures, with the reason and the figures behind it.
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. 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.
Response examples
{
"data": {
"masura": "numar_mediu",
"denumire": "Numărul mediu al salariaţilor",
"natura": "numar",
"unitate": "persoane",
"de_la": 2008,
"pana_la": 2024,
"filtre": {
"sex": [
"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",
"caen": "industrie",
"nivel": "agregat",
"denumire": "INDUSTRIE",
"sex": "total",
"unitate": "persoane",
"ani_publicati": 17,
"valori": {
"2008": "1605611",
"2009": "1371064",
"2010": "1237297",
"2011": "1259061",
"2012": "1295692",
"2013": "1285312",
"2014": "1302576",
"2015": "1334943",
"2016": "1352862",
"2017": "1400975",
"2018": "1409137",
"2019": "1398710",
"2020": "1316883",
"2021": "1312194",
"2022": "1312797",
"2023": "1333936",
"2024": "1327503"
}
}
],
"identitati": {
"aplicabile": true,
"identitate_sexe": "sexul `total` = `masculin` + `feminin`",
"nota": "Verificat pe toată proiecţia: pe numărul de salariaţi, `total` = masculin + feminin se închide 57.315 din 57.315, ţara = suma celor 42 de judeţe 2.460 din 2.460, iar totalul CAEN = suma celor 19 secţiuni 2.805 din 2.805.",
"nota_industrie": "Codul `industrie` e un agregat parţial peste secţiunile B, C, D, E şi nu intră în nicio partiţie."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — salariaţi şi câştig salarial pe activităţi şi judeţe (TEMPO, matricile FOM104F, FOM105F, FOM106E şi FOM107E).",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 68,
"nota_natura": "Numărul de salariaţi se însumează; câştigul salarial e o medie şi nu se adună nici peste judeţe, nici peste sexe. Câmpul `natura` o spune pe fiecare răspuns.",
"nota_identitate": "Verificat pe toată proiecţia: pe numărul de salariaţi, `total` = masculin + feminin se închide 57.315 din 57.315, ţara = suma celor 42 de judeţe 2.460 din 2.460, iar totalul CAEN = suma celor 19 secţiuni 2.805 din 2.805.",
"nota_industrie": "Codul `industrie` e un agregat peste secţiunile B, C, D şi E, nu o secţiune în sine.",
"nota_lunar": "Pentru câştigul salarial LUNAR, la nivel naţional, cu serie din 2000: /financiar/v1/castig-salarial.",
"nota_activitati": "Lista completă a codurilor, cu denumirile de la sursă: /financiar/v1/salariati/activitati."
}
}
{
"data": {
"masura": "numar_mediu",
"denumire": "Numărul mediu al salariaţilor",
"natura": "numar",
"unitate": "persoane",
"de_la": 2020,
"pana_la": 2024,
"filtre": {
"caen": "G",
"sex": [
"total"
],
"nivel_teritoriu": "tara"
},
"ani": [
2020,
2021,
2022,
2023,
2024
],
"serii": [
{
"teritoriu": "TOTAL",
"nivel_teritoriu": "tara",
"caen": "G",
"nivel": "sectiune",
"denumire": "G COMERT CU RIDICATA SI CU AMANUNTUL; REPARAREA AUTOVEHICULELOR SI MOTOCICLETELOR",
"sex": "total",
"unitate": "persoane",
"ani_publicati": 5,
"valori": {
"2020": "871296",
"2021": "881630",
"2022": "899845",
"2023": "915268",
"2024": "931735"
}
}
],
"identitati": {
"aplicabile": true,
"identitate_sexe": "sexul `total` = `masculin` + `feminin`",
"nota": "Verificat pe toată proiecţia: pe numărul de salariaţi, `total` = masculin + feminin se închide 57.315 din 57.315, ţara = suma celor 42 de judeţe 2.460 din 2.460, iar totalul CAEN = suma celor 19 secţiuni 2.805 din 2.805.",
"nota_industrie": "Codul `industrie` e un agregat parţial peste secţiunile B, C, D, E şi nu intră în nicio partiţie."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — salariaţi şi câştig salarial pe activităţi şi judeţe (TEMPO, matricile FOM104F, FOM105F, FOM106E şi FOM107E).",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 1,
"nota_natura": "Numărul de salariaţi se însumează; câştigul salarial e o medie şi nu se adună nici peste judeţe, nici peste sexe. Câmpul `natura` o spune pe fiecare răspuns.",
"nota_identitate": "Verificat pe toată proiecţia: pe numărul de salariaţi, `total` = masculin + feminin se închide 57.315 din 57.315, ţara = suma celor 42 de judeţe 2.460 din 2.460, iar totalul CAEN = suma celor 19 secţiuni 2.805 din 2.805.",
"nota_industrie": "Codul `industrie` e un agregat peste secţiunile B, C, D şi E, nu o secţiune în sine.",
"nota_lunar": "Pentru câştigul salarial LUNAR, la nivel naţional, cu serie din 2000: /financiar/v1/castig-salarial.",
"nota_activitati": "Lista completă a codurilor, cu denumirile de la sursă: /financiar/v1/salariati/activitati.",
"caen": {
"cerut": "4711",
"versiune_cerut": "Rev.2",
"folosit": "G",
"nivel": "sectiune",
"denumire": "COMERŢ CU RIDICATA ŞI CU AMĂNUNTUL; REPARAREA AUTOVEHICULELOR ŞI MOTOCICLETELOR",
"versiune_serie": "Rev.2",
"conversie": false,
"urcat": true
}
}
}
{
"data": {
"masura": "numar_mediu",
"denumire": "Numărul mediu al salariaţilor",
"natura": "numar",
"unitate": "persoane",
"de_la": 2024,
"pana_la": 2024,
"filtre": {
"sex": [
"total"
],
"nivel_teritoriu": "tara"
},
"ani": [
2024
],
"serii": [
{
"teritoriu": "TOTAL",
"nivel_teritoriu": "tara",
"caen": "industrie",
"nivel": "agregat",
"denumire": "INDUSTRIE",
"sex": "total",
"unitate": "persoane",
"ani_publicati": 1,
"valori": {
"2024": "1327503"
}
}
],
"identitati": {
"aplicabile": true,
"identitate_sexe": "sexul `total` = `masculin` + `feminin`",
"nota": "Verificat pe toată proiecţia: pe numărul de salariaţi, `total` = masculin + feminin se închide 57.315 din 57.315, ţara = suma celor 42 de judeţe 2.460 din 2.460, iar totalul CAEN = suma celor 19 secţiuni 2.805 din 2.805.",
"nota_industrie": "Codul `industrie` e un agregat parţial peste secţiunile B, C, D, E şi nu intră în nicio partiţie."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — salariaţi şi câştig salarial pe activităţi şi judeţe (TEMPO, matricile FOM104F, FOM105F, FOM106E şi FOM107E).",
"acoperire": {
"de_la": 2008,
"pana_la": 2024
},
"serii_returnate": 68,
"nota_natura": "Numărul de salariaţi se însumează; câştigul salarial e o medie şi nu se adună nici peste judeţe, nici peste sexe. Câmpul `natura` o spune pe fiecare răspuns.",
"nota_identitate": "Verificat pe toată proiecţia: pe numărul de salariaţi, `total` = masculin + feminin se închide 57.315 din 57.315, ţara = suma celor 42 de judeţe 2.460 din 2.460, iar totalul CAEN = suma celor 19 secţiuni 2.805 din 2.805.",
"nota_industrie": "Codul `industrie` e un agregat peste secţiunile B, C, D şi E, nu o secţiune în sine.",
"nota_lunar": "Pentru câştigul salarial LUNAR, la nivel naţional, cu serie din 2000: /financiar/v1/castig-salarial.",
"nota_activitati": "Lista completă a codurilor, cu denumirile de la sursă: /financiar/v1/salariati/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; all 68 activities across all counties exceed the limit on their own. interval_prea_lung — beyond 30 years on a narrow cut and beyond 8 when the response spans several. Plus a measure, level, sex or code outside the expected form. 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,500; all 68 activities across all counties exceed the limit on their own. interval_prea_lung — beyond 30 years on a narrow cut and beyond 8 when the response spans several. Plus a measure, level, sex or code outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped.",
"detalii": {
"masura": [
"The value sent does not satisfy the parameter rule."
]
}
}
}