API documentation

Live retail fuel prices over one clean REST API. Per-station detail across Europe, national averages worldwide.

No key yet? Free keys are instant — 2,000 requests/mo, no card.
Get a free key →

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
Open endpoints (/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

GET/v1/prices/cheapest

The cheapest stations selling a fuel near a point, sorted by price.

ParamReqDescription
lat, lngyesSearch centre.
fuelyesdiesel · e5 · e10 · sp98 · lpg
radius_kmnoSearch radius (default 5, max 50).
limitnoMax 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

GET/v1/stations

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

GET/v1/stations/along-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

GET/v1/prices/history

Per-station price history. Params: station_id, fuel, days (default 7).

Stats & volatility

GET/v1/stats

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)

GET/v1/national

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

POST/v1/alerts

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

PlanRequests / moNotes
Free2,000All endpoints to try · instant key
Starter — €2.9925,000All countries
Pro — €9.99250,000+ history + stats
Business — €19.992,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

CodeMeaning
400Bad request — missing/invalid parameter (see detail).
401Missing or invalid X-API-Key.
404Nothing found for that query.
429Rate-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.

Ready to build? Spin up a free key and make your first call in under a minute.
Get a free key →