Skip to content

Repository files navigation

DB API Wrapper

Ein leichtgewichtiger Wrapper für Fahrplandaten des öffentlichen Nahverkehrs. Die API nutzt die Open-Source-Bibliothek @motis-project/motis-fptf-client, die an transitous.org (ein offenes, community-betriebenes MOTIS-Backend mit GTFS-Daten europäischer Verkehrsunternehmen) angebunden ist. Damit lassen sich Verbindungen, Echtzeitverspätungen und Abfahrtszeiten strukturiert als JSON abfragen.

Hinweis: Das Projekt nutzte ursprünglich db-vendo-client mit direktem Zugriff auf das DB-Vendo-Backend. Deutsche Bahn blockiert seit 2026 per TLS-Fingerprinting nahezu alle Zugriffe darauf (siehe db-vendo-client#46), weshalb auf das offene, weiterhin funktionierende transitous.org-Backend umgestellt wurde. Die API-Endpunkte und Response-Felder sind unverändert.

Wofür kann man das nutzen?

  • 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.

Installation

  1. Node.js installieren.
  2. Projekt herunterladen oder klonen.
  3. Abhängigkeiten installieren:
npm install
  1. .env.example zu .env kopieren und CONTACT mit einer E-Mail-Adresse oder Website ausfüllen. Das ist Pflicht — der Server startet sonst nicht — und wird als Kontaktangabe im User-Agent an transitous.org gesendet.
cp .env.example .env

Server starten

npm start

Der Server läuft standardmäßig auf http://localhost:3000.

Konfiguration (settings.json)

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

Test-Oberfläche

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.

API-Endpunkte

Alle Endpunkte geben JSON zurück.


GET /locations — Haltestellen suchen

Sucht Haltestellen, Adressen und Stationen anhand einer Texteingabe. Nützlich um Haltestellen-IDs 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)

GET /journeys — Verbindungen suchen

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 Stations-ID (aus /locations)
to Stationsname oder Stations-ID
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

GET /departures — Abfahrtsmonitor

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 Stations-ID
duration Zeitraum in Minuten (Standard: 60)

Hinweis zu den Daten

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.


Disclaimer

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.

About

Inoffizieller Node.js API-Wrapper für Fahrplandaten des öffentlichen Nahverkehrs – Verbindungen, Abfahrten und Haltestellensuche via transitous.org / MOTIS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages