← Start
API

Aggregate-API

v2 · statisch · CC-BY 4.0

Berechnet

Diese API liefert für jede Mess-Stelle zwei feste Fenster: 7 und 30 Tage, jeweils bis einschließlich gestern. Sie enthält nur zusammengefasste Werte und wird mit der nächsten geplanten Auswertung neu erstellt. Eine gespeicherte Zeitschätzung ist kein Beleg dafür, dass der Zug tatsächlich abgefahren ist.

Datenzeitraum: die Datumsfelder in jedem Fenster. Berechnungszeitpunkt: 2026-09-24T02:30:42Z. Die beiden Angaben beantworten unterschiedliche Fragen.

Endpunkte
PfadInhalt
/api/punctuality/index.json alle Mess-Stellen mit EVA-Nummer und Name
/api/punctuality/<eva>.json Aggregate einer Mess-Stelle, Fenster 7d und 30d

Beispiel-Antwort

/api/punctuality/8098549.json für Hamburg Hbf (S-Bahn), gekürzt auf ein Fenster:

{
  "schema_version": 2,
  "generated_at": "2026-09-24T02:30:42Z",
  "license": "CC-BY-4.0",
  "source": "https://railcast.de/",
  "quality_thresholds": {
    "min_estimates": 100,
    "min_departure_status_coverage_pct": 50
  },
  "eva": "8098549",
  "name": "Hamburg Hbf (S-Bahn)",
  "windows": {
    "7d": {
      "window": {
        "days": 7,
        "from": "2026-09-17",
        "to": "2026-09-23"
      },
      "n": 8176,
      "punctuality_pct": 93.19,
      "median_delay_min": 1,
      "p90_delay_min": 4,
      "cancel_rate_pct": 92.97,
      "cancel_rate_denominator": "n_departure_status_known",
      "n_planned": 8372,
      "n_estimated": 8176,
      "n_departure_status_known": 128,
      "n_cancelled_departure": 119,
      "n_legacy_cancellation_unknown": 3,
      "n_unobserved": 74,
      "n_estimated_without_departure_status": 8169,
      "observation_coverage_pct": 97.66,
      "departure_status_coverage_pct": 1.53,
      "legacy_or_cancel_rate_pct": 1.49,
      "label_policy": "latest_source_estimate; not confirmed departure",
      "quality_status": "low_status_coverage"
    },
    "30d": "…"
  }
}

Felder

FeldBedeutung
schema_versionVersion des JSON-Vertrags. Diese Ausgabe ist 2.
generated_atZeitpunkt der Berechnung (ISO 8601, UTC)
license / sourceLizenz und Quelle der zusammengefassten Daten
quality_thresholds.min_estimatesAb so vielen auswertbaren Abfahrts-Schätzungen gilt ein Fenster als tragfähig für Pünktlichkeit, Median und P90. Aktuell 100.
quality_thresholds.min_departure_status_coverage_pctAb dieser Statusabdeckung gilt cancel_rate_pct als Quote des Bahnhofs. Aktuell 50 %. Zusätzlich müssen mindestens min_estimates Halte einen bekannten Abfahrtsstatus haben.
evaEVA-Nummer der Mess-Stelle
nameKlarname laut Stammdaten
windows.<w>Objekt für 7d oder 30d; <w> ist kein frei wählbarer Zeitraum
windows.<w>.windowdays ist die Fensterlänge; from und to sind die eingeschlossenen Kalendertage
windows.<w>.nAlias von n_estimated: Halte mit auswertbarer Abfahrts-Schätzung; keine bestätigte Durchführung
windows.<w>.punctuality_pctAnteil der auswertbaren Schätzungen unter 6 min Abfahrtsverspätung
windows.<w>.median_delay_min / p90_delay_min50. bzw. 90. Perzentil der auswertbaren Abfahrtsverspätung in Minuten
windows.<w>.cancel_rate_pctAusdrücklich ausgefallene Abfahrten geteilt durch Halte mit bekanntem Abfahrtsstatus
windows.<w>.cancel_rate_denominatorBezeichnung des Nenners für cancel_rate_pct
windows.<w>.n_plannedAlle geplanten Halte im Fenster; Grundlage der Abdeckungsquoten
windows.<w>.n_estimatedHalte mit gespeicherter Abfahrtszeit und auswertbarer Verspätungsangabe, ohne gemeldeten oder unklaren Abfahrtsausfall
windows.<w>.n_departure_status_knownHalte mit Status p, a oder c für die Abfahrt
windows.<w>.n_cancelled_departureHalte mit ausdrücklich gespeichertem Abfahrtsstatus c
windows.<w>.n_legacy_cancellation_unknownAltes Ausfallflag ohne sichere Zuordnung zur Abfahrt
windows.<w>.n_unobservedGeplante Halte ohne auswertbare Schätzung, ohne bestätigten Abfahrtsausfall und ohne eindeutigem Ausgang
windows.<w>.n_estimated_without_departure_statusAuswertbare Schätzungen ohne bekannten Abfahrtsstatus
windows.<w>.observation_coverage_pctn_estimated / n_planned, also der Anteil mit auswertbarer Schätzung
windows.<w>.departure_status_coverage_pctn_departure_status_known / n_planned
windows.<w>.legacy_or_cancel_rate_pctHistorische kombinierte Ausfallflags geteilt durch alle geplanten Halte; kein Beleg für einen Abfahrtsausfall
windows.<w>.label_policyHinweis, dass die letzte Quell-Schätzung verwendet wird und keine physische Abfahrt bestätigt
windows.<w>.quality_statusok, too_few_estimates oder low_status_coverage; siehe Absatz unter dieser Tabelle

Belastbarkeit eines Fensters

quality_status fasst zwei getrennte Prüfungen zusammen und wird in dieser Reihenfolge vergeben. too_few_estimates heißt: weniger als 100 auswertbare Abfahrts-Schätzungen. Bei so kleinen Fallzahlen beschreibt eine Prozentzahl eher die Stichprobe als den Bahnhof, deshalb zeigt die Website dort keine Pünktlichkeitsquote, keinen Median und kein P90. low_status_coverage heißt: die Fallzahl der Schätzungen reicht, aber der Nenner der Ausfallquote trägt nicht. Er trägt, wenn mindestens 50 % der geplanten Halte einen Abfahrtsstatus haben und das mindestens 100 Halte sind. Die Bahn meldet den Status vor allem bei Abweichungen; eine kleine oder ausgewählte Teilmenge ergibt keine Ausfallquote des Bahnhofs. Die Website zeigt in diesem Fall die Anzahl gemeldeter Ausfälle und die Abdeckung statt einer Quote.

Beide Prüfungen bleiben einzeln nachrechenbar, weil die Schwellen und alle Zählwerte in der Antwort stehen. Ein Fenster kann an beiden Prüfungen scheitern; quality_status nennt dann die erste. Die Kennzahlen selbst werden nicht verändert oder entfernt: punctuality_pct und cancel_rate_pct bleiben so berechnet wie bisher.

Felder ohne Datengrundlage sind null, nicht 0. Eine Mess-Stelle ohne auswertbare Schätzung hat deshalb keine Pünktlichkeits-, Median- oder P90-Zahl. Ohne bekannten Abfahrtsstatus gibt es keine Ausfallquote. Fehlende Halte werden nicht als pünktlich oder „nicht ausgefallen“ aufgefüllt. Zeitschätzungen können sich nachträglich ändern.

Mess-Stellen

NameEVASchätzungen 30d
Aachen Hbf80000018.570
Aachen-Rothe Erde80004066.158
Augsburg Hbf800001312.111
Berlin Hbf80111601
Berlin Hbf (S-Bahn Stadtbahn)808902122.750
Berlin Hbf (S21)80895223.142
Berlin Hbf (tief)809816013.746
Berlin Ostbahnhof80102551.482
Berlin Ostbahnhof (S)808918524.342
Berlin Südkreuz801111313.601
Berlin Südkreuz (S)808907327.185
Bochum Hbf80000419.661
Bonn Hbf80000445.934
Bonn-Bad Godesberg80010823.294
Bonn-Mehlem80010851.793
Bremen Hbf800005011.160
Brühl80012153.335
Dortmund Hbf800008017.417
Dresden Hbf80100858.643
Duisburg Hbf800008614.825
Düren80000846.305
Düsseldorf Hbf800008523.579
Erfurt Hbf80101019.798
Eschweiler Hbf80018862.292
Essen Hbf800009816.328
Frankfurt Hbf (tief)809810524.755
Frankfurt(Main)Hbf800010518.075
Freiburg(Brsg)Hbf80001078.708
Garmisch-Partenkirchen80021871.207
Gießen80001246.291
Göttingen80001287.115
Hagen Hbf80001429.124
Hamburg Hbf800254911.490
Hamburg Hbf (S-Bahn)809854934.797
Hamm(Westf)Hbf80001499.099
Hannover Hbf800015219.709
Heidelberg Hbf800015610.355
Horrem80001787.730
Hürth-Kalscheuren80031603.691
Ingolstadt Hbf80001836.205
Kamen80031684.120
Karlsruhe Hbf800019110.250
Kassel-Wilhelmshöhe80032009.858
Kiel Hbf80001995.289
Köln Hbf800020731.969
Köln Messe/Deutz800336824.645
Köln Messe/Deutz Gl.11-1280733681.177
Köln-Mülheim80002099.217
Langerwehe80035533.799
Leichlingen80036161.224
Leipzig Hbf80102058.725
Leipzig Hbf (tief)809820511.171
Leverkusen Mitte80067131.446
Lübeck Hbf80002374.958
Magdeburg Hbf80102247.643
Mainz Hbf80002409.474
Mannheim Hbf800024416.297
München Hbf80002618.445
München Hbf (tief)809826325.428
München Hbf Gl.27-3680982616.546
München Hbf Gl.5-1080982621.167
Münster(Westf)Hbf800026310.265
Norddeich Mole8007768631
Nürnberg Hbf800028420.376
Oberhausen Hbf800028610.306
Opladen80008532.296
Osnabrück Hbf80002947.472
Regensburg Hbf80003095.002
Roisdorf80051522.328
Rostock Hbf80103047.585
Saarbrücken Hbf80003236.730
Schifferstadt80003265.170
Schwelm80000334.380
Schwerte(Ruhr)80000374.645
Sechtem80054992.331
Solingen Hbf80000877.215
Stolberg(Rheinl)Hbf80003486.052
Stolberg(Rheinl)Hbf Gl.2780983481.724
Stolberg(Rheinl)Hbf Gl.448098349735
Stuttgart Hbf800009616.195
Stuttgart Hbf (tief)80980968.422
Trier Hbf80001343.802
Ulm Hbf800017010.790
Westerland(Sylt)8006369901
Wuppertal Hbf800026610.655
Wuppertal-Oberbarmen80067198.001
Wuppertal-Sonnborn80066183.306
Wuppertal-Steinbeck80066194.692
Wuppertal-Vohwinkel80067188.573
Würzburg Hbf80002608.321

Stand 2026-09-24T02:30:42Z · 90 Mess-Stellen. Datenbasis ist die eigene Messung aus dem IRIS-TTS-Backend der DB, minütlich abgefragt. „Pünktlich“ heißt Abfahrtsverspätung unter 6 Minuten. Nutzung frei unter CC-BY 4.0 mit Verweis auf railcast.de. Die Dateien liegen statisch im Webroot und schicken keinen Access-Control-Allow-Origin-Header. Für den Abruf aus einer fremden Web-Seite heraus bitte serverseitig proxen.

Monatliche Auswertungen derselben Datenbasis in Prosa: railcast.de/report/.