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
nullrather 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 theEUaggregate and one each on BE and IE. Both prices are reported as published, but nothing is computed from them —taxe_din_pret_procentisnulland anatentionarefield appears. - Ordering is descending by date — the most recent week first. With a small
limitayou 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 theeurandnationalblocks. - 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 carriesperioadainstead ofdata, plussaptamaniandpartiala.limitacounts periods: 60 months or 20 years by default. - In an average, the
nationalblock appears only when the whole period is in one currency: in the year a country switched to the euro (Bulgaria, 2026) it isnull, because an average of lev and euro would not be a price. Theeurblock is always comparable. - Several countries on the same axis:
tari=RO,BG(10 at most) instead oftara. Each row carries itstara, sorted by date and then by country;limitaapplies per country. With exactly two countries,diferentagives 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."
}
}
}
GEThttps://oneapi.ro/api/carburanti/v1/preturi/serie?produs=benzina95&de_la=2021-01-01&pana_la=2023-12-31&limita=1200
{
"data": {
"tara": "RO",
"produs": "benzina95",
"granularitate": "saptamana",
"inregistrari": 152,
"serie": [
{
"tara": "RO",
"data": "2023-12-25",
"produs": "benzina95",
"denumire": "Benzină Euro-super 95",
"unitate": "1000l",
"eur": {
"cu_taxe": 1330.06,
"fara_taxe": 760.35,
"pe_litru_cu_taxe": 1.3301,
"pe_litru_fara_taxe": 0.7604
},
"national": {
"moneda": "RON",
"curs_eur_pe_unitate": 0.2011748612,
"cu_taxe": 6611.46,
"fara_taxe": 3779.55,
"pe_litru_cu_taxe": 6.6115,
"pe_litru_fara_taxe": 3.7795
},
"taxe_din_pret_procent": 42.83,
"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."
}
}
}
GEThttps://oneapi.ro/api/carburanti/v1/preturi/serie?produs=motorina&granularitate=luna&limita=24
{
"data": {
"tara": "RO",
"produs": "motorina",
"granularitate": "luna",
"inregistrari": 24,
"serie": [
{
"tara": "RO",
"perioada": "2026-09",
"produs": "motorina",
"denumire": "Motorină auto",
"unitate": "1000l",
"saptamani": 2,
"partiala": true,
"eur": {
"cu_taxe": 1970.6013,
"fara_taxe": 1228.3138,
"pe_litru_cu_taxe": 1.9706,
"pe_litru_fara_taxe": 1.2283
},
"national": {
"moneda": "RON",
"cu_taxe": 10354.3,
"fara_taxe": 6454.05,
"pe_litru_cu_taxe": 10.3543,
"pe_litru_fara_taxe": 6.4541
},
"taxe_din_pret_procent": 37.67
}
],
"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."
}
}
}
GEThttps://oneapi.ro/api/carburanti/v1/preturi/serie?produs=motorina&tari=RO,BG&granularitate=an&limita=5
{
"data": {
"tari": [
"RO",
"BG"
],
"produs": "motorina",
"granularitate": "an",
"inregistrari": 10,
"serie": [
{
"tara": "BG",
"perioada": "2026",
"produs": "motorina",
"denumire": "Motorină auto",
"unitate": "1000l",
"saptamani": 37,
"partiala": true,
"eur": {
"cu_taxe": 1556.0622,
"fara_taxe": 966.4242,
"pe_litru_cu_taxe": 1.5561,
"pe_litru_fara_taxe": 0.9664
},
"national": null,
"taxe_din_pret_procent": 37.89
}
],
"diferenta": [
{
"perioada": "2026",
"eur_cu_taxe": 241.6269,
"procent": 15.53
}
],
"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
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 422 | validare | 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. |
| 429 | cota_depasita | The 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."
]
}
}
}