Skip to content

Trip-Request

Herzstück der Fahrplanauskunft: berechnet Verbindungen zwischen zwei Punkten mit Abfahrts-/Ankunftszeit, Optionen für ÖV, Individualverkehr, Fahrrad, P&R, Mobilitäts­einschränkungen und Echtzeit.

Endpoint

  • Pfad: XML_TRIP_REQUEST2
  • Methode: GET

Obligatorische Parameter

Point-Input mit Suffix _origin und _destination:

ParameterBeschreibung
type_origin, name_originStartpunkt
type_destination, name_destinationZielpunkt

Plus ein Pflicht-Makro:

ParameterWertBeschreibung
tripReductionMacro1HTTP-Makro — bündelt erforderliche Trip-Parameter serverseitig (siehe Makros)

Allgemeine Optionen

ParameterWerteBeschreibung
calcNumberOfTripsGanzzahl (Default: 4)Anzahl Verbindungen
calcOneDirection1Vor-/Nach-Varianten unterdrücken
itdTripDateTimeDepArrdep (Default) | arrZeit­bezug: Abfahrt oder Ankunft
useRealtime1Echtzeit anreichern (isRealtimeControlled, realtimeStatus, *TimePlanned, *TimeEstimated)
dwellTime_viaMinutenAufenthalt am Zwischenhalt (0 → Adressen/POIs als Via ausschließen)

Für via zusätzlich Point-Input mit Suffix _via; siehe Point-Input.

Verkehrsmittel-Filter

Ausschluss:

ParameterWerteBeschreibung
excludedMeanscheckbox | MOT-IDAusschluss-Modus aktivieren oder Modus direkt ausschließen
exclMOT_<ID>beliebigVerkehrsmittel via MOT-ID ausschließen (Anwesenheit zählt)

Einschluss:

ParameterWerteBeschreibung
includedMeanscheckbox | MOT-IDEinschluss-Modus aktivieren
inclMOT_<ID>beliebigNur dieses Verkehrsmittel zulassen

WARNING

Bei exclMOT_* / inclMOT_* zählt die Anwesenheit des Parameters — auch 0 oder false aktiviert den Filter. Zum Deaktivieren den Parameter weglassen.

Mobilitätseinschränkungen

ParameterBeschreibung
imparedOptionsActive=1Barrierefreiheits­optionen aktivieren (Vorbedingung)
lowPlatformVhclNur Niederflur-Fahrzeuge
noElevatorsUmstiege mit Aufzug vermeiden
noEscalatorsUmstiege mit Rolltreppe vermeiden
noSolidStairsUmstiege mit festen Treppen vermeiden
wheelchairNur rollstuhl­gerechte Fahrzeuge

ÖV-Optionen

ParameterWerteBeschreibung
ptOptionsActive1ÖV-Optionen aktivieren (sonst serverseitiger Default)
changeSpeedfast (50) | normal (100, Default) | slow (200)Umstiegszeit-Faktor
lineRestriction400 (alle) | 401 (kein ICE) | 402 (Verbund ohne Aufschlag) | 403 (Verbund + Regional)Linien­typ-Filter
maxChanges0 (direkt) | 1 | 2 | 9 (Default)Max. Umstiege
routeTypeleastinterchange | lasttime (Default, schnellste) | leastwalkingOptimierungsziel
useProxFootSearchOrig1Umliegende Halte am Start berücksichtigen
useProxFootSearchDest1Umliegende Halte am Ziel berücksichtigen

Individualverkehr

ParameterWerteBeschreibung
itOptionsActive1IV-Optionen aktivieren
changeSpeedfast (120) | normal (100, Default) | slow (80)Zu Fuß/Rad-Geschwindigkeits-Faktor
trITMOT100 (Fuß) | 101 (B&R) | 102 (Rad im ÖV) | 103 (K&R) | 104 (P&R) | 105 (Taxi)Zu-/Abgangsmodus
trITMOTvalueMinutenMax. Dauer des IV-Teils (Default: 10)
trITArrMOT / trITArrMOTvalues. o.Separate Werte für den Ankunfts-Teil
trITDepMOT / trITDepMOTvalues. o.Separate Werte für den Abfahrts-Teil

Fahrrad

ParameterWerteBeschreibung
calcBicycleMacroonFahrrad-Routing aktivieren (Makro)
brRoutingMacrotrueBike & Ride-Verbindungen
std3_bikeSettingstakealong | toFirstStop | fromLastStopRad-/ÖV-Kombination
cycleSpeedkm/hRad-Geschwindigkeit
maxTimeBicycleMinutenMax. Rad-Anteil
parkingMaxDistanceMeterSuchradius für Rad-Abstellplätze

Park & Ride

ParameterWerteBeschreibung
prRoutingMacrotrueP&R-Routing aktivieren (Makro)
maxLengthCarMeterMax. PKW-Distanz
maxTimeCarMinutenMax. PKW-Dauer

Beispiel-Requests

Schnellste Verbindung heute, mit Echtzeit:

GET /XML_TRIP_REQUEST2
    ?outputFormat=JSON
    &tripReductionMacro=1
    &type_origin=any&name_origin=de:05911:5494
    &type_destination=any&name_destination=de:05315:11000
    &calcNumberOfTrips=4
    &useRealtime=1

Rollstuhl­gerecht, ohne ICE, mit Zwischenhalt:

GET /XML_TRIP_REQUEST2
    ?outputFormat=JSON
    &tripReductionMacro=1
    &type_origin=any&name_origin=de:05911:5494
    &type_via=any&name_via=de:05911:6012
    &dwellTime_via=5
    &type_destination=any&name_destination=de:05315:11000
    &imparedOptionsActive=1&wheelchair
    &ptOptionsActive=1&lineRestriction=401
    &useRealtime=1

Bike & Ride:

GET /XML_TRIP_REQUEST2
    ?outputFormat=JSON
    &tripReductionMacro=1
    &calcBicycleMacro=on
    &brRoutingMacro=true
    &std3_bikeSettings=toFirstStop
    &type_origin=coord&name_origin=7.0128:51.4513:WGS84[dd.ddddd]
    &type_destination=any&name_destination=de:05315:11000
    &cycleSpeed=17&maxTimeBicycle=20
    &parkingMaxDistance=500

Antwort (Beispiel)

json
{
  "trips": [
    {
      "duration": 1980,
      "interchange": 1,
      "legs": [
        {
          "mode": { "name": "Bus 196", "mot": 5 },
          "origin": { "id": "de:05911:5494", "name": "Essen Hbf", "departureTimePlanned": "2025-01-25T08:22:00Z", "departureTimeEstimated": "2025-01-25T08:24:00Z" },
          "destination": { "id": "de:05913:1000", "name": "Ziel", "arrivalTimePlanned": "2025-01-25T08:46:00Z" },
          "realtimeStatus": "MONITORED"
        }
      ]
    }
  ]
}

JavaScript-Beispiele

js
async function searchTrip({ from, to, when } = {}) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_TRIP_REQUEST2'
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    tripReductionMacro: '1',
    type_origin: 'any', name_origin: from,
    type_destination: 'any', name_destination: to,
    calcNumberOfTrips: '4',
    useRealtime: '1'
  })
  if (when?.date) usp.set('itdDate', when.date)
  if (when?.time) usp.set('itdTime', when.time)
  if (when?.kind === 'arr') usp.set('itdTripDateTimeDepArr', 'arr')
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
ts
type Leg = {
  mode: { name: string; mot: number }
  origin: { name: string; departureTimePlanned: string; departureTimeEstimated?: string }
  destination: { name: string; arrivalTimePlanned: string }
  realtimeStatus?: string
}

export function summarizeTrip(trip: { legs: Leg[] }) {
  return trip.legs.map(l =>
    `${l.mode.name}: ${l.origin.name} (${l.origin.departureTimeEstimated ?? l.origin.departureTimePlanned}) → ${l.destination.name} (${l.destination.arrivalTimePlanned})`
  ).join('\n')
}
js
async function searchAccessibleTrip(from, to) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_TRIP_REQUEST2'
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    tripReductionMacro: '1',
    type_origin: 'any', name_origin: from,
    type_destination: 'any', name_destination: to,
    imparedOptionsActive: '1',
    wheelchair: '1',
    noEscalators: '1',
    lowPlatformVhcl: '1'
  })
  const res = await fetch(`${base}?${usp}`)
  return res.json()
}

Hinweise

  • URL-Pfad: XML_TRIP_REQUEST2 — nicht XML_TRIP_REQUEST.
  • tripReductionMacro=1 ist Pflicht — ohne dieses Makro sind die meisten Trip-Antworten unvollständig oder leer.
  • Welche konkreten Parameter ein Makro (tripReductionMacro, calcBicycleMacro, …) expandiert, ist instanz­abhängig — siehe Makros bzw. den Betreiber fragen.
  • Für den Abgleich Soll vs. Ist auf Halt-Ebene siehe DM-Request / DMTTP-Request.
  • Fehlerbehandlung: Guide · Error Handling.