PT OPS

Journey Planner

Find connections between two stations using the current timetable.

Last updated: October 8, 2026
GET /entur/journey Authentication required

Finds up to 5 journeys (max 3 legs each) between two stations using the current timetable, similar to a basic journey planner. Exactly one of departureAfter or arriveBefore must be supplied.

Query parameters

  • startStation / endStation – location codes, must be different and known.
  • departureAfter – earliest departure, e.g. 2026-09-07 08:00 or 07.09.2026 08:00.
  • arriveBefore – latest arrival, same accepted formats.
  • includeCancelled – optional, true or 1. Also returns journeys that use cancelled trains, marked with "cancelled": true. Cancelled trains are excluded by default.
[
  [
    {
      "trainNumber": "301",
      "operator": "PTR",
      "routeNumber": "R81",
      "cancelled": false,
      "from": {
        "code": "SK", "name": "Skogviken",
        "time": "07.09.2026 08:07",
        "plannedTime": "07.09.2026 08:02",
        "delayMinutes": 5
      },
      "to": {
        "code": "KLH", "name": "Kirkenes Lufthavn Høybuktmoen",
        "time": "07.09.2026 08:39",
        "plannedTime": "07.09.2026 08:34",
        "delayMinutes": 5
      }
    }
  ]
]

Response fields

  • time – the real (current) time, including any delay.
  • plannedTime – the planned timetable time. null if the stop has no planned time.
  • delayMinutes – time minus plannedTime in minutes. null when there is no planned time.
  • cancelled – true if the leg is cancelled, otherwise false. Cancelled legs are only returned when includeCancelled is set.
  • estimated – true if the leg comes from the planned timetable instead of live data (requests for a day other than today).

Behaviour

  • Boarding and alighting – you can only board at a stop whose type allows passenger departure and only alight at a stop whose type allows passenger arrival.
  • Cancellations – an arrival is cancelled if the stop or the previous stop is cancelled. A departure is cancelled if the stop or the next stop is cancelled.
  • Ranking – with departureAfter, journeys are ordered by earliest arrival, then latest departure. With arriveBefore, by latest departure, then earliest arrival. Fewer legs break any remaining tie.
  • Filtering – a journey is dropped if another one leaves no earlier, arrives no later and has no more legs, and is better on at least one of these. Journeys that only differ in where the change happens keep the earliest change point. Journeys never return to a station already visited. Cancelled and running journeys are filtered separately.
  • Other days – live data only exists for today. If departureAfter or arriveBefore is on any other day (future or past), the result is an approximation built from the planned default routes. Those legs have "estimated": true, no delay (delayMinutes is 0), are never cancelled, and exclude extra trains.
  • Limits – the first train must leave within 12 hours of departureAfter (or within 12 hours before arriveBefore), and a change allows at most 120 minutes of waiting.

Each result is an array of one or more legs (connections). Journeys are cached for up to 60 seconds and re-built from the current timetable when the cache expires.