Nur für die Warteliste · die ersten 100 bekommen doppelte Testphase + 15% im ersten MonatNur für die Warteliste · die ersten 100 bekommen doppelte Testphase + 15% im ersten MonatNur für die Warteliste · die ersten 100 bekommen doppelte Testphase + 15% im ersten MonatNur für die Warteliste · die ersten 100 bekommen doppelte Testphase + 15% im ersten MonatNur für die Warteliste · die ersten 100 bekommen doppelte Testphase + 15% im ersten MonatNur für die Warteliste · die ersten 100 bekommen doppelte Testphase + 15% im ersten Monat

Entwickler

Die öffentliche ÖffiGo-API

Alles, was das Messnetz live erzeugt, gibt es auch als offene JSON-API — dieselbe, die die App und dieStatus-Seite benutzen. Kein Key, keine Anmeldung; bitte fair verwenden (Limits unten).

Base-URL: https://api.oeffigo.app
EndpointBeschreibung
GET /v1/healthKurzer Gesundheitscheck der API
GET /v1/statusStatus aller Systemkomponenten (Basis der Status-Seite)
GET /v1/predictionsLive-Verspätungsprognosen aus dem Messnetz
GET /v1/announcementsAktive Service-Meldungen

Spielregeln

GET /v1/health

Antwortet 200, wenn der letzte Messdurchlauf frisch ist, sonst 503.

{
  "ok": true,
  "vehiclesLive": 1312,
  "lastCycleAt": "2026-07-03T10:15:30.000Z"
}

GET /v1/status

Komponenten-Status (Messung, Datenquelle, Wiener Linien, Verkehrslage, Datenbank, API) mit deutschsprachigen Klartext-Details —overall ist operational, degradedoder down. Genau das rendert die Status-Seite.

{
  "generatedAt": "2026-07-03T10:15:35.000Z",
  "overall": "operational",
  "components": [
    {
      "id": "ingestion",
      "name": "Messung (Fahrzeug-Beobachtung)",
      "status": "operational",
      "detail": "Letzter Messdurchlauf vor 28 s, 1.312 Fahrzeuge."
    }
  ]
}

GET /v1/predictions

Live-Verspätungsprognosen aus dem In-Memory-Snapshot des Messnetzes. Ein Lookup-Modus pro Anfrage:

ParameterBedeutung
lat + lonPrognosen rund um eine Koordinate. Optional radius in Metern (Default 2000, max. 25000) und limit (Default 50, max. 200).
lineExaktes Linien-Label, Groß-/Kleinschreibung egal. Kombinierbar mit lat/lon.
jidDirekte Journey-ID → genau eine Prognose oder 404.
jidsKommagetrennte Journey-IDs (max. 40) für ein ganzes Abfahrts-Board.
curl 'https://api.oeffigo.app/v1/predictions?lat=47.0707&lon=15.4395&radius=3000&limit=20'
{
  "generatedAt": "2026-07-03T10:15:35.000Z",
  "count": 1,
  "predictions": [
    {
      "jid": "1|12345|0|80|03072026",
      "line": "U1",
      "product": "U-Bahn",
      "direction": "Leopoldau",
      "lat": 48.2084,
      "lon": 16.3725,
      "delayMin": 1.2,
      "feedDelayMin": 1,
      "confidence": "high",
      "progress": 0.642,
      "updatedAt": "2026-07-03T10:15:30.000Z",
      "distanceM": 116
    }
  ]
}

delayMin ist unsere eigene Prognose in Minuten,feedDelayMin die offizielle Anzeige (oder null, wenn es keine gibt), confidence die Modell-Sicherheit. Prognosen verfallen ~3 Minuten nach dem letzten Refresh.

GET /v1/announcements

Aktive Service-Meldungen (z. B. Wartungsfenster), maximal 20, neueste zuerst.

{
  "generatedAt": "2026-07-03T10:15:35.000Z",
  "announcements": [
    {
      "id": 42,
      "severity": "warning",
      "title": "S-Bahn Einschränkung",
      "body": "Auf der Stammstrecke kommt es derzeit zu Verzögerungen.",
      "url": null,
      "startsAt": "2026-07-03T09:00:00.000Z",
      "endsAt": null
    }
  ]
}

Fragen?

Die API ist jung und wächst mit dem Messnetz. Wenn du etwas damit baust oder dir ein Feld fehlt: schreib uns.