oneapi
Sign in
Carburanti v1 / Carburanti

Compare across countries

The same fuel's price across several European markets in the same week — comparable, because the source publishes every country on the same calendar.

GET
https://oneapi.ro/api/carburanti/v1/compara

Query parameters

NameTypeDescriptionAccepted values
produsrequired string Product code. Required: a comparison across countries is made on a single product, because units differ (litres versus tonnes). benzina95motorinamotorina_incalzirepacura_sulf_micpacura_sulf_maregpl
tarioptional string | null Comma-separated country codes. Accepts EU / EA too. Defaults to RO,EU. max 200 car.
dataoptional string | null Reference date, YYYY-MM-DD. Defaults to the most recent week. e.g. 2026-08-31

How it behaves

  • 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.
  • All countries are compared in the same reference week — the last one published on or before the requested date. A country that did not report that week does not get an older price as a substitute; it appears in negasite. Without this rule, the United Kingdom (which stopped in 2020) would show up in a comparison of today with prices six years old.
  • If you include EU in the list, every result also gets fata_de_media_ue_procent. The average is not added automatically: it would not be right for a "country" you did not ask for to appear in the comparison.
  • Results are ordered ascending by the price with taxes, in euro — the only unit in which comparing across currencies makes sense.

What it is for

  • Decide where a fleet refuels on an international route, comparing the official price in the countries crossed.
  • Argue in a cost analysis why transport from one country is more expensive, showing the price and taxation gap.
  • Report where Romania stands against the EU average, with a figure anyone can verify.

Response structure

All fields below live inside data.

FieldTypeDescription
produs string Produsul comparat.
ceruta string Data cerută.
saptamana string Săptămâna de referință folosită pentru toate țările.
rezultate[] object Aceeași structură ca un element din data.produse[] la GET /preturi, ordonată crescător după preț.
rezultate[].fata_de_media_ue_procent number Abaterea față de media UE, în procente. Prezent doar dacă ai cerut și EU.
negasite[] string Requested countries with no publication in the reference week. They are listed, not silently dropped.
sursa object Sursa și licența.
rezultate[].tara string The country code.
rezultate[].data string The week the price refers to (the bulletin's Monday).
rezultate[].produs string The product code.
rezultate[].denumire string The product name.
rezultate[].unitate string The unit the product is quoted in: 1,000 litres for road fuels, 1,000 kg for heavy fuel oil.
rezultate[].eur.cu_taxe number The price in euro, all taxes included, per quoted unit.
rezultate[].eur.fara_taxe number The price in euro, excluding taxes.
rezultate[].eur.pe_litru_cu_taxe number The same price brought to a litre — null for products quoted per tonne.
rezultate[].eur.pe_litru_fara_taxe number The tax-free price, per litre.
rezultate[].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.
rezultate[].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.
rezultate[].national.cu_taxe number The price in national currency, with taxes.
rezultate[].national.fara_taxe number The price in national currency, without taxes.
rezultate[].national.pe_litru_cu_taxe number The national price per litre, with taxes.
rezultate[].national.pe_litru_fara_taxe number The national price per litre, without taxes.
rezultate[].taxe_din_pret_procent number What percentage of the final price is tax — the most quoted figure from a bulletin.

Response examples

GEThttps://oneapi.ro/api/carburanti/v1/compara?produs=motorina&tari=RO,BG,HU
{
    "data": {
        "produs": "motorina",
        "ceruta": "2026-09-14",
        "saptamana": "2026-09-14",
        "rezultate": [
            {
                "tara": "BG",
                "data": "2026-09-14",
                "produs": "motorina",
                "denumire": "Motorină auto",
                "unitate": "1000l",
                "eur": {
                    "cu_taxe": 1856.3,
                    "fara_taxe": 1216.6221,
                    "pe_litru_cu_taxe": 1.8563,
                    "pe_litru_fara_taxe": 1.2166
                },
                "national": null,
                "taxe_din_pret_procent": 34.46,
                "atentionare": null
            }
        ],
        "negasite": [],
        "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, or tari contains an unknown code — the message names it.
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, or tari contains an unknown code — the message names it.",
        "detalii": {
            "produs": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}