Official Fuel Prices — France, Spain, Italy & Western Australia avatar

Official Fuel Prices — France, Spain, Italy & Western Australia

Pricing

from $0.50 / 1,000 price records

Go to Apify Store
Official Fuel Prices — France, Spain, Italy & Western Australia

Official Fuel Prices — France, Spain, Italy & Western Australia

Live fuel prices from official government open data (France, Spain, Italy, Western Australia) in one normalized schema. Search by radius, postal code, city, brand and fuel type; sort by price or distance. No API key.

Pricing

from $0.50 / 1,000 price records

Rating

0.0

(0)

Developer

SSTE

SSTE

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

Fuel Prices API — France, Spain, Italy & Western Australia (official data)

Official Fuel Prices returns current petrol (gasoline), diesel, LPG, CNG and hydrogen prices for ~46,000 fuel stations in France, Spain, Italy and Western Australia, taken directly from each government's open data, in one consistent JSON schema. Find the cheapest or nearest stations around coordinates, by postal code, city or brand — from the Apify Console, the REST API, Python/JavaScript, or any MCP-compatible AI agent.

No key for the government sources, no scraping of private sites, and every row carries its official source and licence.

CountryStationsFreshnessOfficial source
🇫🇷 France~9,800every ~10 minMinistère de l'Économie (DGCCRF)
🇪🇸 Spain~11,500every ~30 minMinisterio para la Transición Ecológica
🇮🇹 Italy~23,900daily snapshot (08:00 prices)Ministero delle Imprese e del Made in Italy (MIMIT)
🇦🇺 Western Australia~1,000one fixed price per dayFuelWatch, Government of WA

Try it: click Try for free, keep the prefilled input (cheapest diesel within 10 km of Madrid) and press Start. Results appear in seconds.

Docs and guides: fuel-prices-api.pages.dev — API reference, MCP for AI agents, Python and JavaScript tutorials.

Quick answers

  • Is there a fuel prices API for Europe? Yes — this Actor serves France, Spain and Italy (plus Western Australia) through one API, normalized to the same fields.
  • How do I get the cheapest fuel near a location? Send latitude, longitude, radiusKm and fuelTypes; results come sorted cheapest-first with distanceKm on each row.
  • Can an AI agent use it? Yes, as a tool through the Apify MCP server (Claude, ChatGPT, Cursor, VS Code and other MCP clients).
  • What does it cost? $0.005 per run + $0.0005 per price row. "Cheapest 10 stations near me" ≈ $0.01.
  • Where does the data come from? Only official government open-data feeds, reused under their licences (see Data sources).

What you can do

  • Find the cheapest station near a point — radius search, sorted by price or distance.
  • Monitor prices in an area — schedule runs hourly or daily and send results to Google Sheets, a webhook, S3 or your database through Apify integrations.
  • Compare brands or competitors — filter by brand around your own stations.
  • Build apps and dashboards — one integration instead of four different government formats.
  • Give an AI assistant real fuel prices — "Where is the cheapest diesel within 5 km of these coordinates?"

Coverage by country

France fuel prices (prix des carburants)

Gazole (diesel), SP95, SP95-E10, SP98, E85 and GPLc (LPG) for ~9,800 stations, updated about every 10 minutes from the DGCCRF instant feed. Each price has its own update timestamp. The French feed does not publish station names or brands.

Spain fuel prices (precio de la gasolina y el gasóleo)

Gasolina 95/98 (E5 and E10), Gasóleo A and Premium, GLP, GNC/GNL, hydrogen and renewable diesel for ~11,500 stations, refreshed about every 30 minutes by the Ministry. Includes brand (Rótulo) and a flag for members-only stations.

Italy fuel prices (prezzi carburanti)

Benzina, Gasolio, GPL, Metano, GNL and branded premium fuels for ~23,900 stations, from MIMIT's daily open-data snapshot (prices in force at 08:00 the previous day). Self-service and attended prices are separate rows (serviceType).

Western Australia fuel prices

Unleaded 91, Premium 95, 98 RON, Diesel, Brand diesel, LPG and E85 for ~1,000 FuelWatch stations. WA prices are fixed for the whole day from 06:00 AWST.

Quick start inputs

Cheapest diesel within 10 km of Madrid (top 20):

{ "latitude": 40.4168, "longitude": -3.7038, "radiusKm": 10, "fuelTypes": ["diesel"], "maxResults": 20 }

The country is detected from the coordinates, so only the Spanish feed is downloaded.

Paris, all fuels, prices updated in the last 24 h:

{ "countries": ["FR"], "postalCodes": ["75"], "maxPriceAgeHours": 24 }

Nearest stations in central Milan:

{ "latitude": 45.4642, "longitude": 9.19, "radiusKm": 3, "sortBy": "distance", "maxResults": 50 }

Competitor watch — Repsol and Cepsa stations in Málaga, unleaded 95:

{ "countries": ["ES"], "cities": ["Málaga"], "brands": ["repsol", "cepsa"], "fuelTypes": ["gasoline_95"] }

Perth, unleaded 91:

{ "latitude": -31.9523, "longitude": 115.8613, "radiusKm": 15, "fuelTypes": ["gasoline_91"] }

Use it from the API

You need an Apify account and API token (Console → Settings → API & Integrations). The synchronous endpoint runs the Actor and returns the rows in one HTTP call.

cURL

curl -X POST "https://api.apify.com/v2/acts/sste~official-fuel-prices/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"latitude":48.8566,"longitude":2.3522,"radiusKm":3,"fuelTypes":["diesel"],"maxResults":10}'

Python (pip install apify-client)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("sste/official-fuel-prices").call(run_input={
"latitude": 41.3874, "longitude": 2.1686, # Barcelona
"radiusKm": 5, "fuelTypes": ["gasoline_95"], "maxResults": 10,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["price"], row["currency"], row["brand"], row["address"], row["distanceKm"], "km")

JavaScript / Node.js (npm install apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('sste/official-fuel-prices').call({
latitude: 45.4642, longitude: 9.19, // Milan
radiusKm: 3, fuelTypes: ['diesel'], sortBy: 'distance', maxResults: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((r) => `${r.price} ${r.currency} — ${r.stationName ?? r.address} (${r.distanceKm} km)`));

Generated docs for this Actor: OpenAPI definition · Python · JavaScript · CLI.

Use it from AI agents (MCP)

Add the Actor as a tool through the hosted Apify MCP server:

https://mcp.apify.com?tools=sste/official-fuel-prices

Claude Desktop, Cursor or VS Code configuration (OAuth sign-in opens on first use):

{
"mcpServers": {
"fuel-prices": { "url": "https://mcp.apify.com?tools=sste/official-fuel-prices" }
}
}

Local alternative: npx @apify/actors-mcp-server --tools sste/official-fuel-prices (with APIFY_TOKEN set). More: MCP page for this Actor.

Example prompts an agent can answer with this tool:

  • "Find the 5 cheapest diesel stations within 5 km of 48.8566, 2.3522."
  • "What does unleaded 95 cost near the centre of Valencia today?"
  • "List the nearest LPG stations to Perth CBD with their prices."

Tips for agents: always pass fuelTypes and a small maxResults (the price is per row); pass coordinates rather than place names (there is no geocoding); prices are in the local currency and unit given by currency and unit.

Input

FieldTypeDescription
countriesarrayFR, ES, IT, AU-WA. Empty → auto-detected from the location, or all sources if no location.
fuelTypesarrayNormalized fuel types (see table below). Empty → all.
latitude, longitudenumberSearch centre (WGS84).
radiusKmnumber0.1–500, default 10. Adds distanceKm to each row.
postalCodesarrayPrefix match ("75", "28001"). FR and ES only.
citiesarrayExact city/suburb name, case- and accent-insensitive.
brandsarrayBrand contains any of these words. Not available for FR.
maxPriceAgeHoursintegerDrop prices older than this.
excludeRestrictedbooleanDrop Spanish members-only stations (cooperatives, fleets).
sortBystringprice (default, cheapest first within each fuel/currency), distance, none.
maxResultsinteger1–200,000, default 1,000. When sorting by price across several fuels, the limit is shared fairly so every fuel keeps its cheapest stations.

Invalid input fails immediately with a clear message (nothing is charged per row). If one government feed is temporarily unavailable, the run still returns the other countries and lists the failure in the SUMMARY record.

Output

One row = one fuel price at one station. Real example (Milan):

{
"id": "IT:56141:Benzina:full",
"country": "IT",
"region": "MI",
"city": "MILANO",
"postalCode": null,
"address": "Via Giuseppe Ripamonti 567 20142",
"stationId": "56141",
"stationName": "IP",
"brand": "Api-Ip",
"latitude": 45.4713,
"longitude": 9.1919,
"fuelType": "gasoline_95",
"fuelName": "Benzina",
"price": 1.99,
"currency": "EUR",
"unit": "L",
"serviceType": "full",
"accessRestricted": null,
"priceUpdatedAt": "2026-09-30T19:42:31+02:00",
"distanceKm": 0.8,
"sourceKey": "IT",
"source": "Ministero delle Imprese e del Made in Italy (MIMIT) — Osservaprezzi Carburanti",
"sourceUrl": "https://www.mimit.gov.it/it/open-data/elenco-dataset/carburanti-prezzi-praticati-e-anagrafica-degli-impianti",
"license": "IODL 2.0",
"fetchedAt": "2026-10-03T16:57:30.326Z"
}

A SUMMARY record in the run's key-value store lists per-source status, row counts, timings, warnings and the attribution for the sources used.

Normalized fuel types

fuelTypeFranceSpainItalyWestern Australia
gasoline_91———Unleaded Petrol (ULP)
gasoline_95SP95Gasolina 95 E5BenzinaPremium Unleaded
gasoline_95_e10E10Gasolina 95 E10——
gasoline_98SP98Gasolina 98 E5—98 RON
gasoline_98_e10—Gasolina 98 E10——
gasoline_premium—Gasolina 95 E5 Premiumbranded (Blue Super, V-Power…)—
e85E85Gasolina 95 E85—E85
dieselGazoleGasóleo AGasolio (incl. winter grades)Diesel
diesel_premium—Gasóleo Premiumbranded (Blue Diesel, Hi-Q…)Brand diesel
hvo—Diésel RenovableHVO, HVOlution…—
lpgGPLcGLPGPLLPG
cng (kg)—Gas Natural ComprimidoMetano, L-GNC—
lng (kg)—Gas Natural LicuadoGNL—
hydrogen (kg)—Hidrógeno——
other—Gasóleo B, biofuels…rare labels—

Coverage differences (what each government publishes)

FieldFRESITAU-WA
Station name✗✗✓✓
Brand✗✓✓✓
Postal code✓✓✗ (inside address)✗
Coordinates✓✓✓✓
Timestamp per price✓feed-level (every ~30 min)✓daily price, effective 06:00 AWST
Self vs attended price✗✗✓ (serviceType)✗
Members-only flag✗✓ (accessRestricted)✗✗

Fields a government does not publish are returned as null; nothing is guessed.

Pricing

Pay per event: $0.005 per run + $0.50 per 1,000 price rows ($0.0005 per row). The run fee is charged once per GB of memory; the default 512 MB is enough for every query.

Typical runRowsCost
Cheapest 10 stations near a point10≈ $0.01
A city, one fuel~200≈ $0.10
All of Spain, all fuels~40,000≈ $20

Use maxResults and filters to pay only for what you need. You can also set a maximum charge per run; the Actor stops cleanly when it is reached.

Data sources and licences

SourceLicenceAttribution
France — data.economie.gouv.fr, Prix des carburants en France – flux instantané v2 (DGCCRF)Licence Ouverte v2.0 (Etalab) — commercial reuse allowedSource in every row; priceUpdatedAt per price
Spain — MITECO/MINTUR REST service Precios de carburantes (Geoportal Gasolineras)Reuse of public-sector information, Ley 37/2007 — content not altered, source and update date citedSource + priceUpdatedAt in every row
Italy — MIMIT Carburanti – prezzi praticati e anagrafica degli impiantiIODL 2.0 — commercial reuse allowed with attributionSource in every row
Western Australia — FuelWatch RSSFree use on the condition that FuelWatch is acknowledged as the source with a link to www.fuelwatch.wa.gov.auSource + link in every row

This Actor is an independent tool and is not affiliated with or endorsed by any of these agencies. Prices are as published by the official sources; always confirm at the pump.

Limitations

  • France and Spain do not publish station names; France does not publish brands.
  • Italy publishes a daily snapshot (prices in force at 08:00 the previous day), not real-time prices.
  • Western Australia publishes one fixed price per day; stations outside the FuelWatch area are not required to report.
  • Distances are straight-line (haversine), not driving distance. There is no address geocoding: provide coordinates.
  • Austria, Germany, Portugal and the UK are not included yet.

FAQ

Is this scraping? No. The Actor downloads only the files and feeds the governments publish for reuse.

Do I need an API key for the government data? No. You only need an Apify account to run the Actor (via Console, API or MCP).

How fresh is the data? Each run downloads the latest official feed. priceUpdatedAt tells you when the price was last reported (FR/IT per price, ES per feed, WA per day).

Why are some French prices old? Some stations report rarely. Use maxPriceAgeHours to filter them out.

Can I get prices in miles per gallon or USD? No — prices are returned exactly as published: EUR (or AUD) per litre, or per kg for CNG, LNG and hydrogen.

Do you cover the US or Canada? No — this Actor only uses official government open data, and only for the four regions above.

I need another country. Open an issue on the Issues tab with the country and, ideally, a link to its official open-data feed.