oneapi
Sign in
Financiar v1 / Inflatie

Civilian employed population

How many people actually work in each activity and county — annually since 1992, by sex and across 55 territories. 76,665 values, in thousands of persons.

It is not the same thing as employees. The employed population includes the self-employed, employers and unpaid family workers. In 2024: 7,742.7 thousand people employed against 5,453.2 thousand employees from /financiar/v1/salariati — a difference of almost 2.3 million, which is the non-employee economy, largely subsistence agriculture.

⚠️ The male figure is not published by the source. INS gives only the total and the female figure; sex=masculin returns the difference, flagged with sursa: derivat and derivat_din: total - feminin. Verified: on Rev. 2 the subtraction does not come out negative in any of the 19,423 cells. On Rev. 1, however, one case appears — Tulcea, 2000, „other activities": total 0.2 thousand, female 0.7 thousand. There the route returns empty, not a negative number, and reports the case in identitati.masculin_negativ.

⚠️ The two classifications do not join up. Rev. 1 covers 1992–2008, Rev. 2 covers 2008–2024, with different sections. versiune picks one; the route never splices the series.

⚠️ Rev. 1 mixes two nomenclatures: the NACE sections and a few aggregates written out in words („Industry", „Transport and storage", „Other activities"). They appear at the grupa level and do not enter the partition of sections — otherwise Total and Transport would collide on the letter T.

⚠️ industrie is a partial aggregate in Rev. 2, not a section: the sum of sections B, C, D and E, verified 1,692 of 1,693.

✅ total = the sum of the 19 sections A–S closes in 1,679 of 1,688 cells, with a maximum deviation of 80 thousand persons. The source publishes 19 of the 21 sections — T and U are missing.

GET
https://oneapi.ro/api/financiar/v1/populatie-ocupata

Query parameters

NameTypeDescriptionAccepted values
versiuneoptional string | null Optional: rev2 (default, 2008-2024) or rev1 (1992-2008). rev1rev2
niveloptional string | null Optional: total, agregat, sectiune, grupa. totalagregatsectiunegrupa
teritoriuoptional string | null Optional, the exact name. In Rev.1 Bucharest appears under the old label, including SAI. max 80 car.
nivel_teritoriuoptional string | null Optional: tara (default), macroregiune, regiune, judet. taramacroregiuneregiunejudet
de_laoptional integer | null Optional, a year. 1990 – 2100
pana_laoptional integer | null Optional, a year. 1990 – 2100
caenoptional string | null Optional: any CAEN code — section (C), division (62), group, class (6201) — from any revision. It is brought to its section or, in Rev.1, the divisions the source names (01, 02, 64; 60–63 fall under transport_si_depozitare); what was used is in meta.caen. e.g. 6201
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
grupareoptional string | null Optional: the source aggregates that are not CAEN codes — total, industrie, celelalte_activitati_ale_economiei_nationale, transport_si_depozitare. Not sent together with caen. e.g. industriee.g. total
sexlistoptional text Optional: total (default), masculin (derived), feminin. totalmasculinfeminin

How it behaves

  • The civilian employed population by activity, county and sex — annually from 1992 to 2024, across 55 territories. 76,665 values from TEMPO matrices FOM103A and FOM103D, in thousands of persons.
  • This is not the same as employees, and the gap is large. The employed population includes the self-employed, employers and unpaid family workers. In 2024: 7,742.7 thousand employed against 5,453.2 thousand employees from /financiar/v1/salariati — almost 2.3 million people who work without being employees, largely in subsistence agriculture.
  • ⚠️ The male figure is not published by the source. INS gives only total and feminin; sex=masculin returns the difference, marked sursa: derivat and derivat_din: total - feminin. Verified: on Rev.2 the subtraction never comes out negative across all 19,423 cells.
  • ⚠️ On Rev.1 one case would go negative: Tulcea, year 2000, "other activities" — total 0.2 thousand, female 0.7 thousand. The source publishes more women than the total. There the route returns null, not a negative number, and reports the case in masculin_negativ. It is the same anomaly as in registered unemployment.
  • ⚠️ The two classifications do not join. Rev.1 covers 1992-2008, Rev.2 covers 2008-2024, with different sections. versiune picks one; the route never splices the series.
  • ⚠️ Rev.1 mixes two nomenclatures: the 14 CAEN Rev.1 sections and five aggregates spelled out — "Industry", "Transport and storage", "Post and telecommunications", "Agriculture, hunting", "Forestry". They sit at the grupa level and do not belong to the section partition. The code is extracted only from names starting with a letter and a space: otherwise "Total" and "Transport" would collide on T, and "Other activities" would fall onto section C.
  • ⚠️ industrie is a partial aggregate in Rev.2, not a section: the sum of sections B, C, D and E — verified 1,692 of 1,693, with a maximum gap of 10 thousand persons.
  • ✅ total = the sum of the 19 sections A-S closes in 1,679 of 1,688 cells, with a maximum gap of 80 thousand. The source publishes 19 of 21 sections — T (household activities) and U (extraterritorial organisations) are missing, marginal in volume.
  • 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

  • The real size of a county's labour force, beyond employment contracts.
  • The weight of the non-employee economy, by comparison with /financiar/v1/salariati.
  • The structure of employment by activity, in a long series from 1992.

Response structure

FieldTypeDescription
data.versiune_caen string The revision the served series comes from.
data.unitate string mii persoane, to one decimal, as the source publishes it.
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.sex array Sex of the people the value refers to.
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[].nivel_teritoriu string Territorial level of the value (country, region, county, locality).
data.serii[].caen string The CAEN (NACE) code of the activity, in the series revision.
data.serii[].nivel string Level in the classification hierarchy — the deeper, the more detailed.
data.serii[].denumire string The name, exactly as the source publishes it.
data.serii[].sex string Sex of the people the value refers to.
data.serii[].sursa string publicat or derivat — the male series is the only derived one.
data.serii[].unitate string Unit of measure of the values. Read it before plotting or summing them.
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.nota_sexe string
data.identitati.nota_sectiuni string
data.identitati.nota_industrie string What the industrial perimeter used here covers.
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_concept string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_sexe string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_versiune string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_sectiuni string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_industrie string What the industrial perimeter used here covers.
data.serii[].derivat_din The formula, when the series is derived: total - feminin.
data.masculin_negativ Cells where the subtraction would go negative; there the value is null, not a false number.
meta.fara_date 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 lies outside the chosen classification. It overlaps but holds no values.
meta.fara_date_cod 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.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/populatie-ocupata?per_pagina=3
{
    "data": {
        "versiune_caen": "rev2",
        "unitate": "mii 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",
                "sursa": "publicat",
                "unitate": "mii persoane",
                "ani_publicati": 17,
                "valori": {
                    "2008": "1981.5",
                    "2009": "1773.6",
                    "2010": "1733.3",
                    "2011": "1753.8",
                    "2012": "1765.3",
                    "2013": "1777.6",
                    "2014": "1781.8",
                    "2015": "1872.3",
                    "2016": "1957",
                    "2017": "1966.8",
                    "2018": "1946.7",
                    "2019": "1896.5",
                    "2020": "1886.6",
                    "2021": "1838.9",
                    "2022": "1838.1",
                    "2023": "1768.5",
                    "2024": "1689.2"
                }
            }
        ],
        "identitati": {
            "nota_sexe": "Sursa publică doar totalul şi feminin; masculinul e derivat prin scădere şi poartă `sursa: derivat`. Verificat pe toată proiecţia: diferenţa nu e negativă în niciuna dintre cele 19.423 de celule ale Rev.2, dar apare o dată în Rev.1 — Tulcea, 2000, „celelalte activităţi\": total 0,2 mii, feminin 0,7 mii.",
            "nota_sectiuni": "Măsurat pe Rev.2: `total` = suma celor 19 secţiuni A-S se închide în 1.679 din 1.688 de celule, cu abatere maximă de 80 de mii de persoane. Sursa publică 19 secţiuni din 21 — lipsesc T (gospodării) şi U (organizaţii extrateritoriale).",
            "nota_industrie": "Agregatul `industrie` e suma secţiunilor B+C+D+E — verificat 1.692 din 1.693 — şi nu intră în partiţia secţiunilor."
        }
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — populaţia ocupată civilă (TEMPO, matricile FOM103A şi FOM103D).",
        "acoperire": {
            "de_la": 2008,
            "pana_la": 2024
        },
        "serii_returnate": 21,
        "nota_concept": "Populaţia ocupată include lucrătorii pe cont propriu, patronii şi lucrătorii familiali neremuneraţi — de aceea e sensibil mai mare decât numărul de salariaţi din /financiar/v1/salariati.",
        "nota_sexe": "Sursa publică doar `total` şi `feminin`. Cere `sex=masculin` pentru seria derivată prin scădere.",
        "nota_versiune": "Rev.1 acoperă 1992-2008, Rev.2 acoperă 2008-2024, cu secţiuni diferite. Seriile nu se leagă cap la cap.",
        "nota_sectiuni": "Măsurat pe Rev.2: `total` = suma celor 19 secţiuni A-S se închide în 1.679 din 1.688 de celule, cu abatere maximă de 80 de mii de persoane. Sursa publică 19 secţiuni din 21 — lipsesc T (gospodării) şi U (organizaţii extrateritoriale).",
        "nota_industrie": "Agregatul `industrie` e suma secţiunilor B+C+D+E — verificat 1.692 din 1.693 — şi nu intră în partiţia secţiunilor."
    }
}

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. prea_multe_serii — beyond 1,500. interval_prea_lung — beyond 35 years on a narrow cut and beyond 10 when the response spans several. Plus a version, level or sex outside the list. 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. prea_multe_serii — beyond 1,500. interval_prea_lung — beyond 35 years on a narrow cut and beyond 10 when the response spans several. Plus a version, level or sex outside the list. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped.",
        "detalii": {
            "versiune": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}