Ein leichtgewichtiger Wrapper für die Fahrplandaten der Deutschen Bahn. Die API nutzt die Open-Source-Bibliothek db-vendo-client, die das offizielle DB-Vendo-Backend anbindet. Damit lassen sich Verbindungen, Echtzeitverspätungen und Abfahrtszeiten im gesamten deutschen Fernverkehr und Nahverkehr strukturiert als JSON abfragen.
- Smart Home Dashboards: Nächste Abfahrten deines Bahnhofs auf einem Raspberry Pi oder Magic Mirror anzeigen.
- Automatisierungen: Skript, das benachrichtigt, wenn der gewohnte Zug Verspätung hat.
- Eigene Apps: Eigenes Frontend (Web, iOS, Android) auf Basis echter DB-Livedaten ohne Web-Scraping.
- Reiseplanung: Live-Verbindungen zwischen beliebigen Bahnhöfen in Deutschland abfragen.
- Node.js installieren.
- Projekt herunterladen oder klonen.
- Abhängigkeiten installieren:
npm installnode server.mjsDer Server läuft standardmäßig auf http://localhost:3000.
Das Verhalten des Servers lässt sich über settings.json anpassen, ohne den Code zu ändern:
{
"port": 3000,
"locations": {
"defaultResults": 8
},
"journeys": {
"defaultResults": 5,
"includeStopovers": true
},
"departures": {
"defaultDuration": 60
}
}| Einstellung | Beschreibung |
|---|---|
port |
Port des API-Servers |
locations.defaultResults |
Max. Treffer bei der Haltestellensuche |
journeys.defaultResults |
Anzahl zurückgegebener Verbindungen |
journeys.includeStopovers |
Zwischenhalte in Verbindungen mitliefern |
departures.defaultDuration |
Zeitraum in Minuten für Abfahrtsmonitor |
Die beiliegende index.html dient als visuelles Test-Frontend. Server starten und http://localhost:3000/index.html im Browser öffnen.
Außerdem liegt eine postman_collection.json bei, die direkt in Postman importiert werden kann.
Alle Endpunkte geben JSON zurück.
Sucht Haltestellen, Adressen und Stationen anhand einer Texteingabe. Nützlich um Haltestellen-IDs (IBNRs) zu ermitteln.
Beispiel:
GET http://localhost:3000/locations?query=Frankfurt+Hbf
Parameter:
| Parameter | Pflicht | Beschreibung |
|---|---|---|
query |
✅ | Suchbegriff (z.B. "Berlin Hbf") |
results |
— | Max. Anzahl Treffer (Standard: 8) |
Findet Verbindungen von A nach B mit Zwischenhalten, Umstiegszeiten und Echtzeitverspätungen.
Beispiel:
GET http://localhost:3000/journeys?from=Frankfurt(Main)Hbf&to=Berlin+Hbf
Parameter:
| Parameter | Pflicht | Beschreibung |
|---|---|---|
from |
✅ | Stationsname oder IBNR (z.B. 8000105) |
to |
✅ | Stationsname oder IBNR |
departure |
— | Abfahrtszeit als ISO-8601-String (z.B. 2026-06-01T10:00:00.000Z) |
results |
— | Anzahl Verbindungen (Standard: 5) |
transfers |
— | Max. Umstiege (z.B. 0 für direkten Zug) |
products |
— | Erlaubte Verkehrsmittel, komma-getrennt (siehe unten) |
bike |
— | true für Fahrradmitnahme |
accessibility |
— | complete für rollstuhlgerechte Verbindungen |
Verfügbare products-Werte:
| Wert | Verkehrsmittel |
|---|---|
long-distance-train |
ICE, IC, EC |
regional-train |
RE, RB, S-Bahn |
tram |
Straßenbahn |
bus |
Bus |
subway |
U-Bahn |
ferry |
Fähre |
Liefert die nächsten Live-Abfahrten einer Haltestelle.
Beispiel:
GET http://localhost:3000/departures?station=Frankfurt(Main)Hbf&duration=30
Parameter:
| Parameter | Pflicht | Beschreibung |
|---|---|---|
station |
✅ | Stationsname oder IBNR |
duration |
— | Zeitraum in Minuten (Standard: 60) |
Die Antworten von /journeys und /departures enthalten sowohl geplante Zeiten (plannedDeparture) als auch Echtzeiten (departure). Verspätungen sind zusätzlich als departureDelay / arrivalDelay in Sekunden verfügbar.
Dieses Projekt steht in keinerlei Verbindung zur Deutschen Bahn AG. Es handelt sich um ein rein privates, inoffizielles Open-Source-Projekt, das öffentlich zugängliche Schnittstellen aufbereitet. Alle Fahrplandaten sind Eigentum der Deutschen Bahn AG und der jeweiligen Verkehrsunternehmen.