So funktioniert das hier
Woher kommen die Daten, wie werden sie verarbeitet und was genau zeigt die App?

Die Datenquelle: Tankerkönig

Was ist Tankerkönig?

Tankerkönig ist ein gemeinnütziges Projekt, das seit 2014 lückenlos alle Kraftstoffpreise aller deutschen Tankstellen aufzeichnet. Jede Tankstelle ist gesetzlich verpflichtet, Preisänderungen innerhalb von 5 Minuten zu melden — diese Meldungen landen alle bei Tankerkönig.

Tankerkönig stellt die Daten kostenlos unter einer Creative-Commons-Lizenz zur Verfügung: als Live-API (aktuelle Preise) und als PostgreSQL-Dumps (die gesamte Historie seit 2014).

Was steckt in den Daten?
Tankstellen in Deutschland~15.000
Erfasst seit8. Juni 2014
KraftstoffeE5, E10, Diesel
Was wird gespeichert?Nur Preisänderungen (kein Minuten-Snapshot)
PreisformatZehntel-Cent (1850 = 1,850 €)
Gesamtgröße der Dumps~34 GB (5 Dateien)
Wichtig: Nur Änderungen, keine Snapshots

Tankerkönig speichert nicht den Preis jeder Tankstelle zu jeder Minute. Stattdessen wird nur dann ein Eintrag gespeichert, wenn sich ein Preis ändert. Eine Tankstelle mit stabilem Preis taucht also tagelang nicht in der Datenbank auf. Das bedeutet: "Günstigster Preis an Tag X" heißt genauer "günstigste Preismeldung an Tag X".

Der Import: Wie kommen die Daten in die Datenbank?

1
Dump herunterladen
Tankerkönig stellt die Historiendaten als PostgreSQL-Dump-Dateien zum Download bereit. Eine Dump-Datei ist eine komprimierte Sicherung einer Datenbank — ähnlich wie ein ZIP-Archiv, aber speziell für Datenbanken. Die Dateien sind 7–8 GB groß (komprimiert), intern steckt deutlich mehr drin. Der Download passiert direkt vom Server im Hintergrund — der Browser muss nicht offen bleiben.
2
In PostgreSQL einspielen (pg_restore)
Nach dem Download wird das Tool pg_restore aufgerufen. Das ist das Standardwerkzeug von PostgreSQL, um eine solche Dump-Datei in eine echte Datenbank zu laden. Es erstellt automatisch alle Tabellen, Indizes und füllt sie mit den gespeicherten Daten. Für einen 8-GB-Dump dauert das je nach Hardware 15–45 Minuten.

Mehrere Dumps können nacheinander importiert werden — die Daten werden zusammengeführt, nicht überschrieben. So landen Daten aus verschiedenen Zeiträumen alle in derselben Datenbank.
3
Dump-Datei löschen
Nach dem Import wird die heruntergeladene Dump-Datei automatisch gelöscht — sie wird nicht mehr gebraucht, die Daten sind jetzt in der Datenbank und können beliebig schnell abgefragt werden.
Welche Dumps wurden importiert?
Dump 3 · 2.10.2020 – 23.6.2023E10-Auswertung
Dump 4 · 23.6.2023 – 15.2.2025E10-Auswertung
Dump 5 · 15.2.2025 – heuteDiesel-Datum

Die Datenbankstruktur

Die importierten Dumps erzeugen zwei Tabellen in PostgreSQL:

gas_station — die Stammdaten jeder Tankstelle
idEindeutige ID (UUID)
name, brandName und Marke (z.B. "ARAL")
street, house_number, post_code, placeAdresse
lat, lngGPS-Koordinaten
gas_station_information_history — jede Preismeldung
stidVerweis auf die Tankstelle (→ gas_station.id)
e5, e10, dieselPreis in Zehntel-Cent (1850 = 1,850 €)
dateZeitpunkt der Preismeldung (mit Zeitzone)
changedBitmask: welcher Kraftstoff hat sich geändert (1=E5, 2=E10, 4=Diesel)
Preisformat erklärt

Alle Preise stehen als ganze Zahlen in der Datenbank, in Zehntel-Cent. Der Wert 1850 bedeutet also 1850 Zehntel-Cent = 185,0 Cent = 1,850 €. Ungültige Einträge haben den Wert -1 (Tankstelle hat keinen Preis gemeldet). Wir filtern alle Preise unter 500 (= 0,50 €) heraus, um fehlerhafte Daten zu ignorieren.

Die drei Auswertungen

Auswertung 1
Südlichste Tankstelle Deutschlands
Fragestellung: Welche Tankstelle steht am weitesten südlich in Deutschland?

Methode: Diese Auswertung braucht keine historischen Daten — sie nutzt die Live-API von Tankerkönig. Der südlichste Punkt Deutschlands ist das Haldenwanger Eck in Bayern (47,2701° Nord / 10,1789° Ost), nahe Oberstdorf. Die API erlaubt es, alle Tankstellen innerhalb eines Radius um einen Koordinatenpunkt zu suchen — wir suchen mit dem maximal erlaubten Radius von 25 km um diesen Punkt.

Die zurückgegebenen Stationen werden nach dem Breitengrad (lat) aufsteigend sortiert. Kleiner Breitengrad = weiter südlich. Die Station ganz oben in der Liste ist damit die südlichste.

Ergebnis: Auf der Karte erscheint die gefundene Station mit einem Marker, daneben alle weiteren Stationen aus dem Suchradius.
Auswertung 2
Günstigster E10 im Jahr 2023
Fragestellung: Wo und wann gab es 2023 den günstigsten E10-Preis in Deutschland?

Methode: Wir durchsuchen die importierte Datenbank (Dumps 3 + 4) nach allen E10-Preismeldungen zwischen dem 1. Januar 2023 und dem 31. Dezember 2023. Jede Zeile in der gas_station_information_history-Tabelle, die in diesen Zeitraum fällt und einen gültigen E10-Preis enthält (über 500 Zehntel-Cent = über 50 Cent), wird berücksichtigt.

Die Abfrage sortiert alle Einträge nach Preis aufsteigend und gibt die 100 günstigsten zurück. Da nur Preisänderungen gespeichert sind, bedeutet ein Eintrag: "An diesem Datum hat diese Tankstelle ihren E10-Preis auf diesen Wert gesenkt."

Was bedeutet das konkret: Wenn eine Tankstelle am 15. März auf 1,499 € senkt und am 20. März wieder erhöht, erscheint sie mit dem Eintrag vom 15. März in der Liste. Es ist der günstigste gemeldete Preis, nicht der Durchschnitt.
Auswertung 3
Günstigster Diesel an einem wählbaren Datum
Fragestellung: Welche Tankstellen hatten an einem bestimmten Tag den günstigsten Dieselpreis?

Methode: Das Datum ist frei wählbar (Standard: vorgestern, da aktuelle Daten manchmal noch nicht vollständig sind). Die Abfrage sucht in Dump 5 (15.2.2025 bis heute) nach allen Diesel-Preismeldungen, deren Zeitstempel — umgerechnet in die Berliner Zeitzone — auf den gewählten Tag fällt.

Die Zeitzone ist wichtig: Eine Meldung um 23:30 Uhr UTC ist in Deutschland bereits 0:30 Uhr des nächsten Tages. Wir rechnen deshalb alle Zeitstempel explizit in Europe/Berlin um, bevor wir nach Datum filtern.

Ergebnis: Die 100 Tankstellen mit dem niedrigsten gemeldeten Dieselpreis an diesem Tag, sortiert nach Preis. Auf der Karte sieht man die Verteilung über Deutschland — günstige Tankstellen finden sich oft in bestimmten Regionen oder an Autobahnzubringern mit starker Konkurrenz.

Technischer Aufbau

Wie ist das hier aufgebaut?

Die App läuft als Docker-Stack auf einem TrueNAS-Server. Drei Container arbeiten zusammen:

nginx
Webserver. Liefert die HTML-Seiten aus und leitet API-Anfragen weiter.
FastAPI (Python)
Backend. Führt die SQL-Abfragen aus und gibt JSON zurück.
PostgreSQL 16
Datenbank. Speichert die importierten Tankerkönig-Dumps.
Traefik
Reverse Proxy. Macht die App über HTTPS erreichbar, verwaltet das TLS-Zertifikat.
Leaflet.js
Interaktive Karten im Browser, mit CartoDB-Kacheln im Dunkelmodus.
Cloudflare
DNS und TLS-Zertifikate für sprit.langenkaemper.org.
Datenfluss einer Anfrage

Browser → nginx → FastAPI → PostgreSQL → FastAPI → nginx → Browser.

Für die Südlichste-Tankstelle-Abfrage: Browser → nginx → FastAPI → Tankerkönig-API → FastAPI → nginx → Browser. nginx fungiert dabei als CORS-Proxy, weil Browser direkte API-Anfragen zu externen Servern aus Sicherheitsgründen blockieren würden.