Europe Official Fuel Prices (FR, ES) avatar

Europe Official Fuel Prices (FR, ES)

Pricing

$1.00 / 1,000 results

Go to Apify Store
Europe Official Fuel Prices (FR, ES)

Europe Official Fuel Prices (FR, ES)

Official pump prices from the French and Spanish government open-data feeds: one row per station and fuel, with brand, address, coordinates, price and update time.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

Home Lab Mobile

Home Lab Mobile

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

Get current pump prices from the official government open-data feeds of France and Spain as clean JSON. You get one row per station and fuel type, with brand, address, coordinates, the price and when it was last updated. The data comes straight from the ministries' public open-data files, so no login, API key or scraping of commercial sites is involved.

What it does

  • Covers about 21,000 stations: France (prix-carburants, about 9,800) and Spain (MITECO Geoportal Gasolineras, about 11,500). Italy is temporarily unavailable (see Known limits).
  • Puts both countries into one schema. Each row has a normalised fuelType (diesel, petrol_95, petrol_95_e10, petrol_98, lpg, cng, ...) for comparing across countries, and the source's own fuelName.
  • Filters by country, fuel type, municipality, province/departement or postcode prefix.
  • Carries the attribution on every row (source, sourceUrl, license, sourceUpdatedAt), so you can meet each licence's terms when you reuse the data.
  • Returns one result per station and fuel. You pay only for valid results; malformed rows are dropped and not charged.
  • Fails loudly: if a source returns nothing usable or changes its format, the run fails instead of returning an empty or broken dataset. A run that finds no station matching your filters ends successfully with zero results and no charge.

Input

FieldTypeRequiredDescription
countriesarray of FR, ESnoCountries to include, in output order. Default: both.
fuelTypesarraynoNormalised fuel types to keep, e.g. ["diesel", "petrol_95"]. Default: all.
municipalitystringnoTown or city, whole-name match ignoring case and accents, e.g. Lyon, Madrid.
provincestringnoFR departement (75, 2A), ES province name or INE code (Madrid, 28).
postcodePrefixstringnoPostcode prefix, e.g. 750 (central Paris) or 28 (Madrid province).
maxResultsintegernoStop after this many rows (default 100, max 200,000). Caps the cost of a run.

Examples:

{ "countries": ["FR"], "postcodePrefix": "750", "maxResults": 50 }
{ "countries": ["FR"], "province": "69", "fuelTypes": ["diesel", "petrol_95_e10"], "maxResults": 100 }
{ "countries": ["ES"], "province": "Madrid", "maxResults": 1000 }

Calling from an AI agent (MCP)

This Actor works as a tool through the Apify MCP server. Example tool call:

{ "actor": "homelabmobile/eu-fuel-prices", "input": { "countries": ["ES"], "municipality": "Valencia", "fuelTypes": ["diesel"], "maxResults": 20 } }

Output

One JSON object per station and fuel. This is a real row from a local run on 2026-10-14:

{
"country": "ES",
"stationId": "15493",
"stationName": null,
"brand": "PLENERGY",
"address": "CAMINO TORREJON, 4",
"municipality": "Ajalvir",
"province": "MADRID",
"postcode": "28864",
"latitude": 40.528778,
"longitude": -3.481639,
"onMotorway": null,
"openingHours": "L-D: 24H",
"fuelType": "diesel",
"fuelName": "Gasoleo A",
"selfService": null,
"price": 1.809,
"currency": "EUR",
"priceUnit": "EUR/l",
"priceUpdatedAt": null,
"sourceUpdatedAt": "2026-10-14T02:44:35.000Z",
"source": "Ministerio para la Transición Ecológica / Ministerio de Industria y Turismo - Precios de carburantes (Geoportal Gasolineras)",
"sourceUrl": "https://geoportalgasolineras.es/",
"license": "Reutilización según Ley 37/2007 (cite la fuente y la fecha de actualización)",
"scrapedAt": "2026-10-14T02:45:06.507Z"
}

Field notes:

  • selfService and stationName are always null for France and Spain, whose feeds do not publish them. They are kept in the schema for Italy, which publishes both, for when it returns.
  • priceUpdatedAt is when the station last reported that price (France only; null for Spain). sourceUpdatedAt is the dataset's own update time (both countries).
  • brand: France's open feed has no brand, so it is null there.
  • priceUnit is EUR/kg for CNG, LNG, biogas and hydrogen, and EUR/l for everything else.

Each run also writes a RUN_SUMMARY record (status, counts) to its key-value store. If a country's official source is down, the run still returns the other countries' results, says so in the status message and writes a SOURCE_ERRORS record (country, error, rows pushed before the failure).

Sources, licences and attribution

If you reuse the data, keep the attribution below. Every row carries its source, sourceUrl, license and sourceUpdatedAt.

CountryPublisher and datasetLicenceUpdate frequency
FranceMinistère de l'Économie et des Finances, "Prix des carburants en France - Flux instantané" (data.gouv.fr, file from donnees.roulez-eco.fr)Licence Ouverte v2.0 (Etalab) (attribution required)Every 10 minutes
SpainMinisterio para la Transición Ecológica y el Reto Demográfico / Ministerio de Industria y Turismo, Geoportal Gasolineras, REST service "PreciosCarburantes/EstacionesTerrestres" (Geoportal)Reuse under Ley 37/2007 (art. 8 general conditions, aviso legal): do not alter or misrepresent the data, cite the source, and state the date of the last updateEvery 30 minutes

Attribution text you can use:

  • "Source: Ministère de l'Économie et des Finances - Prix des carburants (flux instantané), Licence Ouverte v2.0, updated sourceUpdatedAt."
  • "Fuente: Ministerio para la Transición Ecológica y el Reto Demográfico / Ministerio de Industria y Turismo - Geoportal Gasolineras. Fecha de última actualización: sourceUpdatedAt."

For Spain this Actor changes only the format: decimal commas become numbers, dates become ISO 8601 UTC, and a normalised fuelType is added. Names, addresses and prices are not changed, and the original product name stays in fuelName.

Pricing

Pay per event:

EventPricePer 1,000
Result (one valid station x fuel row)$0.001$1.00

Plus Apify's standard Actor start charge. A typical run of 50 rows costs about $0.05. A full snapshot of both countries is about 77,000 rows (about $77), so use filters and maxResults unless you really need everything.

Known limits

  • Countries: France and Spain only.
    • Italy is temporarily unavailable: the MIMIT open-data server was unreachable from Apify for days in October 2026. We check it weekly and will add Italy back once it is reliably reachable. Until then the input does not accept IT, and Apify rejects such an input before the run starts, so nothing is charged.
    • Austria (E-Control Spritpreisrechner) is not included until its reuse terms are confirmed.
    • Portugal is excluded because the DGEG terms forbid commercial use.
    • The UK is excluded because its statutory feed needs a GOV.UK One Login account.
  • France and Spain are near real time (updated every 10 and 30 minutes).
  • French rows have no brand or station name. Spain has no per-price timestamp.
  • Each run downloads the national file for every selected country: a 1 MB ZIP for France and 12 MB of JSON for Spain. Filters are applied after the download, so a small filtered run still takes a few seconds per country.
  • Rows come out country by country, in source order. With a small maxResults and several countries, you may only get rows from the first country.
  • A municipality filter must match the whole name as the source spells it (case and accents are ignored). For example, Spain uses Palmas de Gran Canaria (Las).
  • If one country's government server is down, that country is skipped and listed in SOURCE_ERRORS; you are only charged for rows you get. The run fails only if every country you asked for fails, or if no rows come back. Each source gets at most 4 attempts, a few seconds apart.
  • Public open data only. It does not log in or bypass any access control. It makes at most 2 requests per run, one at a time.

Support

Open an issue on the Actor's Issues tab. We reply within 2 business days.