CatalogPublic data ›Mobility

Fuel — the cheapest fill-up near you

The cheapest station near you, with the official prices Italy's Ministry of Enterprise collects from every fuel station and republishes every morning. Pick your fuel and province: see where it costs less, on the map and in a table.

▶ Use this app

fuelpetroldiesellpgmethanepricesstationsmapsavingsitaly

What it records

  • Province code

How it works

This is a Reactive app: a plain text document that your browser turns into a working app — forms, live data, tables, statistics and even charts, with nothing to install or configure.

  1. Use it right away. Hit “Use this app”: it opens right in your browser, ready to go, with data saved only on your device.
  2. Your data stays yours. Everything is stored locally on your device, kept separate for each app: no account, no server, nothing to set up.
  3. Make it your own. The text below is the entire app: copy it, tweak fields, views and words, and your changes become interactive instantly.
  4. Share it as a file. An app is a simple file: save it, export it or share it with a link; and with encrypted collaboration several people edit the same data in real time.
The app’s source
# ⛽ Fuel

The cheapest station near you, with the official prices Italy's Ministry of
Enterprise collects from every fuel station and republishes every morning.
Pick your fuel and province: see where it costs less, on the map and in a table.

## What you need

Choose the fuel type:

::radio{id="carb-benzina" name="carburante" value="Benzina" label="Petrol" checked="true"}
::radio{id="carb-gasolio" name="carburante" value="Gasolio" label="Diesel"}
::radio{id="carb-gpl" name="carburante" value="GPL" label="LPG"}
::radio{id="carb-metano" name="carburante" value="Metano" label="Methane"}

And your province (two-letter code, e.g. `MI`, `TO`, `NA`):

::input[prov]{value="MI" placeholder="Province code"}

## The cheapest

The ten stations where **self-service** :value[c]{ref="#carburante"} costs least in
province :value[p]{ref="#prov"}. The price is the latest reported by each operator.

::od-query{into="distributori" sql="SELECT i.bandiera AS brand, i.comune AS town, i.indirizzo AS address, p.prezzo AS price, i.latitudine AS latitudine, i.longitudine AS longitudine FROM carb_prezzi p JOIN carb_impianti i USING (id_impianto) WHERE p.carburante = '{#carburante}' AND i.provincia = upper(trim('{#prov}')) AND p.self AND p.prezzo > 0 ORDER BY p.prezzo LIMIT 10" limit="10"}

:::table{path="distributori" headers="Brand,Town,Address,€/litre" search="false"}
{brand} | {town} | {address} | {price}
:::

## On the map

Each pin is a station: tap for brand and price. The map centres itself on the
results.

:::map{path="distributori" lat="latitudine" lon="longitudine" height="24rem"}
**{brand}** · {price} €/litre
{town} — {address}
:::

---

Prices are the open data of the **fuel price observatory** run by Italy's Ministry
of Enterprise and Made in Italy (IODL 2.0 licence), updated daily. It is a
snapshot, not a history: what you see is the latest price each operator reported.
None of your data leaves the device.