REST API · JSON · through RapidAPI
EU Fuel Price Change Monitor (France, Spain) API
Each run returns only the stations whose fuel prices changed since the last run, from the French and Spanish open government feeds, filtered by postcode prefix.
Read from the official source when you call (donnees.roulez-eco.fr, sedeaplicaciones.minetur.gob.es); no personal data. GET /v1/eu-fuel-monitor answers {"product", "count", "items", "fetched_at"}.
Source: Prix des carburants en France (prix-carburants.gouv.fr), under Licence Ouverte / Open Licence 2.0 (Etalab). Every answer carries this attribution in its sources field.
Source: Geoportal Gasolineras (Ministerio para la Transición Ecológica y el Reto Demográfico), under the general reuse conditions of Ley 37/2007 and Real Decreto 1495/2011. Every answer carries this attribution in its sources field.
Get a key on RapidAPI plans and pricing are on the listing; one key covers every endpoint.
Parameters
| Parameter | Type | What it does | Example |
|---|---|---|---|
country | array | Which national feeds to read (empty: all). One of: FR, ES. | ["FR", "ES"] |
postcode | string | Keep stations whose postcode starts with this (28 is Madrid in Spain, Eure-et-Loir in France; 75 Paris; empty keeps all). | "28" |
limit | integer | At most this many results (1–1000, default 100). | 20 |
What each result holds
| Field | Type |
|---|---|
country | country |
station_id | id |
postcode | id |
address | text |
city | text |
lat | lat |
lon | lon |
diesel_eur_l | price |
sp95_e5_eur_l | price |
e10_eur_l | price |
sp98_eur_l | price |
Sample results
The first 3 results of the same source's latest test run (long values shortened).
[
{
"address": "16 Avenue Jean Moulin",
"city": "Authon-du-Perche",
"country": "FR",
"diesel_eur_l": 2.409,
"e10_eur_l": 2.211,
"first_seen": true,
"lat": 48.194,
"lon": 0.899,
"postcode": "28330",
"previous": null,
"sp95_e5_eur_l": 2.211,
"sp98_eur_l": 2.273,
"station_id": "28330003"
},
{
"address": "Zac du Pays Alnelois",
"city": "AUNEAU",
"country": "FR",
"diesel_eur_l": 2.356,
"e10_eur_l": 2.049,
"first_seen": true,
"lat": 48.478,
"lon": 1.768,
"postcode": "28700",
"previous": null,
"sp95_e5_eur_l": 2.089,
"sp98_eur_l": 2.152,
"station_id": "28700004"
},
{
"address": "C C PLEIN SUD - RN 154",
"city": "Vernouillet",
"country": "FR",
"diesel_eur_l": 2.362,
"e10_eur_l": 2.088,
"first_seen": true,
"lat": 48.717,
"lon": 1.369,
"postcode": "28500",
"previous": null,
"sp95_e5_eur_l": null,
"sp98_eur_l": 2.191,
"station_id": "28500001"
}
]
Call it
With curl:
curl -G "https://eu-fuel-prices-api-france-spain-stations.p.rapidapi.com/v1/eu-fuel-monitor" \ --data-urlencode country=FR,ES \ --data-urlencode postcode=28 \ --data-urlencode limit=20 \ -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \ -H "X-RapidAPI-Host: eu-fuel-prices-api-france-spain-stations.p.rapidapi.com"
With Python (pip install requests):
import os, requests
r = requests.get(
"https://eu-fuel-prices-api-france-spain-stations.p.rapidapi.com/v1/eu-fuel-monitor",
params={'country': 'FR,ES', 'postcode': '28', 'limit': 20},
headers={"X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"], "X-RapidAPI-Host": "eu-fuel-prices-api-france-spain-stations.p.rapidapi.com"},
timeout=120,
)
for item in r.json()["items"]:
print(item)
For code and AI agents that pick tools at run time, GET /v1/products lists every endpoint with its parameters and fields.
Questions
How fresh is it? Each call reads the official source then; an identical query within 15 minutes is answered from a cache.
What if the source is down? The answer says so: a 502, or "partial": true when only some of its requests failed.