Open Data
Bahnmalus API
Alle Crowd-Verspätungs-Meldungen sind öffentlich abrufbar — als JSON oder CSV. Ohne API-Key, ohne Anmeldung. Wir wollen, dass Journalisten, Forscherinnen und neugierige Reisende die Daten auswerten und einordnen können.
Allgemeines
- Base-URL:
https://baan.fail/api/public/v1 - Rate-Limit: 60 Requests pro Minute pro IP
- Antwort-Format: JSON, UTF-8
- Versteckte (moderierte) Meldungen werden über die Public-API nie ausgespielt
- Datums-Werte: ISO-8601 (z.B.
2026-05-07T12:00:00Z)
Endpoints
GET /reports
Liste aller Meldungen, paginiert per Cursor.
Query-Parameter:
from— frühestescreatedAt(ISO-8601). Default: −7 Tage.to— spätestescreatedAt(ISO-8601). Default: jetzt.line— Substring im Trainnumber (z.B.ICE 879,ICE). Case-insensitive.cursor— opaker Pagination-Cursor aus der vorigen Antwort.limit— Page-Size, default 50, max 200.
Beispiel:
curl 'https://baan.fail/api/public/v1/reports?line=ICE&limit=10'
GET /trips/{tripId}
Trip-Metadaten plus alle nicht-versteckten Meldungen zu diesem Trip.
Beispiel:
curl 'https://baan.fail/api/public/v1/trips/1|310315|0|80|2052020'
Hinweis: Trip-IDs sind volatile — sie werden täglich neu von der DB-API vergeben. Frische IDs am besten aus /reports oder dem Live-Frontend ziehen.
GET /export/csv
Alle matching-Reports als CSV-Download. Selbe Filter wie /reports, aber ohne Pagination. RFC-4180-konform, UTF-8 mit BOM für Excel-Kompatibilität.
Beispiel:
curl -OJ 'https://baan.fail/api/public/v1/export/csv?from=2026-05-01T00:00:00Z&to=2026-05-08T00:00:00Z'
Antwort-Felder
delayMin— Verspätung in Minuten (gerundet vom User aus 0/5/15/30/60/120 Stops)cancelled— Boolean, ob der Zug komplett ausgefallen istdefectCategories— Array, z.B.["no_ac", "no_seat"]journeyCategories— Array, z.B.["detour"]weight— Vertrauens-Gewicht der Meldung (1 anonym, 3 pseudonym, 5 verifiziert)dbValidated— Boolean: stimmt die Crowd-Meldung mit DB-Echtzeitdaten überein? (DB-Bestätigt-Siegel)
Lizenz
Die Daten stehen unter Creative Commons CC BY-SA 4.0. Du darfst die Daten teilen, weiterverarbeiten und veröffentlichen, sofern du Bahnmalus als Quelle nennst (baan.fail) und Weiterverarbeitungen unter derselben Lizenz stehen.
Bei Fragen
E-Mail an baan@mollath.com. Bug-Reports zur API gerne mit konkretem curl-Beispiel und Antwort-Status.