oneapi
Sign in
Financiar v1 / Inflatie

Hourly labour cost index

The quarterly series of hourly labour cost — the index for service and maintenance contracts, where labour is the main cost. Since Q1 2000, by NACE section and by cost component.

⚠️ Base 2020 = 100, not 2021 as at /cost-constructii and /preturi-productie. A ratio between indices with different bases would mean nothing.

⚠️ The source misnames six of its matrices. The ones it calls „percentage change" in fact publish INDICES with the reference period = 100 — verified on every value, without exception. A figure of 131.71 means +31.71%, not +131.71%. For the relative forms the response also returns variatie_procent, computed correctly.

The four components are two alternative totals plus two parts: „total cost" and „total cost excluding occasional bonuses" are different cuts, not a hierarchy — measured, the second is not systematically below the first.

GET
https://oneapi.ro/api/financiar/v1/cost-forta-munca

Query parameters

NameTypeDescriptionAccepted values
formaoptional string | null Optional: indice (default), variatie_trimestriala, variatie_anuala. indicevariatie_trimestrialavariatie_anuala
ajustareoptional string | null Optional: bruta (default), zile_lucratoare, zile_si_sezonier. brutazile_lucratoarezile_si_sezonier
de_laoptional string | null Optional, YYYY-Tn or YYYY-MM, from 2000-Q1. e.g. 2024-T1e.g. 2024-06-15
pana_laoptional string | null Optional, YYYY-Tn or YYYY-MM. e.g. 2024-06-15
caenoptional string | null Optional: any CAEN code — section (C), division (62), group, class (6201) — from any revision. It is brought to its section (CAEN Rev.2, B–S; agriculture is not published); what was used is in meta.caen. e.g. 4120
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 (industry, construction and services, B–S). Not sent together with caen. e.g. total
componentalistoptional text Optional, one or more: total, total_fara_premii, directe, indirecte. totaltotal_fara_premiidirecteindirecte

How it behaves

  • The quarterly hourly labour cost series published by the Romanian statistics institute — from Q1 2000, 105 quarters, by CAEN section and cost component. It is the right index for contracts where labour is the main cost: services, maintenance, security, cleaning.
  • A complete 3×3 grid. forma — the index itself, against the previous quarter, or against the same quarter a year earlier. ajustare — raw series, working-day adjusted, or working-day and seasonally adjusted. All nine combinations exist, unlike the industrial producer price family.
  • ⚠️ The base is 2020 = 100, not 2021 as in /cost-constructii and /preturi-productie. Verified: the average of the four 2020 quarters comes out at exactly 100.000. Two indices on different bases cannot be related to one another — a ratio between them would mean nothing.
  • ⚠️ The source misnames six of its matrices. The ones it calls "percentage change against the previous quarter / against the same quarter a year earlier" in fact publish indices with the reference period = 100. Verified across every value, without exception: 100 × I(t)/I(t−1) closes 7,904 out of 7,904, and 100 × I(t)/I(t−4) 7,676 out of 7,676. A figure of 131.71 means +31.71%, not +131.71% — a fourfold difference for anyone taking the name literally. On the relative forms the response also returns variatie_procent, computed correctly.
  • The four components are two alternative totals plus two parts. "Total cost" and "total cost excluding occasional bonuses" are two cuts of the same thing, not a hierarchy: measured, the second is not systematically below the first — 886 pairs below, 1,109 above — because they are indices on the same base, not levels. The rol field tells them apart.
  • What is checked: the total lies between direct and indirect costs, the only valid check on a family of indices. 1,995 out of 1,995, without exception. It runs only on the indice form; on the relative forms the values refer to different periods, so containment would be meaningless.
  • The source covers industry, construction and services — section A, agriculture, is not published.
  • How differently labour moves: from 2020-Q1 to 2026-Q1, construction +111.0%, hotels and restaurants +100.1%, IT and communications +97.8%, whole economy +82.2%, and health +44.1%.
  • 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

  • Adjusting a maintenance or security contract on the real cost of labour.
  • Backing a rate renegotiation with your own activity section.
  • Comparing labour cost growth with inflation and with producer prices.

Response structure

FieldTypeDescription
data.forma string Legal form or form of organisation.
data.forma_explicatie string
data.ajustare string Which adjustment was applied to the values (seasonal, working-day, or none).
data.de_la string Start of the interval the response covers.
data.pana_la string End of the interval the response covers, inclusive.
data.baza string 2020 = 100 on the indice form; on the relative forms, the reference period = 100.
data.tip_indice string baza_fixa (forma=indice), fata_de_perioada_anterioara (variatie_trimestriala, against the previous quarter) or fata_de_acelasi_trimestru_an_precedent (variatie_anuala) — it determines how the figure is read.
data.filtre array The filters actually applied, as the route understood them — useful when a value was normalised.
data.trimestre array Quarters for which values exist.
data.serii[].caen string The CAEN (NACE) code of the activity, in the series revision.
data.serii[].activitate string The economic activity the value refers to.
data.serii[].componenta string
data.serii[].componenta_eticheta string
data.serii[].rol string total, total_alternativ or parte. The two totals do not form a hierarchy.
data.serii[].trimestre_publicate integer How many quarters the source actually published.
data.serii[].valori object The values of the series, by period.
data.incadrari[] array The check of the total between its two parts, run only on the indice form.
data.incadrari[].total string
data.incadrari[].parti array
data.incadrari[].regula string The rule by which the value was computed or chosen.
data.incadrari[].verificari integer How many combinations were checked.
data.incadrari[].conforme integer
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.acoperire.de_la string The first period we have data for.
meta.acoperire.pana_la string The last period we have data for.
meta.trimestre integer Quarters for which values exist.
meta.serii_returnate integer How many series were actually returned, after filters and the cell ceiling.
meta.nota_baza string What the index base is and when it changes.
meta.nota_componente string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_control string Which control check was run on the values in the response.
meta.nota_acoperire_caen string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_indexare string A note on how to read the response: a caveat, a convention or a limit of the source.
data.serii[].variatie_procent Present only on the relative forms: the real change, i.e. the published figure minus 100.
meta.fara_date data is null and this says why. The projection over the INS data is empty. 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.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/cost-forta-munca?per_pagina=3
{
    "data": {
        "forma": "indice",
        "forma_explicatie": "indicele propriu-zis, faţă de baza fixă",
        "ajustare": "bruta",
        "de_la": "2000-T1",
        "pana_la": "2026-T2",
        "baza": "2020 = 100",
        "tip_indice": "baza_fixa",
        "filtre": [],
        "trimestre": [
            "2000-T1",
            "2000-T2",
            "2000-T3",
            "2000-T4",
            "2001-T1",
            "2001-T2",
            "2001-T3",
            "2001-T4",
            "2002-T1",
            "2002-T2",
            "2002-T3",
            "2002-T4",
            "2003-T1",
            "2003-T2",
            "2003-T3",
            "2003-T4",
            "2004-T1",
            "2004-T2",
            "2004-T3",
            "2004-T4",
            "2005-T1",
            "2005-T2",
            "2005-T3",
            "2005-T4",
            "2006-T1",
            "2006-T2",
            "2006-T3",
            "2006-T4",
            "2007-T1",
            "2007-T2",
            "2007-T3",
            "2007-T4",
            "2008-T1",
            "2008-T2",
            "2008-T3",
            "2008-T4",
            "2009-T1",
            "2009-T2",
            "2009-T3",
            "2009-T4",
            "2010-T1",
            "2010-T2",
            "2010-T3",
            "2010-T4",
            "2011-T1",
            "2011-T2",
            "2011-T3",
            "2011-T4",
            "2012-T1",
            "2012-T2",
            "2012-T3",
            "2012-T4",
            "2013-T1",
            "2013-T2",
            "2013-T3",
            "2013-T4",
            "2014-T1",
            "2014-T2",
            "2014-T3",
            "2014-T4",
            "2015-T1",
            "2015-T2",
            "2015-T3",
            "2015-T4",
            "2016-T1",
            "2016-T2",
            "2016-T3",
            "2016-T4",
            "2017-T1",
            "2017-T2",
            "2017-T3",
            "2017-T4",
            "2018-T1",
            "2018-T2",
            "2018-T3",
            "2018-T4",
            "2019-T1",
            "2019-T2",
            "2019-T3",
            "2019-T4",
            "2020-T1",
            "2020-T2",
            "2020-T3",
            "2020-T4",
            "2021-T1",
            "2021-T2",
            "2021-T3",
            "2021-T4",
            "2022-T1",
            "2022-T2",
            "2022-T3",
            "2022-T4",
            "2023-T1",
            "2023-T2",
            "2023-T3",
            "2023-T4",
            "2024-T1",
            "2024-T2",
            "2024-T3",
            "2024-T4",
            "2025-T1",
            "2025-T2",
            "2025-T3",
            "2025-T4",
            "2026-T1",
            "2026-T2"
        ],
        "serii": [
            {
                "caen": "B",
                "activitate": "B  INDUSTRIA EXTRACTIVA",
                "componenta": "directe",
                "componenta_eticheta": "cheltuieli directe (salariale)",
                "rol": "parte",
                "trimestre_publicate": 106,
                "valori": {
                    "2000-T1": "4.639",
                    "2000-T2": "6.114",
                    "2000-T3": "6.858",
                    "2000-T4": "8.147",
                    "2001-T1": "7.474",
                    "2001-T2": "10.089",
                    "2001-T3": "11.086",
                    "2001-T4": "10.798",
                    "2002-T1": "10.614",
                    "2002-T2": "13.460",
                    "2002-T3": "13.374",
                    "2002-T4": "12.741",
                    "2003-T1": "13.105",
                    "2003-T2": "15.170",
                    "2003-T3": "16.687",
                    "2003-T4": "15.310",
                    "2004-T1": "15.349",
                    "2004-T2": "17.301",
                    "2004-T3": "19.090",
                    "2004-T4": "17.544",
                    "2005-T1": "17.137",
                    "2005-T2": "20.463",
                    "2005-T3": "23.204",
                    "2005-T4": "21.492",
                    "2006-T1": "23.905",
                    "2006-T2": "24.833",
                    "2006-T3": "28.884",
                    "2006-T4": "27.193",
                    "2007-T1": "26.549",
                    "2007-T2": "32.563",
                    "2007-T3": "34.956",
                    "2007-T4": "34.560",
                    "2008-T1": "29.420",
                    "2008-T2": "39.036",
                    "2008-T3": "42.559",
                    "2008-T4": "39.088",
                    "2009-T1": "37.596",
                    "2009-T2": "44.175",
                    "2009-T3": "50.301",
                    "2009-T4": "44.935",
                    "2010-T1": "44.286",
                    "2010-T2": "47.878",
                    "2010-T3": "51.576",
                    "2010-T4": "46.656",
                    "2011-T1": "45.767",
                    "2011-T2": "49.101",
                    "2011-T3": "54.273",
                    "2011-T4": "49.521",
                    "2012-T1": "47.485",
                    "2012-T2": "56.488",
                    "2012-T3": "57.479",
                    "2012-T4": "53.722",
                    "2013-T1": "50.951",
                    "2013-T2": "59.120",
                    "2013-T3": "60.451",
                    "2013-T4": "56.029",
                    "2014-T1": "56.025",
                    "2014-T2": "64.738",
                    "2014-T3": "67.269",
                    "2014-T4": "65.658",
                    "2015-T1": "59.304",
                    "2015-T2": "71.577",
                    "2015-T3": "69.267",
                    "2015-T4": "63.898",
                    "2016-T1": "62.639",
                    "2016-T2": "64.412",
                    "2016-T3": "67.550",
                    "2016-T4": "66.021",
                    "2017-T1": "63.415",
                    "2017-T2": "68.231",
                    "2017-T3": "70.199",
                    "2017-T4": "80.253",
                    "2018-T1": "73.490",
                    "2018-T2": "88.557",
                    "2018-T3": "88.230",
                    "2018-T4": "88.920",
                    "2019-T1": "86.972",
                    "2019-T2": "95.215",
                    "2019-T3": "96.638",
                    "2019-T4": "94.406",
                    "2020-T1": "91.089",
                    "2020-T2": "104.931",
                    "2020-T3": "100.826",
                    "2020-T4": "103.154",
                    "2021-T1": "95.808",
                    "2021-T2": "105.848",
                    "2021-T3": "108.119",
                    "2021-T4": "111.082",
                    "2022-T1": "98.706",
                    "2022-T2": "118.279",
                    "2022-T3": "127.123",
                    "2022-T4": "127.226",
                    "2023-T1": "121.462",
                    "2023-T2": "138.203",
                    "2023-T3": "135.205",
                    "2023-T4": "146.889",
                    "2024-T1": "132.030",
                    "2024-T2": "155.344",
                    "2024-T3": "153.883",
                    "2024-T4": "156.097",
                    "2025-T1": "155.033",
                    "2025-T2": "166.655",
                    "2025-T3": "165.650",
                    "2025-T4": "169.105",
                    "2026-T1": "164.707",
                    "2026-T2": "176.043"
                }
            }
        ],
        "incadrari": [
            {
                "total": "total",
                "parti": [
                    "directe",
                    "indirecte"
                ],
                "regula": "totalul stă între cele două părţi — indicii nu se adună, deci nu există identitate de sumă",
                "verificari": 2014,
                "conforme": 2014
            }
        ]
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — indicele trimestrial al costului orar al forţei de muncă (TEMPO, matricea LCI101G).",
        "acoperire": {
            "de_la": "2000-T1",
            "pana_la": "2026-T2"
        },
        "trimestre": 106,
        "serii_returnate": 76,
        "nota_baza": "Indice cu BAZĂ FIXĂ, 2020 = 100 — verificat: media celor patru trimestre din 2020 iese exact 100,000. ATENŢIE: ceilalţi doi indici INS din modul (/cost-constructii şi /preturi-productie) au baza 2021, deci nu se raportează unul la altul.",
        "nota_componente": "Cele patru componente sunt două totaluri alternative (`total`, `total_fara_premii`) plus două părţi (`directe`, `indirecte`). Câmpul `rol` le distinge; cele două totaluri nu se compară ca o ierarhie — măsurat, al doilea nu e sistematic sub primul.",
        "nota_control": "Indicii nu se însumează; se verifică încadrarea totalului între cele două părţi. Măsurat pe toată seria: 1.995 din 1.995.",
        "nota_acoperire_caen": "Sursa acoperă industria, construcţiile şi serviciile — secţiunea A (agricultură) nu e publicată.",
        "nota_indexare": "Coeficientul de ajustare între două trimestre: /financiar/v1/calcul/indexare?indice=cost-forta-munca."
    }
}

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. A form, adjustment or component outside the list, a period written other than YYYY-Tn or YYYY-MM, or interval_prea_lung beyond 120 quarters. 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. A form, adjustment or component outside the list, a period written other than YYYY-Tn or YYYY-MM, or interval_prea_lung beyond 120 quarters. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped.",
        "detalii": {
            "forma": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}