Trip-Request
Herzstück der Fahrplanauskunft: berechnet Verbindungen zwischen zwei Punkten mit Abfahrts-/Ankunftszeit, Optionen für ÖV, Individualverkehr, Fahrrad, P&R, Mobilitätseinschränkungen und Echtzeit.
Endpoint
- Pfad:
XML_TRIP_REQUEST2 - Methode: GET
Obligatorische Parameter
Point-Input mit Suffix _origin und _destination:
| Parameter | Beschreibung |
|---|---|
type_origin, name_origin | Startpunkt |
type_destination, name_destination | Zielpunkt |
Plus ein Pflicht-Makro:
| Parameter | Wert | Beschreibung |
|---|---|---|
tripReductionMacro | 1 | HTTP-Makro — bündelt erforderliche Trip-Parameter serverseitig (siehe Makros) |
Allgemeine Optionen
| Parameter | Werte | Beschreibung |
|---|---|---|
calcNumberOfTrips | Ganzzahl (Default: 4) | Anzahl Verbindungen |
calcOneDirection | 1 | Vor-/Nach-Varianten unterdrücken |
itdTripDateTimeDepArr | dep (Default) | arr | Zeitbezug: Abfahrt oder Ankunft |
useRealtime | 1 | Echtzeit anreichern (isRealtimeControlled, realtimeStatus, *TimePlanned, *TimeEstimated) |
dwellTime_via | Minuten | Aufenthalt 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:
| Parameter | Werte | Beschreibung |
|---|---|---|
excludedMeans | checkbox | MOT-ID | Ausschluss-Modus aktivieren oder Modus direkt ausschließen |
exclMOT_<ID> | beliebig | Verkehrsmittel via MOT-ID ausschließen (Anwesenheit zählt) |
Einschluss:
| Parameter | Werte | Beschreibung |
|---|---|---|
includedMeans | checkbox | MOT-ID | Einschluss-Modus aktivieren |
inclMOT_<ID> | beliebig | Nur 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
| Parameter | Beschreibung |
|---|---|
imparedOptionsActive=1 | Barrierefreiheitsoptionen aktivieren (Vorbedingung) |
lowPlatformVhcl | Nur Niederflur-Fahrzeuge |
noElevators | Umstiege mit Aufzug vermeiden |
noEscalators | Umstiege mit Rolltreppe vermeiden |
noSolidStairs | Umstiege mit festen Treppen vermeiden |
wheelchair | Nur rollstuhlgerechte Fahrzeuge |
ÖV-Optionen
| Parameter | Werte | Beschreibung |
|---|---|---|
ptOptionsActive | 1 | ÖV-Optionen aktivieren (sonst serverseitiger Default) |
changeSpeed | fast (50) | normal (100, Default) | slow (200) | Umstiegszeit-Faktor |
lineRestriction | 400 (alle) | 401 (kein ICE) | 402 (Verbund ohne Aufschlag) | 403 (Verbund + Regional) | Linientyp-Filter |
maxChanges | 0 (direkt) | 1 | 2 | 9 (Default) | Max. Umstiege |
routeType | leastinterchange | lasttime (Default, schnellste) | leastwalking | Optimierungsziel |
useProxFootSearchOrig | 1 | Umliegende Halte am Start berücksichtigen |
useProxFootSearchDest | 1 | Umliegende Halte am Ziel berücksichtigen |
Individualverkehr
| Parameter | Werte | Beschreibung |
|---|---|---|
itOptionsActive | 1 | IV-Optionen aktivieren |
changeSpeed | fast (120) | normal (100, Default) | slow (80) | Zu Fuß/Rad-Geschwindigkeits-Faktor |
trITMOT | 100 (Fuß) | 101 (B&R) | 102 (Rad im ÖV) | 103 (K&R) | 104 (P&R) | 105 (Taxi) | Zu-/Abgangsmodus |
trITMOTvalue | Minuten | Max. Dauer des IV-Teils (Default: 10) |
trITArrMOT / trITArrMOTvalue | s. o. | Separate Werte für den Ankunfts-Teil |
trITDepMOT / trITDepMOTvalue | s. o. | Separate Werte für den Abfahrts-Teil |
Fahrrad
| Parameter | Werte | Beschreibung |
|---|---|---|
calcBicycleMacro | on | Fahrrad-Routing aktivieren (Makro) |
brRoutingMacro | true | Bike & Ride-Verbindungen |
std3_bikeSettings | takealong | toFirstStop | fromLastStop | Rad-/ÖV-Kombination |
cycleSpeed | km/h | Rad-Geschwindigkeit |
maxTimeBicycle | Minuten | Max. Rad-Anteil |
parkingMaxDistance | Meter | Suchradius für Rad-Abstellplätze |
Park & Ride
| Parameter | Werte | Beschreibung |
|---|---|---|
prRoutingMacro | true | P&R-Routing aktivieren (Makro) |
maxLengthCar | Meter | Max. PKW-Distanz |
maxTimeCar | Minuten | Max. 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=1Rollstuhlgerecht, 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=1Bike & 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=500Antwort (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— nichtXML_TRIP_REQUEST. tripReductionMacro=1ist Pflicht — ohne dieses Makro sind die meisten Trip-Antworten unvollständig oder leer.- Welche konkreten Parameter ein Makro (
tripReductionMacro,calcBicycleMacro, …) expandiert, ist instanzabhä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.