Live-Abfahrten jedes Bahnhofs abrufen
Tutorial: alle Bahnhöfe einer deutschen Stadt auflisten und für jeden Bahnhof Live-Abfahrten und -Ankünfte inklusive Nahverkehr, Verspätungen und Störungen über die kostenlose InfraNode-API abrufen.
1. Alle Bahnhöfe einer Stadt auflisten
Der Katalog /cities/{slug}/stations liefert jeden
DB-Bahnhof im Stadtgebiet mit EVA-Nummer, Name, Kategorie, Koordinate und PLZ.
Die Zuordnung erfolgt über den amtlichen Gemeindeschlüssel, deckt also alle
Städte ab.
import requests
base = "https://infranode.dev/api/v1"
# 1) Alle Bahnhöfe einer Stadt (mit EVA-Nummer)
stations = requests.get(f"{base}/cities/berlin/stations", timeout=10).json()
for s in stations["data"]["payload"]["stations"][:5]:
print(s["eva"], s["name"], "Kat.", s["category"]) 2. Live-Abfahrten je Bahnhof (inkl. Nahverkehr)
Mit der EVA-Nummer holst du die Live-Tafel jedes einzelnen Bahnhofs, alle Gattungen, mit Echtzeit-Verspätung und Gleis:
# 2) Live-Abfahrten eines beliebigen Bahnhofs über seine EVA
eva = "8011160" # Berlin Hauptbahnhof (aus dem Katalog oben)
board = requests.get(f"{base}/stations/{eva}/departures", timeout=10).json()
for d in board["data"]["payload"]["departures"][:10]:
delay = d.get("delay_minutes")
print(d["planned_time"], d["line"], "->", d["destination"],
f"(+{delay} min)" if delay else "", "Gleis", d.get("platform")) 3. Störungen und Meldungen
Jede Abfahrt/Ankunft trägt cancelled (Ausfall) und
messages (Störungs- und Hinweismeldungen mit Typ, Code, Kategorie
und Zeitstempel):
# 3) Störungen und Meldungen je Abfahrt
for d in board["data"]["payload"]["departures"]:
if d.get("cancelled"):
print("Ausfall:", d["line"], "->", d["destination"])
for m in d.get("messages", []):
print("Meldung:", m.get("type"), m.get("code"), m.get("category")) Auch per MCP
KI-Agenten nutzen dieselben Daten über die Tools stations,
station_board_departures und station_board_arrivals
des InfraNode-MCP-Servers.
Häufige Fragen
- Was ist der Unterschied zu station-departures?
- Der Endpunkt /cities/{slug}/station-departures liefert die zusammengeführte Tafel des Haupt-Bahnhofs einer Stadt, automatisch aus dem amtlichen StaDa-Katalog abgeleitet (volle Abdeckung über alle 84 Städte). /stations/{eva}/departures liefert die Tafel JEDES einzelnen Bahnhofs über seine EVA-Nummer, inklusive Nahverkehr (S-Bahn, RB, RE).
- Woher bekomme ich die EVA-Nummer?
- Aus dem Katalog /cities/{slug}/stations. Jeder Bahnhof trägt dort sein Feld eva, das du direkt in /stations/{eva}/departures einsetzt.
- Sind auch Nahverkehr und Störungen enthalten?
- Ja. Die Boards enthalten alle Gattungen (ICE/IC/RE/RB/S) sowie Echtzeit-Verspätungen, Ausfälle (cancelled) und Störungs-/Hinweismeldungen (messages je Eintrag).
- Brauche ich einen Schlüssel?
- Für den öffentlichen Aufruf der InfraNode-API nicht. Intern speist sich die Tafel aus der DB-Timetables-API (CC BY 4.0); zeige die Attribution Deutsche Bahn AG an.