InfraNode.dev
MCP InfraNode gibt es auch als MCP-Server für KI-Assistenten wie Claude und ChatGPT.

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.