Open Data Dokumentationen der KVV API's

iLazlow

aus Karlsruhe
Hallo zusammen,
im folgenden Thread möchte ich die verschiedenen API-Schnittstellen der Apps für das Angebot des KVV dokumentieren.

Folgende Schnittstellen werden dokumentiert:
  • Init API
  • Regio Move
  • KVV.Mobil
  • EFA-Server
Kleine Info vorab: Ich werde die API-Keys nicht dokumentieren, da diese meist leicht aus den Apps zu extrahieren sind. Wer allerdings bei der Extraktion Probleme hat, darf mich gerne anschreiben.

Ich werde die Dokumentation Stück für Stück aufbauen, und diese bei Bedarf oder durch neue Kenntnisse erweitern.
 
Zuletzt bearbeitet:

iLazlow

aus Karlsruhe
Die Init stellt insgesamt 3 Schnittstellen zur Verfügung: webapp (ehemals live.kvv.de), departureslive (ÖPNVLive App) und departureslive (KVV.Info App)

[ABGESCHALTET] Webapp Schnittstelle:
Diese API wurde von der INIT abgeschaltet, und liefert einen 404 Fehler.

Die Webapp-API bietet reine Standardfunktionen wie das Auflisten der Haltestellen und Abfahrten. Sie verfügt auch über die Fähigkeit Positionen der Fahrzeuge der AVG oder VBK anzuzeigen. Soweit ich weiß sind diese Echtzeitdaten, aus dem GPS der Fahrzeuge. Allerdings werden nur alle 30 Sekunden die Positionen gespeichert. Mit jeder Anfrage muss man sich mittels API-Key authentifizieren. Dieser API-Key muss als URL Parameter an die URL angehängt werden.

Alle Haltestellen auflisten:
Code:
{APIKEY} = Der benötigte API KEY

https://live.kvv.de/webapp/stops/all?key={APIKEY}

Eine Haltestelle auflisten anhand der ID:
Code:
{STOPID} = ID einer Haltestelle (Bsp: MPU für Marktplatz (Pyramide U))
{APIKEY} = Der benötigte API KEY

https://live.kvv.de/webapp/stops/bystop/{STOPID}?key={APIKEY}

Haltestelle auflisten anhand des Namens:
Code:
{NAME} = Name einer Haltestelle (Geeignet für Suchfelder oder ähnliches)
{APIKEY} = Der benötigte API KEY

https://live.kvv.de/webapp/stops/byname/{NAME}?key={APIKEY}

Haltestelle auflisten anhand einer Position:
Code:
{LAT} = Breitengrad (Bsp: 49.009591 für Marktplatz)
{LON} =  Längengrad (Bsp: 8.40474301 für Marktplatz)
{APIKEY} = Der benötigte API KEY

https://live.kvv.de/webapp/stops/bylatlon/{LAT}/{LNG}?key={APIKEY}

Abfahrten einer Haltestelle abrufen:
Code:
{STOPID} = ID einer Haltestelle (Bsp: MPU für Marktplatz (Pyramide U))
{APIKEY} = Der benötigte API KEY

https://live.kvv.de/webapp/departures/bystop/{STOPID}?maxInfos=10&key={APIKEY}

Positionen aller Fahrzeuge auflisten:
Code:
{APIKEY} = Der benötigte API KEY

https://live.kvv.de/webapp/vehicles/all?key={APIKEY}

Positionen eines Fahrzeuges auflisten:
Code:
{ID} = ID des Fahrzeug's (Bsp: VBK250)
{APIKEY} = Der benötigte API KEY

https://live.kvv.de/webapp/vehicles/byvehicle/{ID}?key={APIKEY}



DeparturesLive Schnittstelle:
Die DeparturesLive-API ist die Schnittstelle der ÖPNVLive App der Init AG. Über diese Schnittstelle sind erweiterte Funktionen möglich. Auflisten von Haltestellen, Fahrtverläufen anhand FahrtenIDs sowie auflisten von Störungsmeldungen. Der API-Key muss als Header Feld "apikey" bei jeder Anfrage mit gesendet werden. Mir ist aufgefallen, dass wenn man die API zu oft abfragt, man irgendwann einen 429 bekommen kann. Die genauen Abfragelimitierungen sind mir nicht bekannt.

Die ÖPNVLive-API hat bisher noch keine Positionen für die unterirdischen Haltestellen eingepflegt. Ruft man allerdings die Abfahrten für Marktplatz (U) = MKU auf, so bekommt man auch richtige Abfahrtsdaten. Das Problem mit den kaputten Positionen der unterirdischen Haltestellen hat man bei der KVV.Info-API nicht. (Stand 19.05.22)

Alle Haltestellen auflisten:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

https://live.kvv.de/departureslive/stops/all

Haltestellen in der nähe eines Standorts auflisten:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

{LAT} = Breitengrad (zB: 49.009523)
{LON} = Längengrad (zB: 8.403916)

https://live.kvv.de/departureslive/stops/nearlatlon/{LAT}/{LON}

Haltestellen & POI's bei Name auflisten:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

{NAME} = Name der Haltestelle (zB: ZKM)

https://live.kvv.de/departureslive/points/bystring/{NAME}
https://live.kvv.de/departureslive/tp/stops/bystring/{NAME}

Abfahrten einer Haltestelle auflisten:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

{ID} = ID der Haltestelle (zB: ZKM, RGZ)

https://live.kvv.de/departureslive/departures/bystopid/{ID}?maxInfos=-1

Linien einer Haltestelle auflisten:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

{ID} = ID der Haltestelle (zB: ZKM, RGZ)

https://live.kvv.de/departureslive/routes/bystopid/{ID}

Fahrtverlauf anhand einer ID anzeigen:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

{ID} = ID des Trips (bekommt man aus dem /departures/bystop/ als "trip" zurück. zB: 463418)

https://live.kvv.de/departureslive/trips/bytripid/{ID}

Alle Störungsmeldungen auflisten:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

https://live.kvv.de/departureslive/perturbations/all

Eine Fahrt planen:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

{LAT_ORIGIN} = Breitengrad des Starts (zB: 48.99938)
{LON_ORIGIN} = Längengrad des Starts (zB: 8.386)
{LAT_DESTINATION} = Breitengrad (zB: 49.007464868527755)
{LON_DESTINATION} = Längengrad (zB: 8.509961672471697)
{DATETIME} = Datum mit Uhrzeit (zB: 2021-05-18_21-15)

https://live.kvv.de/departureslive/tp/trips?operatingDays=THU,FRI,SAT,TUE,SUN,WED,MON&activeFilters=0&originLon={LON_ORIGIN}&originLat={LAT_ORIGIN}&departureTime={DATETIME}&destinationLon={LON_DESTINATION}&destinationLat={LAT_DESTINATION}&numberOfTrips=10&realtime=false



DeparturesLive (KVV.info) Schnittstelle:
Die Endpunkte der Schnittstelle sind identisch mit der ÖPNVLive App. Der API-KEY ist identisch mit dem der ÖPNVLive API, die Haupt-URL ändert sich. Während die ÖPNVLive API direkte Daten aus den Bordcomputern bekommt, bekommt die KVV.Info API Ihre Daten von den EFA-Servern des KVV.

ÖPNVLive:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: %C3%96PNVlive/864 CFNetwork/1237 Darwin/20.4.0

https://live.kvv.de/departureslive/stops/all

KVV.Info:
Code:
[HEADER]
apiKey: KEY
ownerId: Pesudo GUID (zB: 7D97DE86-E0D5-4714-90C8-461FDFF5ADE5)
User-Agent: KVV.info/1005 CFNetwork/1237 Darwin/20.4.0

https://projekte.kvv-efa.de/departureslive/stops/all
 
Zuletzt bearbeitet:
Oben