EU Fuel Prices: Spain, France, Italy (official open data) avatar

EU Fuel Prices: Spain, France, Italy (official open data)

Pricing

from $2.00 / 1,000 fuel station scrapeds

Go to Apify Store
EU Fuel Prices: Spain, France, Italy (official open data)

EU Fuel Prices: Spain, France, Italy (official open data)

Current petrol, diesel, LPG and CNG prices of ~45,000 fuel stations in Spain, France and Italy in ONE normalized format. Official open data. Search by radius, city or postcode; track price changes.

Pricing

from $2.00 / 1,000 fuel station scrapeds

Rating

0.0

(0)

Developer

L Braam

L Braam

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

EU Fuel Prices: Spain, France, Italy (official open data, one format)

Current petrol, diesel, LPG, CNG, E85 and more for about 45,000 fuel stations in Spain, France and Italy, in one normalized format. The data comes straight from each country's official open-data feed, so there is no scraping of consumer websites and no login.

Every country publishes its prices in a different shape: different field names, decimal commas, time zones, fuel names and unit conventions. This Actor removes that work. You ask "cheapest diesel within 15 km of Girona" or "every LPG station in Italy" and get the same clean fields for every country.

What you can do with it

  • Find the cheapest fuel near a point (radius search) or in a city, province or postcode area.
  • Price alerts and monitoring: switch on Only new stations and price changes since my last run, schedule the Actor daily, and receive only what changed, with the previous price included.
  • Compare countries: national min, median and average per fuel type are added to every run summary.
  • Feed apps, spreadsheets, dashboards and fleet or trip-planning tools with a consistent structure, as JSON, CSV, Excel or via API.
  • Track alternative fuels: LPG (autogas), CNG, LNG, E85, HVO and hydrogen where the country reports them.

Data sources

CountryOfficial sourceStations
SpainMinisterio para la Transición Ecológica (Geoportal Gasolineras)~11,500
Francedata.economie.gouv.fr, "Prix des carburants en France, flux instantané"~9,800
ItalyMIMIT (Ministero delle Imprese e del Made in Italy), price and station registry files~24,000

Every record carries a dataSource field with the publisher and licence, and dataUpdatedAt with the publication time of the government data set.

Not included: Portugal (the DGEG portal does not allow commercial use without an agreement), Germany (the official feed needs a personal API key) and Austria (feed was unavailable when this Actor was built).

Normalization

  • One list of fuel types: petrol95, petrol95E10, petrolPremium, petrol98, diesel, dieselPremium, lpg, cng, lng, e85, hvo, hydrogen. The original name from the source is kept in label.
  • Prices as numbers in EUR per litre (EUR per kg for CNG, LNG and hydrogen), with unit on every price.
  • Timestamps in UTC (ISO 8601). Local times of each source are converted correctly, including summer and winter time.
  • Stale prices are dropped by default: a station that has not updated a price for more than 7 days is ignored (change with Ignore prices older than, 0 keeps everything).
  • Typing errors in the source are dropped: prices outside a plausible range (for example 18.79 EUR/L) and impossible coordinates are removed, not passed on.
  • Italy: the self-service price is used when available; the price with service is kept in servedPrice.
  • Spain: stations that sell only to members or fleets are excluded unless you turn on Include stations that are not open to the public.

Input

FieldWhat it does
CountriesES, FR, IT. Each selected country is loaded completely and then filtered.
Fuel typesOnly these fuels (empty = all). With several, price sorting uses the first.
Latitude, longitude, radiusOnly stations within the radius. Results are sorted nearest first.
City, province or street containsAccent-insensitive text match.
Postal code starts withOne or more prefixes, for example 08 or 75.
BrandsFor example repsol, total, eni, galp.
Maximum priceDrops prices above this value.
Ignore prices older thanDays. Default 7. 0 = keep all.
Include stations not open to the publicDefault off.
Sort byAutomatic, price, distance or none.
Output formatOne record per station, or one flat row per station and fuel.
Only new stations and price changesChange tracking between runs (see below).
Tracking nameSeparate memory per watch list, for change tracking.
Maximum resultsSafety cap on cost. Default 100.
ProxyOptional. Normally not needed.

Example: cheapest diesel near Barcelona

{
"countries": ["ES"],
"fuelTypes": ["diesel"],
"latitude": 41.3874,
"longitude": 2.1686,
"radiusKm": 15,
"sortBy": "price",
"maxItems": 20
}

Example output (one record per station)

{
"country": "ES",
"stationId": "ES-4375",
"name": "Nº 10.935",
"brand": "Nº 10.935",
"address": "AVENIDA CASTILLA LA MANCHA, 26",
"postalCode": "02250",
"city": "ABENGIBRE",
"province": "Albacete",
"latitude": 39.211417,
"longitude": -1.539167,
"open24h": false,
"openingHours": "L-D: 07:00-22:00",
"distanceKm": null,
"prices": {
"diesel": { "price": 1.879, "unit": "EUR/L", "updatedAt": "2026-09-21T08:38:32.000Z", "label": "Gasoleo A" },
"petrol95": { "price": 1.849, "unit": "EUR/L", "updatedAt": "2026-09-21T08:38:32.000Z", "label": "Gasolina 95 E5" }
},
"dataSource": "Ministerio para la Transición Ecológica y el Reto Demográfico (Spain), Geoportal de Hidrocarburos",
"dataUpdatedAt": "2026-09-21T08:38:32.000Z",
"scrapedAt": "2026-09-21T09:00:00.000Z"
}

With One row per station and fuel, each fuel becomes its own row (fuelType, price, unit, updatedAt, ...), which is the easiest shape for spreadsheets and databases.

Price changes and alerts

Turn on Only new stations and price changes since my last run and schedule the Actor (for example every morning). The first run returns everything. Later runs return only stations that are new or whose price for your chosen fuels changed, each with a changes list such as { "fuelType": "diesel", "previousPrice": 1.86, "price": 1.879 }. Runs with no changes return nothing and cost nothing.

The remembered prices are stored per country in your own account (a named key-value store called eu-fuel-prices-state). Give each scheduled task with different filters its own Tracking name, so their remembered prices do not mix.

Run summary

Every run saves a SUMMARY record: per country the status, number of stations, and the national min, median, average and max for each fuel type. If one country's source is down, the other countries still complete and the summary tells you which one failed.

Pricing

Pay per result: a small fee per station returned (or per price row in the row format). You only pay for what is delivered, and Maximum results caps the cost of a run. Runs with no results, and runs that fail, are not charged for results.

Limits and honest notes

  • Prices are what stations report to their government. The Actor cannot see if a pump is out of stock, and reporting delays of hours to days exist, especially in Italy and France.
  • Government servers can change their format or be down for maintenance. If a source fails, the affected country is reported as failed in the summary while other countries continue.
  • Some government servers may refuse traffic from outside their country. If that happens, choose Apify Proxy with a country in the Proxy field.
  • This Actor is not affiliated with, endorsed by or sponsored by any government body. It reuses public data under the sources' own terms: France under the Licence Ouverte 2.0, Italy under the Italian Open Data License (IODL 2.0), Spain under the Ministry's reuse conditions (cite the source, keep the update date, no suggestion of official endorsement). If you redistribute the data yourself, keep the dataSource attribution and check the licence links above. This is not legal advice.
  • Fuel stations are businesses, not people. No personal data is collected.

Support

Something not working or a country you need? Open an issue from the Actor page and include the run link.