oneapi
Sign in
Financiar v1 / Inflatie

Employment and hours worked in the national accounts

Employment and hours worked as the national accounts measure them — annually and quarterly, since 1995, across 11 branches and three professional statuses.

⚠️ The annual and the quarterly series sit in the same matrices, on the same first-quarter date. The route requires periodicitate and never mixes them: mixed, both identities appear broken precisely in the first quarter.

⚠️ A methodological break at 2004: ESA 95 covers 1995–2003, ESA 2010 covers 2004 → present. The sistem field separates them; they are never spliced.

GET
https://oneapi.ro/api/financiar/v1/ocupare-conturi

Query parameters

NameTypeDescriptionAccepted values
clasificareoptional string | null Optional: rev2 (default) or rev1. Rev.1 is annual only, 1999-2008. rev1rev2
periodicitateoptional string | null Optional: anual (default) or trimestrial. anualtrimestrial
sistemoptional string | null Optional: sec95 (1995-2003) or sec2010 (from 2004). Without it both come out, flagged. sec95sec2010
de_laoptional integer | null Optional, a year, from 1995. 1995 – 2100
pana_laoptional integer | null Optional, a year. 1995 – 2100
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
indicatorlistoptional text Optional: ocupare, ore_lucrate. ocupareore_lucrate
caenlistoptional text Optional, codes separated by commas: any CAEN code — section (C), division (62), group, class (6201) — from any revision. It is brought to in rev2 the A10 branch that contains it (C → industrie); in rev1 the published section, subsection or division; what was used is in meta.caen. e.g. 2410,62
gruparelistoptional text Optional, separated by commas: the source aggregates that are not CAEN codes — total, celelalte (Rev.1) or the A10 sum branches requested directly (industrie, comert_transport_horeca…). Not sent together with caen. e.g. administratie_educatie_sanatatee.g. comert_transport_horecae.g. industrie
statutlistoptional text Optional: total, salariati, cont_propriu. totalsalariaticont_propriu

How it behaves

  • Employed population and hours worked as measured by the national accounts — 12,174 values, from TEMPO matrices CON108A/B/C and CON109A/B/C. Two indicators × 11 branches × three professional statuses, annually and quarterly, from 1995-Q1 to 2026-Q1.
  • This is not the same as /financiar/v1/populatie-ocupata, which comes from the labour force survey. Here it is the national accounts concept, the one that ties directly to value added — and the denominator of the productivity at /financiar/v1/productivitate.
  • ⚠️ The annual and the quarterly series live in the same matrices, on the same first-quarter date; they differ only in the source granularity. The route requires periodicitate and never mixes them. Mixed, both identities appear broken exactly there: total = salariati + cont_propriu yields 187 of 253 in Q1 and 242 of 242 in Q2, Q3 and Q4, while total = the sum of the ten branches misses in exactly the 22 first quarters, by an amount nearly equal to the total. Kept apart, both close 100%.
  • ✅ total = salariati + cont_propriu: 979/979 and 396/396 quarterly, 242/242 and 99/99 annually, likewise on hours worked.
  • ✅ The total activity = the sum of the ten branches: 267/267 and 108/108 quarterly, 66/66 and 27/27 annually. The sum is computed from the database, so it can be verified even when the response does not carry every branch.
  • ⚠️ A methodological break at 2004. sec95 covers 1995-2003, sec2010 covers 2004 onward. The series do not join across the break; the sistem field separates them, and when a response spans both, meta says so.
  • ⚠️ NACE Rev.1 mixes levels in plain sight — its 32 activities are sections (a, c, d), subsections (ca, da…dn), scattered divisions (05, 25, 55, 80, 85), plus "other activities" and the total. The total identity is not run there — measured, it would yield 0 of 30 — and nivel_activitate says what each row is. Rev.1 is published annually only, for 1999-2008.
  • The ten Rev.2 branches use the same slugs as /financiar/v1/pib/judete and /financiar/v1/conturi-regionale, so a branch's employment sits directly beside its GDP and its wages.
  • 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

  • Hours worked in a branch, quarter by quarter.
  • The share of own-account workers in a branch — highest in agriculture.
  • The denominator for productivity and for unit labour cost.
  • Comparing the national accounts concept with the labour force survey one.

Response structure

FieldTypeDescription
data.clasificare string The classification the values are broken down by.
data.periodicitate string
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 array The filters actually applied, as the route understood them — useful when a value was normalised.
data.perioade array Years at annual periodicity, YYYY-Tn at quarterly.
data.serii[].indicator string The statistical indicator the value refers to.
data.serii[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.serii[].clasificare string The classification the values are broken down by.
data.serii[].sistem string sec95 or sec2010 — they do not join across 2004.
data.serii[].statut string The state the item is in at the source.
data.serii[].activitate string The economic activity the value refers to.
data.serii[].denumire_activitate string
data.serii[].nivel_activitate string In Rev.1: sectiune, subsectiune, diviziune, rest. They do not add together.
data.serii[].perioade_publicate integer How many periods the source actually published.
data.serii[].valori object The values of the series, by period.
data.identitati.toleranta string How much deviation is accepted before the identity counts as unclosed — the source rounding, not an error.
data.identitati.statut.identitate string The identity being checked — which sum must equal which total.
data.identitati.statut.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.statut.verificari integer How many combinations were checked.
data.identitati.statut.inchise integer How many checks closed within tolerance.
data.identitati.ramuri.identitate string The identity being checked — which sum must equal which total.
data.identitati.ramuri.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.ramuri.verificari integer How many combinations were checked.
data.identitati.ramuri.inchise integer How many checks closed within tolerance.
data.identitati.nota_periodicitate string Why the route never mixes the annual with the quarterly series.
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_periodicitate string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_sisteme string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_identitate string How the identity above is checked and what it means when it does not close.
meta.nota_productivitate string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.fara_date data is null and this says why. The projection over the INS data is empty for the requested combination. The list is at /ocupare-conturi/activitati. As on the other series.
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[].cod string The CAEN code the key used stands for, when the series names its activities differently (agricultura = 01) or the key is an aggregate (62-63).
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/ocupare-conturi?per_pagina=3
{
    "data": {
        "clasificare": "rev2",
        "periodicitate": "anual",
        "de_la": 1995,
        "pana_la": 2025,
        "filtre": [],
        "perioade": [
            1995,
            1996,
            1997,
            1998,
            1999,
            2000,
            2001,
            2002,
            2003,
            2004,
            2005,
            2006,
            2007,
            2008,
            2009,
            2010,
            2011,
            2012,
            2013,
            2014,
            2015,
            2016,
            2017,
            2018,
            2019,
            2020,
            2021,
            2022,
            2023,
            2024,
            2025
        ],
        "serii": [
            {
                "indicator": "ocupare",
                "unitate": "mii persoane",
                "clasificare": "rev2",
                "sistem": "sec95",
                "statut": "cont_propriu",
                "activitate": "administratie_educatie_sanatate",
                "denumire_activitate": "ADMINISTRATIE PUBLICA SI APARARE; ASIGURARI SOCIALE DIN SISTEMUL PUBLIC; INVATAMANT; SANATATE SI ASISTENTA SOCIALA",
                "nivel_activitate": "ramura",
                "perioade_publicate": 9,
                "valori": {
                    "1995": "10.9",
                    "1996": "10.1",
                    "1997": "10.6",
                    "1998": "10.9",
                    "1999": "11",
                    "2000": "11",
                    "2001": "10.8",
                    "2002": "8.5",
                    "2003": "9.1",
                    "2004": null,
                    "2005": null,
                    "2006": null,
                    "2007": null,
                    "2008": null,
                    "2009": null,
                    "2010": null,
                    "2011": null,
                    "2012": null,
                    "2013": null,
                    "2014": null,
                    "2015": null,
                    "2016": null,
                    "2017": null,
                    "2018": null,
                    "2019": null,
                    "2020": null,
                    "2021": null,
                    "2022": null,
                    "2023": null,
                    "2024": null,
                    "2025": null
                }
            }
        ],
        "identitati": {
            "toleranta": "0.5",
            "statut": {
                "identitate": "`total` = `salariati` + `cont_propriu`",
                "nota": "Verificat pe toată proiecţia, cu seriile despărţite pe periodicitate: 979/979 şi 396/396 trimestrial, 242/242 şi 99/99 anual, la fel pe orele lucrate. Amestecate, ar ieşi 187 din 253 în trimestrul I.",
                "verificari": 682,
                "inchise": 682
            },
            "ramuri": {
                "identitate": "activitatea `total` = suma celor zece ramuri",
                "nota": "Verificat pe toată proiecţia: 267/267 şi 108/108 trimestrial, 66/66 şi 27/27 anual. Suma se calculează din bază. Amestecate cu seria anuală, ar rata exact în cele 22 de trimestre I.",
                "verificari": 186,
                "inchise": 186
            },
            "nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I."
        }
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — populaţia ocupată şi orele lucrate din conturile naţionale (TEMPO, matricile CON108A/B/C şi CON109A/B/C).",
        "acoperire": {
            "de_la": 1995,
            "pana_la": 2025
        },
        "serii_returnate": 132,
        "nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I.",
        "nota_sisteme": "Răspunsul acoperă ambele sisteme (sec95, sec2010): SEC 95 până în 2003 şi SEC 2010 din 2004. Seriile NU se lipesc peste ruptură.",
        "nota_identitate": "Verificat pe acest răspuns: totalul e suma celor două statute în 682 din 682 celule.",
        "nota_productivitate": "Aceleaşi ramuri, cu productivitatea muncii: /financiar/v1/productivitate."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatMissing or invalid token.
403feature_indisponibilfinanciar.indici is not in the current plan.
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. raspuns_prea_mare — more than 20,000 cells. Plus a classification, periodicity, system, indicator, activity, status or year outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. combinatie_nepublicata — Rev.1 is not published quarterly.
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. raspuns_prea_mare — more than 20,000 cells. Plus a classification, periodicity, system, indicator, activity, status or year outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. combinatie_nepublicata — Rev.1 is not published quarterly.",
        "detalii": {
            "clasificare": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}