oneapi
Sign in
Carburanti v1 / Carburanti

Series for a product

A fuel's price history from 2005 onwards, week by week, for one country or several at once.

GET
https://oneapi.ro/api/carburanti/v1/preturi/serie

Query parameters

NameTypeDescriptionAccepted values
taraoptional string | null Country code. Defaults to RO. Cannot be combined with tari. ATBEBGCYCZDEDKEEESFIFRGRHRHUIEITLTLULVMTNLPLPTROSESISKUKEUEA
tarioptional string | null Several countries, comma-separated, 10 at most. With exactly two, diferenta appears as well. max 60 car.
granularitateoptional string | null saptamana (week, the default), luna (month) or an (year): the mean of the weekly quotations per period. saptamanalunaan
produsrequired string Product code. Required — a series "of all products" would be four series mixed together. benzina95motorinamotorina_incalzirepacura_sulf_micpacura_sulf_maregpl
de_laoptional string | null First week included, YYYY-MM-DD. e.g. 2020-01-01
pana_laoptional string | null Last week included, YYYY-MM-DD. e.g. 2026-08-31
limitaoptional integer | null How many weeks or periods to return per country, maximum 1200. Defaults to 260 weeks, 60 months or 20 years. 1 – 1200

How it behaves

  • The weekly series has gaps, and they belong to the source. Of the 1,082 weeks published between 2005 and today, 37 intervals skip a week or two: 17 resume in January and 15 in April — the Commission does not publish the bulletin during the Christmas and Easter weeks. These are not failed imports. If you plot a weekly chart, expect the breaks and do not fill them by interpolation: no quotation existed in those weeks.
  • Two known source inconsistencies, handled explicitly. (1) The bulletin has 2 rows with both prices at 0.00 (Slovakia, fuel oil, 2006-05-01) — missing data published as zero. We serve those as null rather than as a price, and build nothing on top of them. (2) In 32 rows, all fuel oil, the price WITH taxes is lower than the price WITHOUT, which would imply a negative tax: 30 on the EU aggregate and one each on BE and IE. Both prices are reported as published, but nothing is computed from them — taxe_din_pret_procent is null and an atentionare field appears.
  • Ordering is descending by date — the most recent week first. With a small limita you therefore get the recent end of the series, not its beginning.
  • The full series for a product has over 1,100 weeks. The default is 260 (about five years); the maximum is 1,200, i.e. the whole series.
  • Romania enters the series on 2008-01-07; other countries start in 2005. The United Kingdom is present until 2020-12-21 and then stops.
  • Each element has the same shape as a product in /preturi, including the eur and national blocks.
  • The monthly or yearly average (granularitate=luna|an) is the simple mean of the weekly quotations in the period, block by block. The element then carries perioada instead of data, plus saptamani and partiala. limita counts periods: 60 months or 20 years by default.
  • In an average, the national block appears only when the whole period is in one currency: in the year a country switched to the euro (Bulgaria, 2026) it is null, because an average of lev and euro would not be a price. The eur block is always comparable.
  • Several countries on the same axis: tari=RO,BG (10 at most) instead of tara. Each row carries its tara, sorted by date and then by country; limita applies per country. With exactly two countries, diferenta gives the evolution of the gap between them directly.

What it is for

  • Chart the evolution of the diesel price over five years to justify renegotiating a transport rate.
  • Compute a quarterly average for a cost report, starting from public figures.
  • Feed a chart in an internal dashboard without scraping anything.

Response structure

All fields below live inside data.

FieldTypeDescription
tara string Țara pentru care e seria, la tara.
tari string[] Țările, la tari.
produs string Produsul.
granularitate string saptamana | luna | an.
inregistrari integer Câte rânduri conține răspunsul.
serie[] object Aceeași structură ca un element din data.produse[] la GET /preturi; la medie, cu perioada, saptamani, partiala.
diferenta[] object[] Only with exactly two countries in tari: the difference between the first and the second, for every week or period both published.
sursa object Sursa și licența.
serie[].tara string The country code.
serie[].data string The week the price refers to (the bulletin's Monday); only at saptamana granularity.
serie[].perioada string The month (YYYY-MM) or year (YYYY) of the average; only at luna and an.
serie[].saptamani integer How many weekly quotations the average was computed on; only at luna and an.
serie[].partiala boolean true when the period extends beyond the weeks fetched — the current month, the start of the series or an edge cut by de_la/pana_la. A partial average is not the month's or the year's average.
serie[].produs string The product code.
serie[].denumire string The product name.
serie[].unitate string The unit the product is quoted in: 1,000 litres for road fuels, 1,000 kg for heavy fuel oil.
serie[].eur.cu_taxe number The price in euro, all taxes included, per quoted unit.
serie[].eur.fara_taxe number The price in euro, excluding taxes.
serie[].eur.pe_litru_cu_taxe number The same price brought to a litre — null for products quoted per tonne.
serie[].eur.pe_litru_fara_taxe number The tax-free price, per litre.
serie[].national.moneda string The country's national currency at that date. It changes over time: states that adopted the euro have series in two currencies.
serie[].national.curs_eur_pe_unitate number The exchange rate the source used. When it is missing or 1.0, the country was already on the euro — that is how we derive the currency, not from a table.
serie[].national.cu_taxe number The price in national currency, with taxes.
serie[].national.fara_taxe number The price in national currency, without taxes.
serie[].national.pe_litru_cu_taxe number The national price per litre, with taxes.
serie[].national.pe_litru_fara_taxe number The national price per litre, without taxes.
serie[].taxe_din_pret_procent number What percentage of the final price is tax — the most quoted figure from a bulletin.
diferenta[].perioada string The week, month or year.
diferenta[].eur_cu_taxe number The first country minus the second, in euro with taxes, per quoted unit.
diferenta[].procent number The same difference, as a percentage of the second country's price.

Response examples

GEThttps://oneapi.ro/api/carburanti/v1/preturi/serie?produs=motorina&limita=52
{
    "data": {
        "tara": "RO",
        "produs": "motorina",
        "granularitate": "saptamana",
        "inregistrari": 52,
        "serie": [
            {
                "tara": "RO",
                "data": "2026-09-14",
                "produs": "motorina",
                "denumire": "Motorină auto",
                "unitate": "1000l",
                "eur": {
                    "cu_taxe": 1999.6937,
                    "fara_taxe": 1252.5434,
                    "pe_litru_cu_taxe": 1.9997,
                    "pe_litru_fara_taxe": 1.2525
                },
                "national": {
                    "moneda": "RON",
                    "curs_eur_pe_unitate": 0.1902297976,
                    "cu_taxe": 10511.99,
                    "fara_taxe": 6584.37,
                    "pe_litru_cu_taxe": 10.512,
                    "pe_litru_fara_taxe": 6.5844
                },
                "taxe_din_pret_procent": 37.36,
                "atentionare": null
            }
        ],
        "sursa": {
            "nume": "European Commission — Weekly Oil Bulletin (DG ENER)",
            "licenta": "CC BY 4.0 (Decizia 2011/833/UE)",
            "observatie": "Prețuri medii naționale raportate de statele membre pentru săptămâna indicată, nu prețuri per stație de alimentare."
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareprodus is missing, limita exceeds 1200, tari has an unknown code or more than 10 countries, tara is combined with tari, or granularitate is not saptamana/luna/an.
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": "validare",
        "mesaj": "produs is missing, limita exceeds 1200, tari has an unknown code or more than 10 countries, tara is combined with tari, or granularitate is not saptamana/luna/an.",
        "detalii": {
            "tara": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}