oneapi
Sign in
Financiar v1 / Inflatie

Monthly employee headcount

How many employees there are at the end of each month, by NACE section and division — monthly since January 2000, in thousands of persons.

It sits alongside /financiar/v1/castig-salarial: the nomenclature is identical, row for row, so the number of employees stands next to their earnings for the same month. Until now, monthly earnings existed without a headcount.

⚠️ The INDUSTRIE row and the three ranges (38-39, 59-60, 62-63) are partial aggregates and do not enter the sum of sections.

GET
https://oneapi.ro/api/financiar/v1/salariati/lunar

Query parameters

NameTypeDescriptionAccepted values
de_laoptional string | null Optional, a month in the form YYYY-MM, from 2000-01. e.g. 2024-01e.g. 2024-06-15
pana_laoptional string | null Optional, a month in the form YYYY-MM. e.g. 2024-06e.g. 2024-06-15
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
caenlistoptional text Optional, codes separated by commas: any CAEN code — section (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. C,5610
gruparelistoptional text Optional, separated by commas: the source aggregates that are not CAEN codes — total or the merged division ranges (02-03, 38-39, 59-60, 62-63). Not sent together with caen. e.g. 02-03e.g. 38-39e.g. 59-60
forma_codlistoptional text Optional: total, sectiune, diviziune, interval, fara_cod. Only sections add up. totalsectiunediviziuneintervalfara_cod

How it behaves

  • The number of employees at month end, by NACE Rev.2 section and division — 21,216 values, monthly from January 2000 to December 2025, 312 months, in thousands of persons, from TEMPO matrix FOM105E.
  • It lines up with /financiar/v1/castig-salarial: the nomenclature is identical, checked row by row — 1 total, 19 sections, 43 divisions and 5 special rows. Until now the module had monthly earnings without a monthly headcount; this is the missing denominator.
  • ✅ total = the sum of the nineteen sections: 312 of 312 months. The sum is computed from the database, so it can be verified even when the response does not carry every section.
  • ⚠️ The INDUSTRIE row and the three ranges — 38-39, 59-60, 62-63 — are partial aggregates and do not enter the sum of sections. The forma_cod field separates them: total, sectiune, diviziune, interval, fara_cod.
  • For the same quantity annually, broken down by county and sex: /financiar/v1/salariati. For the ownership breakdown: /financiar/v1/salariati/proprietate.
  • 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 seasonality of employment in a branch, month by month.
  • A branch's monthly wage bill, multiplying headcount by the earnings of the same month.
  • A branch's turning point: the month it started shedding employees.

Response structure

FieldTypeDescription
data.unitate string The unit of the values. Read it before plotting or adding them up.
data.de_la string Start of the interval the response covers.
data.pana_la string End of the interval the response covers, inclusive.
data.filtre.forma_cod array
data.luni array Number of months covered.
data.serii[].caen string The CAEN (NACE) code of the activity, in the series revision.
data.serii[].forma_cod string What kind of row it is: only sectiune enters the total.
data.serii[].activitate string The economic activity the value refers to.
data.serii[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.serii[].luni_publicate integer How many months of the requested span carry a value at the source.
data.serii[].valori object The values of the series, by period.
data.identitati array The identity checks run on the values in the response.
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.serii_returnate integer How many series were actually returned, after filters and the cell ceiling.
meta.nota_nomenclator string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_anual 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. 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/salariati/lunar?de_la=2024-01&pana_la=2024-06&forma_cod=sectiune
{
    "data": {
        "unitate": "mii persoane",
        "de_la": "2024-01",
        "pana_la": "2024-06",
        "filtre": {
            "forma_cod": [
                "sectiune"
            ]
        },
        "luni": [
            "2024-01",
            "2024-02",
            "2024-03",
            "2024-04",
            "2024-05",
            "2024-06"
        ],
        "serii": [
            {
                "caen": "A",
                "forma_cod": "sectiune",
                "activitate": "A  AGRICULTURA, SILVICULTURA SI PESCUIT",
                "unitate": "mii persoane",
                "luni_publicate": 6,
                "valori": {
                    "2024-01": "121.9",
                    "2024-02": "122.1",
                    "2024-03": "122",
                    "2024-04": "122.5",
                    "2024-05": "122.6",
                    "2024-06": "122.6"
                }
            }
        ],
        "identitati": []
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — efectivul salariaţilor la sfârşitul lunii (TEMPO, matricea FOM105E).",
        "acoperire": {
            "de_la": "2000-01",
            "pana_la": "2025-12"
        },
        "serii_returnate": 19,
        "nota_nomenclator": "Aceleaşi 68 de rânduri ca la /financiar/v1/castig-salarial: numărul de salariaţi şi câştigul lor se pun cap la cap.",
        "nota_anual": "Aceeaşi mărime anual, cu defalcare pe judeţe şi sexe: /financiar/v1/salariati."
    }
}

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. interval_prea_lung — more than 360 months. raspuns_prea_mare — more than 20,000 cells. Plus a code, form or month outside the expected shape. 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. interval_prea_lung — more than 360 months. raspuns_prea_mare — more than 20,000 cells. Plus a code, form or month outside the expected shape. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}