API documentation
Live retail fuel prices over one clean REST API. Per-station detail across Europe, national averages worldwide.
Quickstart
Grab a free key, then make your first call — cheapest diesel near Paris:
curl -H "X-API-Key: YOUR_KEY" \
"https://api.data-packs.com/v1/prices/cheapest?lat=48.8566&lng=2.3522&fuel=diesel&radius_km=8"
Prefer to click? Every endpoint is runnable in the interactive console.
Authentication
Send your key in the X-API-Key header on every request. Keys look like ef_free_… or ef_live_….
X-API-Key: ef_live_xxxxxxxxxxxxxxxxxxxxxxxx
/v1/status, /v1/countries) need no key. Everything else does.Base URL & format
Base URL: https://api.data-packs.com. All responses are JSON. Prices are decimal in the local currency
(EUR, or GBP/USD where noted by a currency field); distances in km. Every response carries an
attribution array you must surface per the data licences.
Cheapest nearby
The cheapest stations selling a fuel near a point, sorted by price.
| Param | Req | Description |
|---|---|---|
lat, lng | yes | Search centre. |
fuel | yes | diesel · e5 · e10 · sp98 · lpg |
radius_km | no | Search radius (default 5, max 50). |
limit | no | Max results (default 10). |
{
"count": 3,
"stations": [
{"brand": "TotalEnergies", "city": "Paris", "distance_km": 2.1,
"prices": {"diesel": 1.799}, "currency": "EUR"}
],
"attribution": ["Prix des carburants — Etalab 2.0", "…"]
}
Stations nearby
All stations near a point, with filters and sorting. Params: lat, lng, radius_km,
fuel (sort/filter), fuels (require all, e.g. diesel,lpg),
brand, country, sort (distance|price),
limit, offset.
Cheapest along a route
Cheapest stations within a corridor along a journey. Pass an encoded polyline (or waypoints),
plus fuel and corridor_km. Ideal for trip planners and fleets.
Price history
Per-station price history. Params: station_id, fuel, days (default 7).
Stats & volatility
Per-country price level, spread and volatility. Params: fuel (required), country (optional, all if omitted),
window (24h|7d|30d). Returns current_avg, min, max, spread, stddev.
National averages (worldwide)
National average prices for markets without per-station data (Netherlands, United States, and growing).
Optional country filter. Each row carries prices, currency and the source period.
Price-drop webhooks
Register a callback and get a signed POST when a price drops below your threshold in an area.
Body: callback_url, lat, lng, radius_km, fuel, max_price.
Each delivery is HMAC-signed (X-Signature) and retried on failure. Business plan.
Coverage & status
GET /v1/countries — sources, licences and station counts. GET /v1/status — uptime and per-source
freshness (both open, no key). GET /v1/brands?country=es — brands you can filter on.
Plans & rate limits
| Plan | Requests / mo | Notes |
|---|---|---|
| Free | 2,000 | All endpoints to try · instant key |
| Starter — €2.99 | 25,000 | All countries |
| Pro — €9.99 | 250,000 | + history + stats |
| Business — €19.99 | 2,000,000 | + webhooks + bulk export |
Over the monthly quota returns 429 with a Retry-After header. There's also a short-term
per-key rate limit to keep things fair.
Errors
| Code | Meaning |
|---|---|
400 | Bad request — missing/invalid parameter (see detail). |
401 | Missing or invalid X-API-Key. |
404 | Nothing found for that query. |
429 | Rate-limited or monthly quota reached. |
All errors return JSON: {"detail": "…"}.
Licensing & attribution
Every source permits commercial reuse (Etalab 2.0, CC BY 4.0, IODL 2.0, OGL, US public domain). Each response includes an
attribution array — display it wherever you show the data. Not affiliated with the data providers.