France Fuel Prices (Open Data)
Pricing
from $2.00 / 1,000 fuel stations
France Fuel Prices (Open Data)
Cheapest petrol and diesel in France: search stations by area, nearby GPS search, and min/median/max price statistics for gazole, SP95, SP98, E10, E85, GPLc, with each price's update date. Official open data, unofficial tool, no personal data.
Pricing
from $2.00 / 1,000 fuel stations
Rating
0.0
(0)
Developer
Shadow Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Security
Limited permissionsShare
Call this Actor to find where fuel is cheapest in France and what the average price is: gazole (diesel), SP95, SP98, E10, E85 and GPLc, per station, from the official French open data (prix-carburants.gouv.fr). Use search for an area (department, region, postcode, city) or all of France, nearby when you have GPS coordinates and a radius, and stats for min / median / mean / max price per fuel (optionally per department or region). Every price carries its last update timestamp and age in days, and maxPriceAgeDays drops stale prices.
Minimal input per mode
| Mode | Minimal input | What comes back |
|---|---|---|
search | {"fuel": "gazole", "department": ["69"], "maxPriceAgeDays": 3, "maxResults": 5} | the 5 cheapest diesel stations of the Rhône with a fresh price |
nearby | {"mode": "nearby", "fuel": "e10", "latitude": 45.764, "longitude": 4.835, "radiusKm": 5, "maxResults": 5} | cheapest E10 within 5 km, with distanceKm |
stats | {"mode": "stats", "fuel": "gazole", "groupBy": "department", "maxPriceAgeDays": 3} | one record per department: min / median / mean / max, station counts, freshness |
An empty input {} works too: it returns 20 stations with all their prices.
Short real output (nearby, 5 Nov 2026, shortened; the full record also has services, openingHours, fuels[] and attribution):
{"type": "station", "stationId": "69008008", "address": "86 AVENUE JEAN MERMOZ", "postcode": "69008", "city": "Lyon", "departmentCode": "69", "latitude": 45.733, "longitude": 4.881, "locationType": "road", "selectedFuel": "e10", "selectedPrice": 1.974, "selectedUpdatedAt": "2026-11-05T00:01:00+00:00", "selectedAgeDays": 0.6, "distanceKm": 4.96}
For AI agents (MCP)
- One call = one answer. Default
maxResultsis 20 (max 10,000; France has about 9,800 stations). Typical run: 1-10 s. A full 9,000-station run takes about 75 s. - Pick the mode by what you have: an area name or code ->
search; coordinates ->nearby(geocode a place name first, the Actor does not geocode); "average / cheapest price in X" ->stats. - Always set
fuelfor price questions (without it, stations come in id/distance order, not by price) andmaxPriceAgeDays(3 is a good value) so that abandoned old prices do not win. - Errors fail fast as
Field X invalid: expected Y, got Z, example W(for exampleField fuel invalid: expected one of gazole, sp95, sp98, e10, e85, gplc, got "kerosene", example gazole.). Fix that field and call again; nothing is charged. - 0 results is not an error. The run succeeds with an empty dataset and the key-value record
SUMMARYhas anotesaying why and how to widen (biggerradiusKm, dropmaxPrice/maxPriceAgeDays/services). The samenoteexplains capped and partial results. - Department codes:
"69","2A","971"; regions by name ("Bretagne","Île-de-France") or 2-digit code.
Unofficial tool. Not affiliated with, endorsed by or sponsored by the French Ministry of Economy or prix-carburants.gouv.fr. It reads their official open data and reformats it. Prices are reported by the stations: always check the pump.
Who uses it
- Drivers, fleet managers and delivery companies: cheapest diesel or E10 around a depot, along a route (call
nearbyfor several points) or in a department. - Price comparison sites, apps and dashboards: a clean JSON/CSV feed per station with price age.
- Journalists, economists and consumer associations: regional price levels and dispersion today (
statswithgroupBy). - AI assistants: answer "cheapest petrol near me" or "average diesel price in Bretagne" with a dated source.
- Retail and logistics analysts: share of stations offering E85, GPLc, 24/24 pumps, car wash, electric charging points.
Modes
- search: stations matching your filters, cheapest first when
fuelis set. Filters (all optional, combined with AND; several values inside one filter are OR, exceptserviceswhich are all required):fuel,department,region,postcode,city,services,open24h,roadType(motorway / road),fuelAvailability(available / temporary-shortage),maxPrice,maxPriceAgeDays. - nearby: same filters inside
radiusKm(0.1-100) aroundlatitude/longitude; cheapest first whenfuelis set, otherwise closest first (sortBy: "distance"forces distance order). - stats: min, median, mean, max, number of stations with a price, number of stations in scope, newest and oldest price update, for one fuel or all six;
groupBydepartmentorregiongives one record per group. Computed on the live data by the open data API.
Prices, freshness and shortages (read this)
- Each station reports its own prices; some stop reporting. On 5 Nov 2026, of 9,092 stations with a diesel price, 86.9 % had updated it within 3 days, 92.9 % within 7 days and 250 (2.7 %) had a price older than 30 days; the oldest diesel price in Paris dated from 31 March. Use
maxPriceAgeDays, and readselectedAgeDays/fuels[].ageDays. - The data is refreshed continuously by the Ministry (the dataset timestamp moved several times within one hour of testing; the metadata gives no fixed frequency).
SUMMARY.datasetUpdatedAtand each record'sattributiontell the dataset update time. - Shortages: when the source flags a fuel as temporarily unavailable (
ruptureof type temporaire) the fuel appears infuels[]withstatus: "temporary-shortage";fuelAvailability: "available"excludes those stations. Permanent withdrawals are simply not listed. - Prices below 0.30 or above 5.00 EUR per litre are ignored as data-entry errors (none found on the day of testing).
open24his the station's own "24/24 automate" flag (card pump), not staffed opening hours.
What you get
type ("station" or "stats"). Station record: stationId, address, postcode, city, department, departmentCode, region, regionCode, latitude, longitude, locationType (motorway / road), open24hAutomate, services[] (French names), openingHours[], fuels[] (fuel, label, price EUR/L, updatedAt, ageDays, status), and when fuel is set selectedFuel, selectedPrice, selectedUpdatedAt, selectedAgeDays; in nearby mode distanceKm; always attribution, extractedAt.
Stats record: fuel, optional departmentCode/department or regionCode/region, stationsWithPrice, stationsInScope, minPrice, medianPrice, meanPrice, maxPrice, newestUpdateAt, oldestUpdateAt, oldestAgeDays, attribution, extractedAt.
Example (stats, real, 5 Nov 2026, Côtes-d'Armor, diesel prices updated in the last 3 days, shortened):
{"type": "stats", "fuel": "gazole", "departmentCode": "22", "department": "Côtes-d'Armor", "stationsWithPrice": 79, "stationsInScope": 114, "minPrice": 2.077, "medianPrice": 2.169, "meanPrice": 2.181, "maxPrice": 2.399, "newestUpdateAt": "2026-11-05T12:39:37+00:00", "oldestUpdateAt": "2026-11-02T18:48:57+00:00", "oldestAgeDays": 2.8}
Quick start
Cheapest SP98 on motorways in Île-de-France, fresh prices only:
{ "fuel": "sp98", "region": ["Île-de-France"], "roadType": "motorway", "maxPriceAgeDays": 2, "maxResults": 10 }
Stations near Lyon with E85 and a car wash, no shortage:
{ "mode": "nearby", "fuel": "e85", "latitude": 45.764, "longitude": 4.835, "radiusKm": 30, "services": ["Lavage automatique"], "fuelAvailability": "available", "maxResults": 10 }
Diesel price level per department:
{ "mode": "stats", "fuel": "gazole", "groupBy": "department", "maxPriceAgeDays": 3, "maxResults": 120 }
Call it from the API: POST https://api.apify.com/v2/acts/<ACTOR>/run-sync-get-dataset-items?token=<TOKEN> with the JSON input as body.
Pricing
Pay per event, no subscription:
| Event | Price | Per 1,000 |
|---|---|---|
fuel-station: one record delivered (a station, or one statistics record) | 0.002 USD | 2 USD per 1,000 records |
| Actor start (once per run) | 0.00005 USD | n/a |
A run returning nothing costs only the start event. Example: the 20 cheapest stations of a department cost 0.04 USD; the whole of France (about 9,100 diesel stations) about 18 USD. Use the platform's Maximum cost per run to cap spending: the Actor reads it, stops cleanly at the cap and returns what it already delivered (the cap must allow at least one record).
Privacy / GDPR by design
This Actor is built so that it returns no data about natural persons, and the filtering below is applied on purpose to respect the GDPR:
- Places, not people. A record describes a fuel station: its identifier, business address, coordinates, services, fuels, prices and update timestamps. Nothing else is returned.
- Allow-list, fail-closed. The Actor asks the open data API for a fixed list of fields and maps only those fields; any other field the source might add in the future (operator or manager names, phone numbers, e-mail addresses, company identifiers...) is dropped, not passed through. A unit test pins that list.
- No operator names. The dataset has no brand field, and station operator or owner names are never requested or returned (an independent station can be named after its owner). The station
addressis a business address; e-mail addresses and phone numbers are stripped from address text anyway. - Your location stays in memory. In
nearbymode the coordinates you give are used only to build the query. They are not written to the dataset, theSUMMARYrecord or the run log (the query log showsPOINT(redacted)). Note that the Apify platform itself stores the run input (as for any Actor): use a rounded point, or the centre of a town, if that matters. - No tracking, no state: the Actor keeps nothing between runs.
Residual risk, stated honestly: a very small independent station could in theory operate from a private person's premises, so its business address is also a place linked to that person. We return only what the Ministry already publishes openly about the point of sale, and no name.
Licences and attribution
Data: "Prix des carburants en France - Flux instantané v2", Ministère de l'Économie, published on data.economie.gouv.fr under the Licence Ouverte v2.0 (Etalab); the Actor adds the source and the dataset update date to each record's attribution. The data are extracted from the information system "Prix des carburants" and concern the points of sale listed on prix-carburants.gouv.fr (Arrêté ministériel du 12 décembre 2006).
Limits and good to know
- The brand/banner of a station is not in this dataset (so no brand filter); services, location and prices are.
citymatches by words (accents and case ignored): "Paris" also matches "Le Touquet-Paris-Plage": combine withpostcodeordepartment.nearbytakes coordinates, it does not geocode place names.- Prices are the ones displayed by the stations; differences with the pump are possible. The history is not covered here (the Ministry publishes a separate daily/yearly history dataset, "Prix des carburants en France - Flux quotidien").
- Unofficial; data may be incomplete or late: check the price at the pump.
En français (court)
Outil non officiel qui reprend les données ouvertes du Ministère de l'Économie sur les prix des carburants (Licence Ouverte v2.0) : stations les moins chères par zone ou autour d'un point GPS, et statistiques min / médiane / max par département ou région, avec la date de mise à jour de chaque prix. Aucune donnée personnelle : seulement des stations (lieux), jamais de noms d'exploitants.