Average, lowest and highest pump prices in France per fuel (diesel, E5 95, E10, E5 98, E85, LPG), nationally or per region or department, with the number of stations behind each figure and the latest price update. Only prices updated in the last max_age_days days count; narrow to one region or department.
Every response includes credits_used: the credits this call cost.
Parameters
name
type
description
group_by
national | region | department
One national figure per fuel (default), or one per region or department. Example: region
fuel
diesel | e5_95 | e10 | e5_98 | e85 | lpg
One fuel (default: all). Example: diesel
region
string
Only this region: its name (e.g. Bretagne) or INSEE code (e.g. 53).
department
string
Only this department code (e.g. 75, 2A, 971).
max_age_days
integer
Count prices updated in the last N days (default 7, max 90).
import os, requests
res = requests.get(
"https://api.api.sh/fuel/v1/prices",
params={"group_by": "region"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json()
const url = new URL("https://api.api.sh/fuel/v1/prices");
url.searchParams.set("group_by", "region");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).
The fastest way to see the full response is the playground: it runs this endpoint with your account and shows the exact JSON.