{
    "station": {
        "slug": "station-soufflenheim-6678",
        "brand": "Independent",
        "name": "Station SOUFFLENHEIM",
        "address": "15 Rue de Sessenheim, 67620 SOUFFLENHEIM",
        "country": "FR",
        "lat": 48.82224,
        "lng": 7.96612,
        "page_url": "https://www.fuel-prices.eu/live/france/station/station-soufflenheim-6678/",
        "map_url": "https://www.google.com/maps/search/?api=1&query=48.82224,7.96612"
    },
    "updated": "2026-09-18T00:00:00+03:00",
    "monitored_since": "2026-06-06T00:00:00+03:00",
    "records": 174,
    "currency": {
        "base": "EUR",
        "EUR_RON": 1,
        "EUR_USD": 1.1481,
        "rates_date": "2026-09-17",
        "liters_per_gallon": 3.78541
    },
    "fuels": [
        {
            "type": "sp95",
            "label_ro": "SP95",
            "label_en": "SP95",
            "price": {
                "EUR": 1.99,
                "USD_per_gallon": 8.649,
                "unit": "per_liter"
            },
            "captured_at": "2026-09-15T07:30:00+03:00",
            "change_7d_pct": 0,
            "suspicious": false,
            "below_market_floor": false
        },
        {
            "type": "diesel",
            "label_ro": "Diesel (Gazole)",
            "label_en": "Diesel (Gazole)",
            "price": {
                "EUR": 2.25,
                "USD_per_gallon": 9.779,
                "unit": "per_liter"
            },
            "captured_at": "2026-09-15T07:30:00+03:00",
            "change_7d_pct": 0,
            "suspicious": false,
            "below_market_floor": false
        }
    ],
    "cheapest_fuel": "sp95",
    "price_range_ron": "1.99–2.25 EUR",
    "nearby_count": 3,
    "source": "Prix-Carburants (Ministere de l'Economie, Etalab Open License)",
    "update_frequency": "PT12H",
    "feeds": {
        "json": "https://www.fuel-prices.eu/live/france/station/station-soufflenheim-6678/?format=json",
        "json_extended": "https://www.fuel-prices.eu/live/france/station/station-soufflenheim-6678/?format=json&ext=1",
        "markdown": "https://www.fuel-prices.eu/live/france/station/station-soufflenheim-6678/?format=md"
    },
    "station_card": {
        "fuel": {
            "code": "sp95",
            "label": "SP95",
            "currency": "EUR",
            "unit": "per_liter",
            "price": 1.99
        },
        "history": {
            "window_days": 90,
            "observed_days": 84,
            "series_starts": "2026-06-21",
            "min_30d": 1.99,
            "min_30d_date": "2026-08-20",
            "max_30d": 1.99,
            "max_30d_date": "2026-08-20",
            "avg_30d": 1.99,
            "today_vs_avg_30d": -0,
            "method": "Daily series, forward-filled: a day without a new reading keeps the last observed price. min/max/avg cover the last 30 days of that series."
        },
        "vs_neighbours": {
            "radius_km": 10,
            "stations_with_price": 3,
            "rank_cheapest_first": 1,
            "cheapest": 1.99,
            "median": 2.279,
            "vs_cheapest": 0,
            "vs_median": -0.289,
            "cheapest_nearby": [
                {
                    "name": "Station HATTEN",
                    "address": "2 RUE DES COMMERCES, 67690 HATTEN",
                    "brand": "",
                    "price": 2.279,
                    "distance_km": 9,
                    "page_url": "https://www.fuel-prices.eu/live/france/station/station-hatten-8009/"
                },
                {
                    "name": "Station BISCHWILLER",
                    "address": "17 Route d'Oberhoffen, 67240 BISCHWILLER",
                    "brand": "",
                    "price": 2.389,
                    "distance_km": 9.4,
                    "page_url": "https://www.fuel-prices.eu/live/france/station/station-bischwiller-2758/"
                }
            ],
            "method": "Current prices for the same fuel at stations within the radius, same freshness and plausibility filters as the page. The station itself is included in the count and in the rank."
        },
        "update_pattern": {
            "window_days": 90,
            "changes": 0,
            "typical_days": [],
            "typical_time": null,
            "days_between_changes": null,
            "last_change": null,
            "last_change_by": null,
            "time_of_day_known": false,
            "method": "A change is a pair of consecutive history points with different prices; the timestamp is when we read the new price from the source, not when the operator changed the sign."
        }
    }
}