Fuel prices API reference

The API runs on Apify. You need an Apify account and an API token (Console → Settings → API & Integrations). One synchronous HTTP call runs the query and returns the rows.

Run it on Apify (free trial) API docs Use with AI agents (MCP)

Endpoint

POST https://api.apify.com/v2/acts/sste~official-fuel-prices/run-sync-get-dataset-items with header Authorization: Bearer <APIFY_TOKEN> and a JSON body (the input). An OpenAPI definition is available.

cURL

curl -X POST "https://api.apify.com/v2/acts/sste~official-fuel-prices/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"latitude":48.8566,"longitude":2.3522,"radiusKm":3,"fuelTypes":["diesel"],"maxResults":10}'

Python

# pip install apify-client
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("sste/official-fuel-prices").call(run_input={
    "latitude": 41.3874, "longitude": 2.1686, "radiusKm": 5,
    "fuelTypes": ["gasoline_95"], "maxResults": 10,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["price"], row["currency"], row["brand"], row["address"], row["distanceKm"])

JavaScript

// npm install apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('sste/official-fuel-prices').call({
    latitude: 45.4642, longitude: 9.19, radiusKm: 3,
    fuelTypes: ['diesel'], sortBy: 'distance', maxResults: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Input parameters

FieldTypeDescription
countriesarrayFR, ES, IT, AU-WA. Empty → detected from the location, or all sources.
fuelTypesarrayNormalized fuel types, e.g. diesel, gasoline_95, gasoline_95_e10, gasoline_98, lpg, cng. Empty → all.
latitude, longitudenumberSearch centre (WGS84).
radiusKmnumber0.1–500, default 10.
postalCodesarrayPrefix match; France and Spain only.
citiesarrayExact city or suburb, case- and accent-insensitive.
brandsarrayBrand contains any of these words (not available for France).
maxPriceAgeHoursintegerDrop older prices.
excludeRestrictedbooleanDrop Spanish members-only stations.
sortBystringprice (default), distance, none.
maxResultsinteger1–200,000, default 1,000. You pay per row.

Output fields

One row per fuel price per station: country, region, city, postalCode, address, stationId, stationName, brand, latitude, longitude, fuelType, fuelName, price, currency, unit, serviceType, accessRestricted, priceUpdatedAt, distanceKm, sourceKey, source, sourceUrl, license, fetchedAt. Fields a government does not publish are null.

{
  "country": "IT",
  "city": "MILANO",
  "address": "Via Giuseppe Ripamonti 567 20142",
  "stationName": "IP",
  "brand": "Api-Ip",
  "latitude": 45.4713,
  "longitude": 9.1919,
  "fuelType": "gasoline_95",
  "fuelName": "Benzina",
  "price": 1.99,
  "currency": "EUR",
  "unit": "L",
  "serviceType": "full",
  "priceUpdatedAt": "2026-09-30T19:42:31+02:00",
  "distanceKm": 0.8,
  "source": "Ministero delle Imprese e del Made in Italy (MIMIT) — Osservaprezzi Carburanti",
  "license": "IODL 2.0"
}

Errors and limits

Pricing: pay per use on Apify — $0.005 per run plus $0.0005 per price row ($0.50 per 1,000). A "cheapest 10 stations near a point" query costs about $0.01. You set maxResults, so you only pay for the rows you ask for.