# France Fuel Prices: Gas Station Prices, Diesel Prices & Alerts (`euroscrape/france-fuel-prices`) Actor

Live fuel prices in France (prix des carburants, gas prices France, petrol prices, gasoline prices): diesel prices, SP95/98, E10, E85 and LPG of all ~10,000 French fuel stations (official government feed) — cheapest around any city or point, with distances, median, local spread, price-drop alerts.

- **URL**: https://apify.com/euroscrape/france-fuel-prices.md
- **Developed by:** [EuroScrape](https://apify.com/euroscrape) (community)
- **Categories:** Automation, Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 stations

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## France Fuel Prices: Cheapest Stations Near You & Alerts

**The live price of every fuel at all ~10,000 French stations — from the government's official feed, sorted cheapest-first around any point.** Give it a city, a postal code or GPS coordinates and get the stations within your radius with Diesel, SP95/98, E10, E85 and LPG prices, their official update times, distances and a free local market summary.

![Cheapest stations around any French city, from the official live feed](https://raw.githubusercontent.com/EuroScrape/apify-actors/main/assets/demo-france-fuel-prices.gif)

- ⛽ **Official and live**: the same real-time feed that powers prix-carburants.gouv.fr (Licence Ouverte), refreshed continuously by the stations themselves.
- 📍 **Around anywhere**: city name, postal code or `"lat,lon"` — with distance to each station and a motorway flag (motorway fuel is usually 15-25 ct dearer).
- 💶 **The spread is the product**: across the 27 stations within 8 km of Grenoble, Diesel ranged over **30 centimes per litre** at the time of writing — on a 50 L tank, that's 15 € per fill, found in one run.
- 🔔 **Price-drop alerts**: schedule it every morning with a monitor name and get pinged on Telegram, Discord, Slack or a webhook when a station near you drops by 3 ct or crosses under your threshold.

### ✨ Why this Actor

| | |
|---|---|
| 🇫🇷 **Whole country, one fetch** | The national feed is downloaded once per run — 50 locations cost no more bandwidth than one. |
| 🕐 **Real update times** | Every price carries the timestamp the station declared it — no stale prices sold as fresh. |
| 🧹 **No ghost prices** | In the official feed, about 1 price in 9 is more than two weeks old — and frozen prices are exactly the ones that rank "cheapest". Prices older than 30 days are left out by default (`maxPriceAgeDays`). |
| 🛣️ **Motorway filter** | `excludeMotorway` keeps the A-road rip-offs out of your cheapest-first list. |
| 🧭 **E85 & LPG ready** | All six official fuels, including ethanol (0.85 €/L vs 2.20 for SP95 — the data makes the case by itself). |
| 🆓 **Free summaries** | Per location and fuel, over every station in the radius: the cheapest station, the median, and the local spread in centimes. |

### 🎯 Use cases

- **Commuters & fleets**: the cheapest Diesel within 10 km of the depot, checked every morning, alerts on drops.
- **E85 drivers**: ethanol stations are sparse — find them all around you with live prices.
- **Apps & sites**: a clean JSON/CSV feed of stations near your users, without parsing the government's ZIP+XML yourself.
- **Analysts & journalists**: price dispersion by area, motorway vs. town, brand-free and official.

### 🚀 Examples

**Cheapest Diesel and E10 around Grenoble:**

```json
{
  "locations": ["Grenoble"],
  "radiusKm": 10,
  "fuels": ["Gazole", "E10"]
}
```

**Morning price-watch around home and work, Telegram alerts:**

```json
{
  "locations": ["45.19,5.72", "38400"],
  "radiusKm": 8,
  "fuels": ["E10"],
  "excludeMotorway": true,
  "monitorName": "plein-pas-cher",
  "alertOnPriceDropCts": 3,
  "alertBelow": "1.95",
  "telegramBotToken": "123456:ABC…",
  "telegramChatId": "123456789"
}
```

### 📦 Output

**A station** (real data):

```json
{
  "type": "station",
  "location": "Grenoble",
  "stationId": "38700003",
  "address": "Avenue de Verdun",
  "city": "LA TRONCHE",
  "postalCode": "38700",
  "latitude": 45.195,
  "longitude": 5.75,
  "distanceKm": 3,
  "motorway": false,
  "open24h": true,
  "gazole": 2.25,
  "gazoleUpdatedAt": "2026-09-28T08:59:11",
  "e10": 1.99,
  "e10UpdatedAt": "2026-10-02T15:49:30"
}
```

**The free location summary** (real data — it covers every station in the radius, not only the ones delivered):

```json
{
  "type": "locationSummary",
  "location": "Grenoble",
  "radiusKm": 8,
  "stationsFound": 27,
  "stationsDelivered": 12,
  "stalePricesIgnored": 0,
  "byFuel": {
    "Gazole": {
      "stations": 26,
      "cheapest": { "price": 2.25, "address": "14 Avenue Esclangon", "city": "Gières", "distanceKm": 5.5 },
      "median": 2.381,
      "spreadCts": 29.9
    }
  },
  "source": "prix-carburants.gouv.fr (Licence Ouverte / Open Licence)"
}
```

### 💰 Pricing

| Event | Price |
|---|---|
| Run start | $0.003 |
| Station | $0.001 |
| Location summaries | free |

A daily check of 30 stations around you ≈ $0.03. Apify subscribers pay less: −10% (Starter), −20% (Scale), −30% (Business). Set a **maximum cost per run** in the run options and the Actor stops cleanly when it's reached.

### ❓ FAQ

**How fresh are the prices?** Stations are legally required to declare their prices to the government feed; most update within hours of a change, and every price in the output carries its own `updatedAt`.

**Why is a cheap station I know not listed?** Its price may be older than `maxPriceAgeDays` (30 by default). Set it to 0 to keep every price; each price carries its `updatedAt` so you can judge for yourself.

**Why is a station missing?** Only stations selling more than 500 m³/year must declare; a few tiny rural stations may be absent. Brand names are not in the official feed.

**Does it cover overseas territories?** The feed is metropolitan France.

**Can I get the whole country at once?** Use a central point with `radiusKm: 100` and a high `maxStationsPerLocation`, or several regional points. The national feed is a single download either way.

**Is this official data?** Yes — the government's open-data feed (Licence Ouverte), the same source as prix-carburants.gouv.fr.

### 🔌 API, AI agents and integrations

- **API**: one call runs the Actor and returns the results, `POST https://api.apify.com/v2/acts/euroscrape~france-fuel-prices/run-sync-get-dataset-items` (see the API tab for Python, JavaScript and cURL).
- **AI agents (MCP)**: add `https://mcp.apify.com?tools=euroscrape/france-fuel-prices` to Claude, Cursor, VS Code or any MCP client, and the Actor becomes a tool your agent can call.
- **No-code automation**: start runs and pass the results on with Apify's integrations for n8n, Make and Zapier, or with a webhook when a run ends.
- **Exports**: every result set downloads as JSON, CSV, Excel or XML, and can be sent to Google Sheets.

### ⭐ Your feedback

If this Actor saves you time, a short review on Apify Store helps other users find it. Missing a field or a filter? Say it in your review: the most requested features are added first.

### 🔗 More from EuroScrape

- [France Real Estate Sold Prices (DVF): €/m², Sales & Trends](https://apify.com/euroscrape/france-property-prices): every property sale registered by the French State — real prices, €/m², addresses, GPS, market trends per city and alerts on new sales.
- [France Energy Ratings (DPE): Homes, Energy Sieves & Alerts](https://apify.com/euroscrape/france-energy-ratings): official energy certificates of French homes — class, address, consumption, yearly bill — with the F/G energy sieves of any city and alerts on new certificates.
- [France Building Permits (Sitadel): Projects, Builders & Alerts](https://apify.com/euroscrape/france-building-permits): official register of French building permits — housing programmes and commercial buildings with the developer (name, SIREN), address, size and status, and alerts when works start.
- [French Companies Scraper (SIRENE)](https://apify.com/euroscrape/france-companies): every French company by activity, area and size, with verified websites and emails.
- [EU Electricity Prices (Day-Ahead): All Zones & Cheap Hours](https://apify.com/euroscrape/eu-electricity-prices): tomorrow's spot prices for 40+ European bidding zones, the cheapest 3-hour window of each day, negative-price alerts and years of history.
- [Google Flights Scraper: Cheapest Dates, Prices & Price History](https://apify.com/euroscrape/google-flights-prices): flight prices for any route and dates, cheapest day to fly, typical price range and price-drop alerts.
- [Ryanair Low Fare Finder: Cheapest Days, Anywhere & Alerts](https://apify.com/euroscrape/ryanair-low-fares): Ryanair fare calendars months ahead, every destination under your price cap from any airport, and alerts on drops and new deals.
- [Google Hotels Scraper: Prices from Every Booking Site](https://apify.com/euroscrape/google-hotels-prices): hotel prices for any destination and dates, with the price on every booking site, rate parity, price calendars and alerts.
- [Vinted Scraper: 26 Countries, Deals, Alerts & Seller Data](https://apify.com/euroscrape/vinted-scraper): search Vinted across 26 countries, prices with buyer fees, seller ratings and instant alerts on new listings.
- [EU Second-Hand Marketplaces Scraper: Vinted, OLX & More](https://apify.com/euroscrape/eu-marketplace-deals): one search on the top second-hand marketplaces of 18 European countries, prices in €, cheapest country and resale margin.
- [Kleinanzeigen Scraper: Deal Finder & Price-Drop Alerts](https://apify.com/euroscrape/kleinanzeigen-scraper): German classifieds with view counts, full seller details and instant alerts.
- [EU Public Tenders Scraper: TED, BOAMP & Awards](https://apify.com/euroscrape/eu-public-tenders): open tenders and contract awards from all of Europe (TED) and France (BOAMP, DECP), with winners per lot, values in € and daily alerts.
- [EU VAT Number Validator (VIES): Bulk Check, Proof & Alerts](https://apify.com/euroscrape/vat-validator): validate VAT numbers in bulk against the EU's official registry, with consultation proof for tax audits and alerts when a customer's number becomes invalid.
- [App Store Reviews Scraper + Google Play Reviews](https://apify.com/euroscrape/app-reviews): reviews from both stores in 58 countries, rating by version and country, alerts on new negative reviews.
- [Website Tech Stack Detector: 280+ Technologies, Leads & Signals](https://apify.com/euroscrape/website-intelligence): technologies, company identity, contacts and sales signals for any website.
- [UK Companies House Scraper](https://apify.com/euroscrape/uk-companies): UK companies by SIC code and location, with directors, websites and emails.
- [Impressum & Legal Notice Scraper (EU)](https://apify.com/euroscrape/company-identity): legal identity, registry numbers and VAT IDs from any website, registry-verified.

# Actor input Schema

## `locations` (type: `array`):

French cities ("Grenoble"), postal codes ("38000") or GPS points ("45.19,5.72").

## `radiusKm` (type: `integer`):

Stations within this distance of each location.

## `fuels` (type: `array`):

The first fuel drives the sorting (cheapest first).

## `maxStationsPerLocation` (type: `integer`):

Cheapest first (by the first fuel).

## `excludeMotorway` (type: `boolean`):

Motorway stations are flagged in the official feed and usually 15-25 ct more expensive.

## `maxPriceAgeDays` (type: `integer`):

A price that has not been updated for weeks usually means a closed station or a forgotten declaration, and would wrongly rank as the cheapest. Set 0 to keep every price.

## `includeSummary` (type: `boolean`):

Cheapest station per fuel, median price, local spread in centimes.

## `monitorName` (type: `string`):

Set a name and schedule the Actor (e.g. every morning): you then get alerts on price drops at the stations around you.

## `alertOnPriceDropCts` (type: `integer`):

Per station and fuel, vs. the previous run.

## `alertBelow` (type: `string`):

E.g. "1.80" — pinged the first time a station crosses under your threshold.

## `telegramBotToken` (type: `string`):

Alerts on Telegram: create a bot with @BotFather and paste its token.

## `telegramChatId` (type: `string`):

Your chat ID (send a message to your bot, then open api.telegram.org/bot<token>/getUpdates).

## `discordWebhookUrl` (type: `string`):

Alerts in a Discord channel: Channel settings → Integrations → Webhooks.

## `slackWebhookUrl` (type: `string`):

Alerts in Slack: create an Incoming Webhook for your channel.

## `webhookUrl` (type: `string`):

Receives one POST per run with the price drops (Make, Zapier, n8n…).

## `maxNotifications` (type: `integer`):

Maximum number of alert messages per run.

## Actor input object example

```json
{
  "locations": [
    "Grenoble"
  ],
  "radiusKm": 10,
  "fuels": [
    "Gazole",
    "E10"
  ],
  "maxStationsPerLocation": 30,
  "excludeMotorway": false,
  "maxPriceAgeDays": 30,
  "includeSummary": true,
  "alertOnPriceDropCts": 3,
  "maxNotifications": 30
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per station, cheapest first.

## `runSummary` (type: `string`):

Counters for this run (items found, output, errors).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Grenoble"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("euroscrape/france-fuel-prices").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "locations": ["Grenoble"] }

# Run the Actor and wait for it to finish
run = client.actor("euroscrape/france-fuel-prices").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "Grenoble"
  ]
}' |
apify call euroscrape/france-fuel-prices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,euroscrape/france-fuel-prices"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rAsllypo7l1cfxrrn/builds/qYk2raSajhdzuJhGh/openapi.json
