Search train journeys between two locations for a travel date.
Authentication and headers
| Header | Description |
|---|---|
Authorization | Bearer <secret_key>. Keep the secret on the server and never write it to client logs. |
X-Travelandz-Id | <public_key>:<profile_code>, where the persisted profile code has the form dp_<12 alphanumeric>. |
Content-Type | application/json for requests with a JSON body. |
Request
Required JSON body:
json
{
"origin": "originId",
"destination": "destinationId",
"date": "2026-08-20",
"passengers": [{ "type": "adult" }]
}origin and destination are location ids. date uses YYYY-MM-DD. passengers must contain at least one item with type set to youth, adult, or senior.
Request Body Schema
originLocation id returned by
/locations.destinationLocation id returned by
/locations.datepassengerspassengers[]typeyouth = 0–27 years, adult = 28–59 years, senior = 60+ years.Success response
Returns journeys[]. Each journey includes gdsprovider, journeyId, itineraries, segments, stopovers, route, comfort classes, accommodations and ticket classes. Segment times are ISO 8601.
Response Body Schema
journeysjourneys[]gdsproviderjourneys[]journeyIdjourneys[]itineraryjourneys[]itinerary[]itineraryIndexjourneys[]itinerary[]segmentsjourneys[]itinerary[]segments[]segmentIdjourneys[]itinerary[]segments[]departurejourneys[]itinerary[]segments[]departuredepartureAtjourneys[]itinerary[]segments[]departurenamejourneys[]itinerary[]segments[]departurelocationIdjourneys[]itinerary[]segments[]departurecountryjourneys[]itinerary[]segments[]departurecountryCodejourneys[]itinerary[]segments[]arrivaljourneys[]itinerary[]segments[]arrivalarrivalAtjourneys[]itinerary[]segments[]arrivalnamejourneys[]itinerary[]segments[]arrivallocationIdjourneys[]itinerary[]segments[]arrivalcountryjourneys[]itinerary[]segments[]arrivalcountryCodejourneys[]itinerary[]segments[]identifierjourneys[]itinerary[]segments[]transportjourneys[]itinerary[]segments[]durationInMinutesjourneys[]itinerary[]segments[]operatorjourneys[]itinerary[]segments[]operatorcodejourneys[]itinerary[]segments[]operatornamejourneys[]itinerary[]segments[]operatorimageUrljourneys[]itinerary[]segments[]servicejourneys[]itinerary[]segments[]servicenamejourneys[]itinerary[]segments[]serviceimageUrljourneys[]stopoversjourneys[]stopovers[]stopoverIndexjourneys[]stopovers[]durationInMinutesjourneys[]routejourneys[]route[]itineraryIndexjourneys[]route[]stopoverIndexjourneys[]comfortClassesjourneys[]comfortClasses[]journeys[]accommodationsjourneys[]accommodations[]journeys[]ticketClassesjourneys[]ticketClasses[]comfortClassjourneys[]ticketClasses[]serviceClassErrors
400for validation or unknown fields.401or403for invalid API credentials.500 internal_communication_errororunknown_errorfor provider failures.404 zero_journeys_foundwhen no journey is available.
Usage notes
Keep journeyId for the offers request. operator.imageUrl and service.imageUrl can be null.
cURL example
bash
curl --request POST \
--url "https://api.sandbox.travelandz.com/v1/trains/journeys" \
--header "Authorization: Bearer $TRAVELANDZ_SECRET_KEY" \
--header "X-Travelandz-Id: $TRAVELANDZ_PUBLIC_KEY:$TRAVELANDZ_PROFILE_CODE" \
--header "Content-Type: application/json" \
--data '{"origin":"originId","destination":"destinationId","date":"2026-08-20","passengers":[{"type":"adult"}]}'