oneapi
Sign in
Financiar v1 / Inflatie

External trade by product

FOB exports and CIF imports on the Combined Nomenclature, at national level, annually from 1991 to 2025, in dollars and euro. 188,445 values from the TEMPO matrices EXP101E/EXP102D (sections and chapters) and EXP101F/EXP102F (four-digit headings).

Three nomenclature levels over the same total: 22 sections, 97 chapters and 1,260 headings for exports (1,358 for imports). They are not additive with one another; nivel_nc picks one, and the first two digits of a heading are its chapter, given in capitol.

⚠️ The deeper you go into the nomenclature, the later the breakdown becomes complete. Measured across the whole series, with a RELATIVE threshold (0.01% — at values in the order of a hundred billion thousands, an absolute threshold would mean nothing): the sections close the total in 35 of 35 years on three of the four flow × partner combinations and 34/35 on the fourth (the real deviation is in 1996); the chapters only from 2024, with deviations of up to 2.12% for exports and 2.89% for imports in the older years; the headings from 2024 for exports and 2025 for imports, their number rising from 742 in 1991 to 1,170 in 2024.

⚠️ partener=uniunea_europeana exists only for sections and chapters — the four-digit headings do not have that breakdown. Requested on them, the answer is an explicit refusal, not an empty list.

⚠️ Exports and imports do not have the same number of headings: we import goods on nomenclature lines on which we export nothing.

GET
https://oneapi.ro/api/financiar/v1/comert-exterior/produse

Query parameters

NameTypeDescriptionAccepted values
nivel_ncoptional string | null Optional: total (default), sectiune, capitol, pozitie. totalsectiunecapitolpozitie
parteneroptional string | null Optional: total (default) or uniunea_europeana, on sections and chapters only. totaluniunea_europeana
monedaoptional string | null Optional: eur (default) or usd. usdeur
de_laoptional integer | null Optional, a year, from 1991. 1991 – 2100
pana_laoptional integer | null Optional, a year. 1991 – 2100
fluxlistoptional text Optional: export, import. Both by default. exportimport
nclistoptional text Optional: sections in Roman numerals, two-digit chapters, four-digit headings or total. e.g. total

How it behaves

  • Exports FOB and imports CIF on the Combined Nomenclature, nationally, annually from 1991 to 2025, in dollars and euro. 188,445 values from TEMPO matrices EXP101E/EXP102D (sections and chapters) and EXP101F/EXP102F (four-digit headings).
  • Three levels over the same total: 22 sections, 97 chapters and 1,260 headings for exports / 1,358 for imports. They do not add together — nivel_nc picks one. The first two digits of a heading are its chapter, returned in capitol, so grouping needs no second request.
  • ⚠️ The deeper you go in the nomenclature, the later the breakdown becomes complete. Measured across the whole series with a relative threshold (0.01% — at values in the order of 100 billion thousands, an absolute one would mean nothing): sections close the total in 35 of 35 years on three of the four flux × partner combinations and 34/35 on the fourth, the only real gap being 1996; chapters close only from 2024, with gaps up to 2.12% for exports and 2.89% for imports in earlier years; headings from 2024 for exports and 2025 for imports. This is not an error — it is the source breakdown filling in over time, and identitati says from which year, per flow.
  • ⚠️ partener=uniunea_europeana exists only on sections and chapters. Four-digit headings have no such split; asked for on them, the response is an explicit refusal, not an empty list.
  • ⚠️ Exports and imports do not have the same number of headings — 1,260 against 1,358: we import goods on nomenclature lines we export nothing on. The nomenclature’s fluxuri says which flow each code appears on.
  • The number of published headings rises from 742 in 1991 to 1,170 in 2024 — another sign that the detail deepens over time.
  • Against /financiar/v1/comert-exterior/judete, this series is annual and reaches back to 1991 but stops at national level; that one is monthly, from 2011, and goes down to county.

What it is for

  • What Romania actually exports, by fine product group, across thirty-five years.
  • Dependence on a single nomenclature heading — passenger cars, for instance.
  • How much of a section’s trade goes to the European Union.
  • Export against import on the same heading, as a measure of specialisation.

Response structure

FieldTypeDescription
data.de_la integer Start of the interval the response covers.
data.pana_la integer End of the interval the response covers, inclusive.
data.unitate string The unit of the values. Read it before plotting or adding them up.
data.filtre.nivel_nc string
data.filtre.partener string
data.filtre.moneda string Currency the values are expressed in.
data.ani array Years for which values exist.
data.serii[].flux string Direction of the flow (usually import or export).
data.serii[].nc string Code from the Combined Nomenclature of goods.
data.serii[].nivel_nc string total, sectiune, capitol or pozitie. Levels do not add together.
data.serii[].denumire string The name, exactly as the source publishes it.
data.serii[].partener string
data.serii[].moneda string Currency the values are expressed in.
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.sectiune.identitate string The identity being checked — which sum must equal which total.
data.identitati.sectiune.toleranta string How much deviation is accepted before the identity counts as unclosed — the source rounding, not an error.
data.identitati.sectiune.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.sectiune.pe_flux[].flux string Direction of the flow (usually import or export).
data.identitati.sectiune.pe_flux[].verificari integer How many combinations were checked.
data.identitati.sectiune.pe_flux[].inchise integer How many checks closed within tolerance.
data.identitati.sectiune.pe_flux[].primul_an_complet integer
data.identitati.sectiune.pe_flux[].abatere_maxima_procente string
data.identitati.capitol.identitate string The identity being checked — which sum must equal which total.
data.identitati.capitol.toleranta string How much deviation is accepted before the identity counts as unclosed — the source rounding, not an error.
data.identitati.capitol.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.capitol.pe_flux[].flux string Direction of the flow (usually import or export).
data.identitati.capitol.pe_flux[].verificari integer How many combinations were checked.
data.identitati.capitol.pe_flux[].inchise integer How many checks closed within tolerance.
data.identitati.capitol.pe_flux[].primul_an_complet integer
data.identitati.capitol.pe_flux[].abatere_maxima_procente string
data.identitati.pozitie.identitate string The identity being checked — which sum must equal which total.
data.identitati.pozitie.toleranta string How much deviation is accepted before the identity counts as unclosed — the source rounding, not an error.
data.identitati.pozitie.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.pozitie.pe_flux[].flux string Direction of the flow (usually import or export).
data.identitati.pozitie.pe_flux[].verificari integer How many combinations were checked.
data.identitati.pozitie.pe_flux[].inchise integer How many checks closed within tolerance.
data.identitati.pozitie.pe_flux[].primul_an_complet integer
data.identitati.pozitie.pe_flux[].abatere_maxima_procente string
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.unitate string Unit of measure of the values. Read it before plotting or summing them.
meta.nota_implicit string Which value was used when the parameter was not sent.
meta.nota_completitudine string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_partener string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_lista string What the list contains and what it does not — its limits.
data.serii[].capitol The chapter the heading belongs to — the first two digits of the code.
data.identitati[].primul_an_complet The first year in the requested window where the level actually closes the total.
data.identitati[].abatere_maxima_procente How far the level’s sum falls from the total, in percent.
meta.fara_date data is null and this says why. The projection over the INS data is empty. The code does not appear; the list is in the nomenclature. The European Union split asked for on headings. The combination has no series; note that a heading may exist on only one flow. As for 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.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/comert-exterior/produse
{
    "data": {
        "de_la": 1991,
        "pana_la": 2025,
        "unitate": "mii EUR",
        "filtre": {
            "nivel_nc": "total",
            "partener": "total",
            "moneda": "eur"
        },
        "ani": [
            1991,
            1992,
            1993,
            1994,
            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": [
            {
                "flux": "export",
                "nc": "total",
                "nivel_nc": "total",
                "denumire": "Total",
                "partener": "total",
                "moneda": "eur",
                "unitate": "mii EUR",
                "ani_publicati": 35,
                "valori": {
                    "1991": "3489858",
                    "1992": "3359271",
                    "1993": "4177663",
                    "1994": "5186059",
                    "1995": "6117452",
                    "1996": "6452031",
                    "1997": "7468009",
                    "1998": "7398689",
                    "1999": "7976964",
                    "2000": "11273261",
                    "2001": "12722016",
                    "2002": "14674863",
                    "2003": "15613750",
                    "2004": "18934970",
                    "2005": "22255071",
                    "2006": "25850493",
                    "2007": "29548996",
                    "2008": "33724569",
                    "2009": "29084243",
                    "2010": "37360259",
                    "2011": "45291534",
                    "2012": "45069165",
                    "2013": "49562143",
                    "2014": "52466038",
                    "2015": "54609772",
                    "2016": "57392244",
                    "2017": "62644081",
                    "2018": "67723429",
                    "2019": "69001757",
                    "2020": "62173542",
                    "2021": "74704514",
                    "2022": "91944576",
                    "2023": "93093215",
                    "2024": "92674721",
                    "2025": "96607742"
                }
            }
        ],
        "identitati": {
            "sectiune": {
                "identitate": "suma nivelului `sectiune` = totalul",
                "toleranta": "relativă, 0.0001 din total",
                "nota": "Prag RELATIV, nu absolut: la valori de ordinul a 100 de miliarde de mii, un prag fix n-ar însemna nimic. Măsurat pe toată seria: 35/35 de ani pe trei din cele patru combinaţii flux × partener, 34/35 pe a patra (1996)",
                "pe_flux": [
                    {
                        "flux": "export",
                        "verificari": 35,
                        "inchise": 32,
                        "primul_an_complet": 1991,
                        "abatere_maxima_procente": "0.02"
                    }
                ]
            },
            "capitol": {
                "identitate": "suma nivelului `capitol` = totalul",
                "toleranta": "relativă, 0.0001 din total",
                "nota": "Prag RELATIV, nu absolut: la valori de ordinul a 100 de miliarde de mii, un prag fix n-ar însemna nimic. Măsurat pe toată seria: doar din 2024 — 2 ani din 35; abateri de până la 2,12% la export şi 2,89% la import în anii vechi",
                "pe_flux": [
                    {
                        "flux": "export",
                        "verificari": 35,
                        "inchise": 2,
                        "primul_an_complet": 2024,
                        "abatere_maxima_procente": "2.10"
                    }
                ]
            },
            "pozitie": {
                "identitate": "suma nivelului `pozitie` = totalul",
                "toleranta": "relativă, 0.0001 din total",
                "nota": "Prag RELATIV, nu absolut: la valori de ordinul a 100 de miliarde de mii, un prag fix n-ar însemna nimic. Măsurat pe toată seria: din 2024 la export şi din 2025 la import; numărul poziţiilor creşte de la 742 în 1991 la 1.170 în 2024",
                "pe_flux": [
                    {
                        "flux": "export",
                        "verificari": 35,
                        "inchise": 2,
                        "primul_an_complet": 2024,
                        "abatere_maxima_procente": "2.10"
                    }
                ]
            }
        }
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — comerţul internaţional pe secţiuni, capitole şi grupe ale Nomenclatorului Combinat (TEMPO, matricile EXP101E, EXP102D, EXP101F şi EXP102F).",
        "acoperire": {
            "de_la": 1991,
            "pana_la": 2025
        },
        "serii_returnate": 2,
        "unitate": "mii EUR",
        "nota_implicit": "Fără `nivel_nc`, răspunsul ar amesteca cele trei niveluri de nomenclator, care acoperă aceleaşi mărfuri. Implicit se întoarce totalul.",
        "nota_completitudine": "⚠️ Defalcarea sursei se completează în timp: secţiunile închid totalul pe toată seria, capitolele şi poziţiile abia din 2024. `identitati` spune din ce an, pe fiecare flux.",
        "nota_partener": "Defalcarea pe Uniunea Europeană se publică doar pe secţiuni şi capitole.",
        "nota_lista": "Nomenclatorul complet, pe niveluri: /financiar/v1/comert-exterior/nomenclator."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatMissing or invalid token.
403feature_indisponibilfinanciar.indici is not in the current plan.
422raspuns_prea_mareOver 20,000 cells; the 1,260 headings across the whole series far exceed the cap. Plus flux, code, level, partner or currency outside the list.
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": "raspuns_prea_mare",
        "mesaj": "Over 20,000 cells; the 1,260 headings across the whole series far exceed the cap. Plus flux, code, level, partner or currency outside the list.",
        "detalii": {
            "nivel_nc": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}