Business

Reisadvies API additional documentation

9292 Reisadvies API introduction

The 9292 Reisadvies API offers the opportunity to use 9292’s planner engine within a website or app to give travel information from address to address using all of the public transport options (including personal and rentable vehicles and on-demand transportation) in the Netherlands.

This documentation describes the features of the 9292 Reisadvies API and gives general information on how to use them. This information is an addition to the Swagger documentation we provide.

The 9292 Reisadvies API supports both XML (< v4)and JSON. Knowledge of Web API's and JSON are essential to be able to use this API.

Terms of service

Usage of the 9292 Reisadvies API is prohibited without the approval of 9292.

 

9292 Logo

It is mandatory to show the 9292 Logo. 9292 will give approval on the location of the logo before you transfer to the production environment. This is done to safeguard the usage of the 9292 logo.
The logo can be found at the following URL:

 

Release notes

Software version

Documentation version

Remarks

11-05-2020
v2.6.1

20-01-2020
v1.7.5

  • Added the "plan a journey by bike" and "plan an accessible journey" features to the 9292 Reisadvies API
  • Updated error messages

24-09-2020
v2.7.1

01-09-2020
v1.7.6

  • Added Occupancy data to the 9292 Reisadvies API

08-12-2020
v2.7.2

15-10-2020
v1.7.7

  • Increased the max cycling distance from 20min. to 30min.
  • Updated the CO2 data

22-03-2021
v2.8.0

23-03-2021
v1.7.8

  • Documentation is based on the OpenAPI 3 standard
  • The location search is improved i.e., the matching of search terms to street names which includes numbers and the matching of street names with house numbers is improved
  • Disturbance messages are included in the travel advice
  • Added the following modalities to the planner to be used at the start and/or end of a journey (first mile and last mile): rental bike, electric (rental) bikes, (rental) mopeds
  • Added support for customized transport such as the Watertaxi in Rotterdam
  • Added translations for countries, provinces and stop types
  • Added "taxi" to the list of comparative emissions per modality
  • Increased the default bicycle parking time from 2min. to 5min
  • Various bug fixes

26-04-2021
v2.8.1

26-04-2021
v1.7.9

  • Updated the autosuggest to improve the matching of stations and stops with compound names
  • Improved the matching of occupancy data to journey legs
  • Expanded the Disruption model to display more details
  • Various bug fixes

28-06-2021
v2.8.3

 
  • Performance improvement
  • Various bug fixes
29-06-2021 v2.8.4  
  • Two bugfixes related to FareInfo (tariffs)
05-07-2021 v2.8.5   
  • The StationAbbreviation field was incorrectly left blank in the first/last leg of a voyage when scheduling with coordinates.
04-08-2021 v2.9.0  
  • Fix for recognizing travel advice with delays that cause transfers to become infeasible (FatalDelay)
  • Various framework updates
08-09-2021 v2.9.1  
  • Fix for returning an advice with the correct time when the provided time is in the UTC format (2021-08-30T17:00Z) or if it contains a time zone (2021-08-30T:17:00+02:00)
  • Fix for including subscriptions based on CentrumZone and StarZone information (when applicable) as the most economical product (Prijswijzer requests)

11-10-2021 v3.0.1

  Added a new version (v3) which contains the following updates:
  • DateTime-format of all responses have been changed to the ISO 8601 format (e.g. 2021-10-11T13:00:00.000Z)
  • InterchangeTime property of the JourneyRequest has been changed to specify the desired amount of interchange time in minutes
  • Added a unique identifier (“JourneyId”) to each travelling advice
  • Requesting a travelling advice with minimal walking
  • Requesting a travelling advice based on custom travel time and speed configuration
  • Display fare information in a Leg
  • Display route information in a Leg
  • Requesting unimodal travelling advice for private vehicles or walking
  • Requesting locations near a given point (NearByLocations endpoint)
  • Replanning a public transport travelling advice using the unique JourneyId (“PlannedJourneys” endpoint)
  • Moved the requesting of Prijswijzer information to a separate endpoint (“ProductAdvice”)
  • Various bug fixes

22-11-2021 v3.0.2

 
  • Added “Electric Bicycle” and “Moped” to the list of comparative emissions per modality
  • Updated the CO2 data
  • Requests for unimodal travelling advice returns an error message when no appropriate advice could be found instead of returning a multi-modal travelling advice
  • Route information coordinates conform to the “Well Known Text” LineString format
  • FlexOption parameters are marked as “deprecated” because they will be replaced in a future release
  • Various bug fixes

07-12-2021 v3.0.3

 
  • Performance of the travel advice request has been improved

19-01-2022 v3.0.4

 
  • Made input validation messages more explicit
  • Future-proofed the interval travel advice logic

04-01-2023
v4.0.0

 

Added a new version (v4) which contains the following updates:

  • Removed support for XML-formatted responses from all endpoints
  • Redesigned the request and response of various endpoints and of all error responses for improved clarity
  • The response language is determined by the request header instead of a request parameter
  • Added support for requesting rental bikes and mopeds in the first mile
  • Added support for requesting specific pick-up locations when planning with rental vehicles in both the first mile and last mile
  • Added support for requesting to include a drop-off location in the travel advice for the rented vehicle
  • Added support for requesting 25km/hour or 45km/hour mopeds
  • Added support for requesting “PublicTaxi” (HubTaxi) in both the first mile as well as the last mile
  • Added 2 types to JourneyRequestType, “Earlier” and “Later” which respectively retrieve a set of travel advice that occur before the current set of travel advice and a set that occurs after the current set of travel advice
  • Added 3 types of suggestions (when applicable) to each travel advice:
    - Destination is within walking distance
    - There is a unimodal alternative
    - The first mile and/or last mile is within walking distance
  • Added 2 travel modality groups “OnDemand” and “WithSurcharge” to filter the travel modes used by the planner
  • OnDemand filters all customized transport types
    - WithSurcharge filters all transport types that require a surcharge
    - Added a service label to a leg which contains information received from the operator that provides the service
  • Updated the format of the Journey’s Id property (“JourneyId”) to improve our ability to uniquely identify and retrieve a travel advice
  • Updated the NearbyLocations endpoint to only return locations of the type Station, Stop or POI
  • Added support for requesting the strict enforcement of the customized travel settings
  • Updated the minimal walking option to be available for either the first mile or last mile or both
  • Added the ability to check the API’s availability with a status endpoint
  • Updated the standard duration of vehicle parking legs from 5 to 2 minutes
  • Updated the standard duration of vehicle renting legs from 10 to 4 minutes
  • Added “ElectricBicycle25”, “ElectricBicycle45”, “Moped25”, “Moped45” and “Taxi” to the list of comparative emissions per modality
  • Improved support for unimodal travel advice requests
  • Improved the CO2 emission calculation
  • Various bug fixes

 

API Security

The 9292 Reisadvies API is secured and can only be used when you have been given a Token or a so-called APIKey by 9292. This ‘Token’ exists of symbols and letters, which is provided through a license agreement. This license agreements allows our customers to make requests to our server.
This ‘Token’ should be kept secret and not shared with any other party. In case of misuse 9292 can deactivate your account.

Access token

You will receive a Token via e-mail from the 9292 Servicedesk. The Token is your identification code which gives you access to the acceptance environment of the 9292 Reisadvies API. Once you have completed your implementation and your service has been tested by 9292, you may switch to the production environment. The 9292 Servicedesk will send you a new Token for the production environment.
After transferring to the production environment, the acceptance environment will remain accessible for two weeks.

The Token must be included in the header of each request. Here is an example of a request header:

Header Key

Value

Authorization

Token <MY_TOKEN>

Accept

Application/JSON

Content-Type

charset=utf-8

Please note:

The 9292 Travel Advice API only supports HTTPS requests.

Tokens are sent to identify a particular customer and thus the tapping of the HTTP stream can be abused. This can result in a higher count in the statistics and a higher invoice.

 

Reisadvies API Basic Features

Validity of data in a public transport travelling advice

The 9292 Reisadvies API makes use of changing data (public transport timetables). This is why only data within the validity date range can be used. When an invalid date is used, the 9292 Reisadvies API will return an error message (400 BadRequest).
The validity can be requested using the Dataset endpoint.

The Dataset requests are not counted as billable requests.

 

Requesting the API's availability

The 9292 Reisadvies API offers an endpoint that indicates whether the API is available and if it is in a healthy-state. The API’s health-state can have the value “Healthy”, “Degraded”, and “Unhealthy”. The state is determined by the availability and proper functioning of the API’s sub-systems.

These requests are not counted as billable requests.

 

Requesting locations for a public transport travelling advice

In order to request a location, you will have to call the Locations endpoint of the 9292 Reisadvies API. With a location request, you can get information about a station, place, address, stops or POIs (Point of Interests).
A location request returns 5 locations by default. The number of locations can be configured in the request to be any number between 1 and 10. These locations are sorted by type in the following manner: first locations will be the stations, then the bus/tram/metro stops, then street names, postal codes, etc.
The location request also supports the filtering of the locations based on one or more location types.

This Locations endpoint is NOT an autosuggest. However, it is possible to develop your own autosuggest based on this endpoint.

The request of a location is not counted as a billable request.

 

Requesting nearby locations

In order to request locations near a particular point, you will have to call the NearByLocations endpoint with latitude and longitude coordinates or a ‘locationId’. The 9292 Reisadvies API will then return a list of all locations within a 500 metre radius. This list of locations can consist of stations, stops or point of interests (POI).
The request returns 5 locations by default. The number of locations can be configured in the request to be any number between 1 and 10.
The location request also supports the filtering of the locations based on one or more location types.

The request of nearby locations is not counted as a billable request.

 

Requesting a public transport travelling advice

The Journeys endpoint is used to request a public transport travelling advice. The request returns 9 responses by default. These are advice around the requested time. The number of responses cannot be adjusted.
The FromId, ToId and ViaId must correspond to the ‘Id’ of the location retrieved from the Locations endpoint.

Attributes in a public transport travelling advice

Attributes are data which is sent by a transport company (i.e., NS) that pertains to a (part of the) journey. The Attributes element is not shown in every advice, but only in those where the information is included by the public transport company.

The following table contains examples of possible attributes.

Attribute Id

Attribute value

Description/Remarks

TWEE

alleen 2e klas

The ‘Only 2nd class travel’ Attribute only appears on a small number of trails, namely:


  • Leeuwarden – Harlingen Haven
  • Leeuwarden – Stavoren
  • Zutphen – Hengelo – Oldenzaal
  • Dordrecht - Geldermalsen

WCA

Rolstoeltoegankelijk

Is shown when the modality is accessible

SPEC

Speciaal ticket vereist

Usually shown with Intercity Direct & International trains

FINI

fiets meenemen niet mogelijk

Usually shown with Intercity Direct & International trains

RESM

Reserveren mogelijk

Usually shown with Intercity Direct & International trains

TSR

Toeslag Schiphol - Rotterdam

Usually shown with Intercity Direct & International trains

Structure of an attribute

Attributes can be found in the “Attributes” component of a travel advice. The Attributes component consists of zero or more LegAttributes. Here is an example of an Attributes component:

Example

"attributes": [{
"id": "TWEE",
"title": "alleen 2e klas"
}]

 

Unique identification of a public transport travelling advice

Each public transport travelling advice contains a “JourneyId” which is a unique value that can be used to identify a travelling advice.

Here is an example of a partial travel advice response containing a JourneyId:

Parameter

Description (example)

ShowJourneyId true

Here is an example of a partial travel advice response containing a JourneyId:

Example

{
"journeyId": "i5AAAICqqqrq_3QX0FuYhYsImKmZ6c3CHAxAAyIg1ALscDFwlXD3AHc3ADU1CAgICIEc3S5w
CsMIc3zA4fDBbehx6xSi_A9mfl339JDfYY0CDobmJwy-74_GhDG8e-IQTuF78v1ozPQxTb03pkJVfVFu1aICHn5Q
UrJVq4m1lro6n0odKTOpo3XFtqrR4yE1GrOmHHXPWiMiMov_XYuqUMCY1ruP4CDK7SsfopRneciWJW85LUsuuYY
C5tXvZO45yemSDx13DAUclyzz9f6YckbmkqjkeibrqHFIz7ayZBv7hOQQz8lckoDDAt7kfJS8XG8bOPw3AA",
"journeyState": "TCC43K5Y4CP325D5",
"departureTime": "2022-11-25T15:02:00.0000000Z",
"arrivalTime": "2022-11-25T16:28:00.0000000Z",
"numberOfChanges": 3,
...
}

 

Suggestions for alternative travel options in a public transport travelling advice

A travel advice can contains 3 types of suggestions for alternative travel options:

  • When the destination is within walking distance of the departure, the travel advice will contain a “destinationWithinWalkingDistance” property that contains a boolean value
  • When the first mile (or last mile) of a journey is within walking distance, that specific journey will contain a “stopWithinWalkingDistance” property that contains a Boolean value
  • When there is a unimodal alternative the travel advice will contain 2 extra properties:
    - “withinModalityRange” which is a boolean value that indicates that the travel advice has a unimodal alternative
    - “unimodalDistance” which states the actual unimodal distance in metres

Here’s an example of a travel advice which contains all 3 types of suggestions:

Example

{

"withinModalityRange": true,
"unimodalDistance": 2500,
"destinationWithinWalkingDistance": true,

"journeys": [
{

"stopWithinWalkingDistance": true,

}
}

 

Disruptions in a public transport travelling advice

Disruption messages can be associated with a journey. These messages are sent by the transport company (i.e., NS) for a particular place, station, stop, service and/or for all trips done by an operator.
The disruption messages, if present, are shown in the Disruption element of a journey's leg.

Business rules for displaying disruptions in a journey

The 9292 Reisadvies API supports four types of disruption messages:

  1. Message related to a place
    • A disruption is added to a journey if the name of place where a stop is located corresponds to the place in a disruption message
    • If the corresponding message also contains an operator, the disruption is only added if both the place and the operator in the leg are present in that message
  2. Message related to a stop
    • A disruption is added to a journey if either the departure or arrival location corresponds to the stop in a disruption message
  3. Message related to a service line
    • If the service line of a leg corresponds to the line number in the message, then that message is added as a disruption
    • If a message contains both service lines and stops the disruption will only be added if the leg corresponds to both the service line and the stop
  4. Message related to an operator
    • A disruption message is added to the journey if both the leg and the message reference the same operator number and the message does not contain names of a place, service lines, or stops

Fares in a public transport travelling advice

Fares are shown in all responses. They can be found under FareInfo. The FareInfo consists of fares that represent the entire travelling advice (Journey). It is also possible to display fare information per Leg.

Fares at Journey-level

FareInfo consists of a "Complete" and a "Farelegs" component. When  fares are not available, for example a travelling advice with a ferry, then the element "Complete" will contain the value 'false'. In that case it is not possible to give a total fare for the advice. For the parts where it is possible to give the information, it will be shown per part of the journey.

Train fares

Below an example is given of a NS train fare:

  • 2nd class fare 14,00 euro full price
  • 2nd class fare 8,40 euro reduction price
  • 1st class fare 23,80 euro full price
  • 1st class fare 14,30 euro reduction price

Example

"fareInfo": {
"complete": true,
"reducedPriceEuroCents": 1400,
"fullPriceEuroCents": 840,
"fareLegs": [ {
"fromId": "station-amsterdam-centraal",
"foId": " station-rotterdam-centraal ",
"routeDisplayName": " Amsterdam - Rotterdam",
"operators": ["NS"],
"fares": [ {
"eurocents": 1400,
"Reduced": false,
"class": "Second"
} ,
{
"eurocents": 840,
"reduced": true,
"class": "Second"
} ,
{
"eurocents": 2380,
"reduced": false,
"class": "First"
} ,
{
"eurocents": 1430,
"reduced": true,
"class": "First"
}
],
"starZones": [],
"starValue": "",
"priceUnits": 86
} ]
}
Train price units

The amount of price units of the train is shown under “PriceUnits” of the “FareLegs”.

Tram, bus, metro or ferry

Here is an example of a bus journey from a travelling advice from Leeuwarden to Harlingen with the following fare information:

  • The section of the journey with Arriva bus 97 is:
    • € 5,30 full price
    • € 3,49 with reduction

Example

"fareInfo": {
"complete": true,
"reducedPriceEuroCents": 349,
"fullPriceEuroCents": 530,
"fareLegs": [ {
"fromId": "leeuwarden/bushalte-station",
"toId": "harlingen/bushalte-station",
"routeDisplayName": "Leeuwarden - Harlingen",
"Operators": ["Arriva"],
"fares": [ {
"eurocents": 530,
"reduced": false,
"class": "None"
} ,
{
"eurocents": 349,
"reduced": true,
"class": "None"
}
],
"starZones": [],
"starValue": "",
} ]
}

“FareLegs” within 1 Journey can be added up in the following combinations:

  • Combination: Train + bus/metro or tram
  • Combination: bus/metro/tram + ferry
  • Combination: Train + ferry
  • Combination: Train + ferry + bus/metro/tram
  • Combination: Ferry + bus/metro/tram

The elements below can also be used. These add up all the elements and will show the full and reduction price:

  • <FullPriceEuroCents>603</FullPriceEuroCents>
  • <ReducedPriceEuroCents>398</ReducedPriceEuroCents>

Please note:

We would like to point out that the presenting of reduction prices in case of different modalities needs some explanation. Qualification for reduction in the train has other conditions than the qualification for reduction in bus/tram/metro.

No Fare information available

It is possible that there is no fare information available, because there is no OV-chip card information present (i.e., ferry information). This is indicated in <Fares> as follows:

Example

"fares": [{
"eurocents": null,
"reduced": false,
"class": "None"
},
{
"eurocents": null,
"reduced": true,
"class": "None"
}
]
OV-chipcard valid/not valid

To determine whether the OV-chipcard is valid on a Fareleg, the tariff calculator gives a field NoChipFare to the Planner. The planner gives this back to the client with the same name. This is a boolean-field. This value is true when the OV-chipcard is not valid and it is false when it can be used.

Example

"fareInfo": {
"complete": false,
"reducedPriceEuroCents": null,
"fullPriceEuroCents": null,
"fareLegs": [{
"fromId": "station-leeuwarden",
"toId": "station-harlingen-haven",
"routeDisplayName": "Leeuwarden - Harlingen",
"operators": ["Arriva"],
"fares": [{
"eurocents": 550,
"reduced": false,
"class": "Second"
},
{
"eurocents": 330,
"reduced": true,
"class": "Second"
},
{
"eurocents": 550,
"reduced": false,
"class": "First"
},
{
"eurocents": 330,
"reduced": true,
"class": "First"
}
],
"starZones": [],
"starValue": "",
"priceUnits": 27,
"noChipFare": false
},
{
"fromId": "harlingen/halte-veer-harlingen",
"toId": "vlieland/halte-veer-vlieland",
"routeDisplayName": "Harlingen - Vlieland",
"operators": ["Doeksen"],
"fares": [],
"starZones": [],
"starValue": "",
"noChipFare": true
}
]
}

Fare at Leg-level

The following parameter is available for displaying fare information in a Leg:

Parameter

Description (example)

Fare FareInfoAndLegs

Fare information in the Leg comprises the following components:

Component

Description/Remarks

BaseFareEurocents The base fare (boarding rate)
FareEurocents Fare without the base fare
Class Class type
Reduced Indicates if it is a reduced fare
MultipleLegFare Indicates if the fare is a total price for a combination of consecutive legs
MultipleLegNotice A note explaining that this fare represents a combination of consecutive legs

The following is an example of fares in a Leg:

Example

"legFares": [{
"baseFareEurocents": 99,
"fareEurocents": 48,
"reduced": false,
"class": "None",
"multipleFareLeg": false,
"multipleLegNotice": null
},
{
"baseFareEurocents": 65,
"fareEurocents": 32,
"reduced": true,
"class": "None",
"multipleFareLeg": false,
"multipleLegNotice": null
}]

 

Requesting a public transport travelling advice using a JourneyId

The “PlannedJourneys” endpoint enables the traveller to replan a travel advice they have received. The replanning is equivalent to refreshing the information (i.e., real-time data, occupancy data, disturbances, etc.) in the travel advice.

This endpoint has one parameter:

Parameter

Description (example)

JourneyId The unique identifier for a travel advice

Please note:

  • The JourneyId can be used to retrieve its associated travel advice as long as the travel advice can be recreated by the 9292 planner. Meaning, JourneyId’s can expire.
  • JourneyId’s from the previous version (v3) are supported in the new version

Request:

  • https://<reisadvies-api-url>/v4/PlannedJourneys?JourneyId=C1kAAICqqqrq_3Tnq6s6qKqbm7vLzd0cHMAc_
    OABYIeLmJuAu4GbmQKoiYGDg0MoG8CBa7ghzgFwJhz_
    0IRrXNIk3yp2AkK1-9zb0_He_rV1lX3el5vMY8qLZhhcUhzrDoRZW
    fs4WR7eI3OCQRPrDoRZWfs42UWTPF5qHzJpYh5gcGaVph8FhOBC
    sN7bsG18ScWOinJd-kMownblPDkHgwsnATmDmzzPotwPM8j9Gw

 

Bicycles and mopeds in a public transport travelling advice

This item is a standard feature of the 9292 Reisadvies API. By assigning the ‘FirstMile’ and or ‘LastMile’ parameter with the values ‘PrivateBicycle’,‘PrivateElectricBicycle’ or ‘PrivateMoped’ you can provide the traveller with the appropriate public transport travel advice in which he or she can use their own bicycle, electric bicycle or moped to and from a bicycle transfer point located near a train station or a bus/metro/tram stop.

The 9292 Reisadvies API also supports the use of rental bicycles and mopeds. To use rental vehicles in the first mile or last mileassign the value ‘PublicBicycle’, ‘PublicElectricBicycle’ or ‘PublicMoped’ to the ‘FirstMile’ and/or ‘LastMile’ parameters.

When requesting rental vehicles it is required to also fill-in a rental location. This is done using the “PickUpLocation” parameter. This will return a transport travel advice with extra transition-legs to and from the requested rental location.

Here's an overview of the parameters needed to have bicycles and mopeds in a travel advice:

Parameter

Description (example)

FirstMile The type of transportation to use in the first mile (e.g. “PublicBicycle”)
LastMile The type of transportation to use in the last mile (e.g. “PublicMoped”)
FirstMileOptions.PickUpLocation The desired rental location to be used

Please note:

  • The 9292 planner does not take into account the actual availability of the requested rentable vehicle type
  • Not all departure or arrival locations will have the requested rental modality type.
  • In order to provide the traveller with a better user experience there is the option to request all possible rental modality types for a specific location by using the 9292 Locations API. By combining this information with a travel request you can ensure that the traveller receives an appropriate travel advice

Request:

  • https://<reisadvies-api-url>/v4/Journeys?FromId=station-den-haag-hs&ToId=station-rotterdam-centraal&Firstmile=publicbicycle&FirstmileOptions.PickUpLocation=OV-Fiets-gv001

Vehicle drop-off location

It is also possible to request the inclusion of a drop-off location in a travel advice. The optional drop-off parameter is as follows:

Parameter

Description (example)

FirstMileOptions.IncludeVehicleDropOff Indicates if the travel advice must include a drop-off location for the rented vehicle

The 9292 Reisadvies API will find an appropriate location to drop-off the rented vehicle. If a drop-off is requested for the first mile of a journey then the appointed drop-off location will be within 500 metres of the Public Transportation transfer point. And if a drop-off is requested for the last mile of a journey then the appointed drop-off will be within 500 metres of the traveller’s destination.

This will result in a transport travel advice with extra transition-legs to and from the requested drop-off location.

Please note:

  • Some rental vehicles must be returned to a specific location and if the renter does not comply, the rental period will not close which will lead to higher rental charges than expected.
  • If a mandatory drop-off location is not within 500 metres of a transfer point or the final destination the Reisadvies API will return an error stating that no journey with a drop-off could be found.
  • Use the 9292 Locaties API to determine whether or not a specific rental vehicle must be returned to a specific location.

 

Business rules for planning a journey by bicycle

The standard business rules for planning a journey by bicycle are:

  • Bicycle speed is 13.8 km per hour
  • The maximum cycling distance we use is 6.9 km (30 min)
  • The 9292 Reisadvies API adds a 2 minute bicycle parking and walking time to the relevant stop by default
  • When renting we give the traveller 4 minutes to retrieve their rental bicycle

 

Business rules for planning a journey by moped or electric bike

The standard business rules for planning a journey by scooter are:

  • These vehicles are grouped by their maximum top speed which is either 25 km per hour (km/h) or 45 km/h
  • When both vehicle groups are present the default is to select a 25 km/h vehicle
  • The 9292 Reisadvies API uses the following rules for 25 km/h mopeds and electric bicycles:
    - The standard speed is 20 km/h per hour
    - The maximum distance used is 10 km (30 min)
  • For 45 km/h vehicles the following rules apply:
    - The standard speed is 35 km/h per hour
    - The maximum distance used is 17,5 km (30 min)
  • There is a 2 minute parking and walking time to the relevant stop by defaultt
  • When renting we give the traveller 4 minutes to retrieve their rental moped

Last Mile pick-up and drop-off locations

The 9292 Reisadvies API provides the option to request a last mile rental (pick-up) location and/or a vehicle drop-off point for the rented vehicle by using the following three step process:

  1. Request the relevant journey and specify the desired modality type and custom travel settings for the last mile of the travel advice by using the “LastMile” and “LastMileOptions” parameters respectively.
  2. Select the appropriate travel advice from the list of travel advice returned by the API
  3. Request to expand the selected travel advice with the desired pick-up location and to include a drop-off location by using the “LastMilePlannedJourneys” endpoint.

The "LastMilePlannedJourneys” endpoint uses the following parameters:

Parameter

Description (example)

JourneyId The unique identifier for a travel advice
PickUpLocation The desired rental location to be used
IncludeVehicleDropOff Indicates if the travel advice must include a drop-off location for the rented vehicle

The following is an example of a request followed by a partial response:

Request:

  • https://<reisadvies-api-url>/v4/LastMilePlannedJourneys? JourneyId=i3YAAICqqqrq_3QXsJurRaiKx2KuNwOzMAgP87hEqMddzVTC
    XAHMVA3U1B3AISDEA474k6JTihQJbsCcQaPHPzD4Ea8p0L2JjkBD84r92
    tb92h_qt6Ko-6I4NqwYn_bI7-fzFzP_dOabmVN2PN14ujGDgC7F5ehAw
    5Zt9jGUKeZMydmlHCnkZO0MAkzcsXIUyou10-PgQ6Bwib8g4GS3_
    OnnJ0jX6zD7cfDjfZwJBLQ2k_FLxhIlYqmwlMoopbHSiA8v1XO1P6idVF
    pKENDZRKClgBNNLWXr5w20_DcA&PickupLocation=HTM-Fiets-7955d46d-7f95-469e-b8b4-fcbb0b1a153f&IncludeVehicleDropOff=true

Example

{

"legs": [
{
"id": "leg0.0",
"type": "Scheduled",
"modalityGroup": "Train",
"modalityDescription": "Intercity",
"departureTime": "2022-12-01T10:21:00.0000000Z",
"arrivalTime": "2022-12-01T10:41:00.0000000Z",
"durationInMinutes": 20,
"from": "station-rotterdam-centraal",
"to": "Den Haag HS",

},
{
"id": "leg0.1",
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Lopen als modaliteit",
"departureTime": "2022-12-01T10:41:00.0000000Z",
"arrivalTime": "2022-12-01T10:43:00.0000000Z",
"durationInMinutes": 2,
"from": "Den Haag HS",
"to": "@52.069679,4.322893",

},
{
"id": "leg0.2",
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Huren voertuig",
"departureTime": "2022-12-01T10:43:00.0000000Z",
"arrivalTime": "2022-12-01T10:47:00.0000000Z",
"durationInMinutes": 4,
"from": "@52.069679,4.322893",
"to": "@52.069679,4.322893",

},
{
"id": "leg0.3",
"type": "Continuous",
"modalityGroup": "PublicBicycle",
"modalityDescription": "Verhuurfiets als modaliteit",
"departureTime": "2022-12-01T10:47:00.0000000Z",
"arrivalTime": "2022-12-01T10:56:00.0000000Z",
"durationInMinutes": 9,
"from": "@52.069679,4.322893",
"to": "@52.077636,4.314671",

},
{
"id": "leg0.4",
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Inleveren voertuig",
"departureTime": "2022-12-01T10:56:00.0000000Z",
"arrivalTime": "2022-12-01T11:00:00.0000000Z",
"durationInMinutes": 4,
"from": "@52.077636,4.314671",
"to": "@52.077636,4.314671",

},
{
“id”: “leg0.5”,
"type": "Continuous",
"modalityGroup": "Walking",
"modalityDescription": "Lopen als modaliteit",
"departureTime": "2022-12-01T11:00:00.0000000Z",
"arrivalTime": "2022-12-01T11:05:00.0000000Z",
"durationInMinutes": 5,
"from": "@52.077636,4.314671",
"to": "den-haag/binnenhof",

}

}

 

On demand transport in a public transport travelling advice

The 9292 Reisadvies API supports three types of on demand transport; the "HalteTaxi”, “WaterTaxi” and "HubTaxi”. The first two types are automatically included in the travel advice when appropriate and can also be excluded from the travel advice by filling the “ExcludedTravelModes” parameter with “OnDemand” or “WithSurcharge”. The “HubTaxi” is an on-demand transport that needs to be explicitly requested by specifying “PublicTaxi” in the “FirstMile” and/or “LastMile” parameters. The traveller is also required to make a reservation online or by telephone to request the taxi pick-up.

Please note:

  • The “FirstMileOptions” and “LastMileOptions” parameters do not apply when requesting a “PublicTaxi”
  • The 9292 Locaties API has a “OperatorDetails” endpoint that is to be used to obtain the required HubTaxi telephone number

 

Minimize walking distance in a public transport travelling advice

The ‘minimize walking distance’ option allows you to provide the traveller with an appropriate travel advice in which the walking distance of the first mile and/or the last mile is minimized.

The following parameter is available to minimize the walking distance in the travel advice:

Parameter

Description (example)

FirstMileOptions.LessWalking

true

LastMileOptions.LessWalking

true 

 

Customized travel time and speed settings in a public transport travelling advice

By using the option to customize the travel time and speed settings used by the 9292 ReisadviesAPI you can provide the traveller with an appropriate travel advice in which he/she can specify the desired travel time and speed for the first and last mile independently.

The following parameters are available for customizing the settings in a public transport travelling advice:

Parameter

Description (example)

FirstMileOptions.UserSpeed

The first mile travel speed in km/h. When omitted the standard travel speed of the selected first mile modality will be used

FirstMileOptions.UserMaxTravelTime

Maximum travel time in minutes for the first mile

LastMileOptions.UserSpeed

The last mile travel speed in km/h. When omitted the standard travel speed of the selected last mile modality will be used

LastMileOptions.UserMaxTravelTime

Maximum travel time in minutes for the last mile

Business rules for customizing the travel time and speed settings

The business rules for the travel speed settings are as follows:

  • The 9292 Reisadvies API defines the standard travel speed by foot as 4.2 km per hour
    • The lower bound for this setting is 2 km per hour
    • The upper bound is 5 km per hour
  • The standard travel speed by bicycle is 13.8 km per hour
    • The travel speed setting has a lower bound of 10 km per hour
    • The upper bound is 22 km per hour
  • The standard travel speed used by the 9292 Reisadvies API for 25km/h mopeds and electric bicycles is 20 km per hour
    • The lower bound is 10 km per hour
    • The upper bound is 22 km per hour
  • The standard travel speed for 45 km/h mopeds and electric bicycles is 35 km per hour
    • The lower bound is 15 km per hour
    • The upper bound is 40 km per hour

The business rules for the travel time settings are:

  • The 9292 Reisadvies API defines 20 minutes as standard for the maximum travel time on foot
    • The lower bound for customizing this setting is 10 minutes
    • The upper bound is 30 minutes
  • The standard maximum travel time by bicycle is 30 minutes
    • The lower bound is 15 minutes
    • The upper bound is 45 minutes
  • The standard for mopeds and electric bicycles is a maximum travel time of 30 minutes
    • The lower bound is 15 minutes
    • The upper bound is 45 minutes

If there are no valid travel options based on the specified maximum travel time, the 9292 Reisadvies API will search for alternatives that do not comply with the traveller’s travel time settings.
It is possible to strictly enforce the travel time settings by using the following parameter:

Parameter

Description (example)

StrictTravel

true

 

Occupancy information in a public transport travelling advice

By using the option ‘Occupancy information’ you can provide the traveller with an appropriate travel advice including the occupancy per vehicle and you can give an occupancy forecast for the entire journey.

The following parameters are available to add the occupancy information to the travel advice:

Parameter

Description (example)

ShowOccupancy

true

Classification and visualization of the occupancy

The occupancy is indicated on a scale from 0-5 in accordance with the BISON specification “Concept interface occupancy”. The occupancy can be visualized with the corresponding color or the corresponding icon.

In the following table an example is given how 9292 translates the data in her own apps and website.

BISON occupancy value

Enumeration

Color

9292 icon

Remarks

0

No information

 

Level 0 icon

No information received or occupancy unknown

1

Empty

 

Level 1 icon

At the NS numbers 1 and 2 will be converted to 2

2

Many seats available

 

Level 2 icon

At the NS <65% of the seats on the train are taken

3

Few seats available

 

Level 3 icon

At the NS >65% and <100% of the seats per train are taken

4

Standing room only

 

Level 4 icon

At the NS >100% of the seats on the train are taken

5

Full

 

Level 5 icon

Only relevant for real time data.
This data is not supplied yet, but will be in the future

The icons accommodate the visually impaired by making a clear distinction between the icons.

Occupancy example

A travel advice from Waterlooplein in Amsterdam to Stadsschouwburg in Utrecht.

  • leg 1:    Tram - 3 stops (busy-quiet-busy) gets the indicator BUSY
  • leg 2:    Train Amsterdam Central Station to Utrecht Central Station - 2 stops (average-quiet) gets the indicator AVERAGE
  • leg 3:    Bus - a couple of stops (quiet-quiet-average-quiet-average) gets the indicator AVERAGE

The whole journey will get the indicator BUSY because 1 leg has the indicator “BUSY”.

The indicator will be aggregated to the busiest stop of the journey.

 

Route information in a public transport travelling advice

You can provide the traveller with an appropriate travel advice in which each Leg contains a corresponding route.

Use the following parameter to add route information to each leg of a travel advice:

Parameter

Description (example)

Route

true

The route information can be found under the Route element of a Leg. The Route consist of 3 elements:

  1. The "Bounds"
    • This element contains 4 coordinates that define the boundaries of the route. These four coordinates are; MaxLatitude (northern boundary), MaxLongitude (eastern boundary), MinLatitude(southern boundary), and MinLongitude (western boundary)
  2. The “Distance”
    • This element contains the distance in metres of the route. The distance will only be filled for walk-legs, bicycle-legs, and moped-legs
  3. The “RouteString”
    • This element contains a series of coordinates (one per stop/intermediate stop) that comprise the route covered by the Leg. The series of coordinates are formatted as a “Well Known Text” (WKT) LineString

Here is an example of such a route information:

Example

"route": {
"routeString": "LINESTRING (4.66219 51.81394, 4.66257 51.81392, 4.66257 51.81392, 4.66264 51.81391,
4.66328 51.81389, 4.66373 51.81389, 4.66389 51.81392, 4.66392 51.81388, 4.66402 51.81373, 4.66411 51.8136,
4.66415 51.81354, 4.66418 51.81351, 4.66421 51.81348, 4.66433 51.81353, 4.66451 51.81336, 4.66504 51.81285,
4.66529 51.8126, 4.66574 51.8125, 4.66572 51.81245, 4.66608 51.81208, 4.66609 51.81199, 4.66602 51.81191,
4.66609 51.81192, 4.66614 51.81191, 4.66636 51.81188, 4.66652 51.81185, 4.66647 51.81175, 4.6664 51.81159,
4.66638 51.81151, 4.66664 51.81146, 4.6666 51.81137, 4.66668 51.81136, 4.6676 51.81122)",
"distance": 586,
"bounds": {
"MaxLatitude": 51.81395,
"MaxLongitude": 4.662163,
"MinLatitude": 51.81212,
"MinLongitude": 4.66043
}
}

Unimodal public transport travelling advice

By using the ‘unimodal’ option you can provide the traveller with an appropriate travel advice consisting of a single journey by foot, (electric) bicycle or moped from the departure location to the arrival location. The travel mode used is defined by the FirstMile parameter.

Use the following additional parameters to receive a unimodal travel advice:

Parameter

Description (example)

Unimodal

true

FirstMile

The type of transportation to use in the first mile (e.g. “PublicBicycle”)

FirstMileOptions.PickUpLocation

The desired rental location to be used

Business rules for unimodal public transport travelling advice

The combination of the first mile and the total distance between the departure and arrival location need to comply with one of the following criteria:

First mile

Route type

Max distance between departure and arrival location

Walking

Walk route

 ≤ 1,4 km (default settings)

Bicycle

Bicycle route

 ≤ 6,9 km (default settings)

Electric bicycle (25km/h)

Bicycle route

 ≤ 10 km (default settings)
Electric bicycle (45km/h) Bicycle route   ≤ 17,5 km (default settings)

Moped (25km/h)

Bicycle route

 ≤ 10 km (default settings)
Moped (45km/h) Moped route   ≤ 17,5 km (default settings)

If the above criteria is not met, the 9292 Reisadvies API will return an error message.

 

Reisadvies API Optional Features

StarZones in a public transport travelling advice

This is an optional feature that can be purchased and added to the 9292 Reisadvies API  at your request.
The star values and star zones are used in the so-called ‘Sterabonnementen’ subscriptions. If this functionality is activated, the 9292 Reisadvies API will calculate which monthly ticket is required for the travelling advice. This monthly ticket is no longer used everywhere in the Netherlands, thus it is only given when this monthly ticket is applicable. This is demonstrated in the following example

In this example the requested travelling advice is from Station Koog Zaandijk to Station Krommenie Assendelft where the modality train is excluded:

Request:

  • https://<reisadvies-api-url>/v4/Journeys?FromId=station-koog-aan-de-zaan&ToId=station-krommenie-assendelft& &ExcludedTravelModes=train

When there are Star zones present in the travelling advice, the response is as follows:

Example

"starZones": [
"3722”,
“3732”,
“3733”,
“3742"
],
"starValue": "2",
"priceUnits": null

When there are no Star zones present, the following is returned:

Example

"StarZones": []

The Star value can be both a numeric and an alphabetic value. There are seven possible values: 1 to 6 and ‘Netabonnement’. With a value greater than 6, the value Netabonnement will be displayed, as this value is valid in the entire country for city and region transport.

Multiple monthly tickets required

It is possible that for one journey more than 1 monthly ticket is required. In that case multiple elements <FareLeg> are shown, in which the first FareLeg the tariff information shows for the total journey. After this the <FareLeg> is shown per required monthly ticket. This is shown as follows in the <Fares>:

Example

"fareInfo": {
"complete": true,
"reducedPriceEuroCents": 1161,
"fullPriceEuroCents": 1759,
"fareLegs": [{
"fromId": "scherpenisse/bushalte-spuidamstraat",
"toId": "hellevoetsluis/bushalte-amnesty-internationallaan",
"routeDisplayName": "Scherpenisse - Hellevoetsluis",
“modalityGroups”: [
“Bus”,
“Subway”
],
"operators": [
"Connexxion”,
“Arriva”,
“RET”,
“EBS"
],
"fares": [{
"eurocents": 1759,
"reduced": false,
"class": "None"
},
{
"eurocents": 1161,
"reduced": true,
"class": "None"
}],
"starZones": [],
"starValue": "",
"priceUnits": null,
"noChipFare": false
},
{
"fromId": "scherpenisse/bushalte-spuidamstraat",
"toId": "halsteren/bushalte-nieuwe-molenweg",
"routeDisplayName": "Scherpenisse - Halsteren",
“modalityGroups”: [
“Bus”
],
"operators": [
"Connexxion"
],
"fares": [],
"starZones": [
"7233”,
“7243”,
“7248”,
“7259”,
“7738"
],
"starValue": "3",
"priceUnits": null,
"noChipFare": false
},
{
"fromId": "rotterdam/metrostation-zuidplein",
"toId": "hellevoetsluis/bushalte-amnesty-internationallaan",
"routeDisplayName": "Rotterdam - Hellevoetsluis",
"operators": [
"RET”,
“EBS"
],
"fares": [],
"starZones": [
"5246”,
“5247”,
“5336”,
“5337”,
“5358"
],
"starValue": "5",
"priceUnits": null,
"noChipFare": false
}]
}

 

CO2 in a public transport travelling advice

This optional component can be purchased and added to the 9292 Reisadvies API upon request.
By using the CO2 option in the public transport travel advice, your users can compare how much CO2 they save per public transport journey by travelling with Public Transport.
The calculation of CO2 is based on CO2 emissions per kilometre and Well-to-Wheel (WTW) = the emissions of both the pre-use phase and the direct emissions together.
The summaries are shown below for the different modes of transport.

The CO2 values listed below originate from the website co2emissiefactoren.nl and are the initiative of SKAO, Stimular, Connekt, Milieu Centraal and the central government and were created in collaboration with various stakeholders.


Private/Shared Transportation

Category

CO2 emissions

Bicycle 0
Electric bicycle (25km/h) 6
Electric bicycle (45km/h)
Moped (25km/h) 17
Moped (45km/h) 32 

Small Car

180

Mid-class Car

202

Large Car

236


Public transport

Category

CO2 emissions

Tram

0

Bus

103

Metro

0

Train

2

Ferry

115

Taxi

202

Sources consulted:

A sample travel advice with CO2 from zip code 3221AL in Hellevoetsluis to zip code 3078PE in Rotterdam:

Request:

  • https://<reisadvies-api-url>/v4/Journeys?FromId=hellevoetsluis/3221al&ToId=rotterdam/3078pe

Response:

Example

"cO2EmissionInfo": {
"journeyEmission": 2.0229999999999997,
"journeyDistance": 29.676351183943982,
"emissionsByModality": [{
"modalityName": "Bicycle",
"emission": 0
},
{
"modalityName": "Bus",
"emission": 3.057
},
{
"modalityName": "CarLarge",
"emission": 7.004
},
{
"modalityName": "CarMedium",
"emission": 5.995
},
{
"modalityName": "CarSmall",
"emission": 5.342
},
{
"modalityName": "ElectricBicycle25",
"emission": 0.178
},
{
"modalityName": "ElectricBicycle45",
"emission": 0.178
},
{
"modalityName": "Ferry",
"emission": 3.413
},
{
"modalityName": "Moped25",
"emission": 1.424
},
{
"modalityName": "Moped45",
"emission": 0.95
},
{
"modalityName": "Subway",
"emission": 0
},
{
"modalityName": "Taxi",
"emission": 5.995
},
{
"modalityName": "Train",
"emission": 0.059
},
{
"modalityName": "Tram",
"emission": 0
}
]
}

An explanation of the most relevant elements of the response above:

Elements

Description (example)

JourneyDistance

measured straight line distance of the journey in kilometres

JourneyEmission

total CO2 emissions based on public transport in kilograms

JourneyByModality

List of CO2 emission of particular modalities

 

Realtime in a public transport travelling advice

This is an extra feature that can be purchased and added to the 9292 Reisadvies API at your request.

By using the functionality ‘Realtime travelling advice’ you provide the traveller with an appropriate travelling advice including delays (train, bus, metro or tram). When there are changes in time, the journey can be rescheduled, and alternatives are offered by 9292.

The following parameters are added to the 9292 Reisadvies API to display real time in the travelling advice.

Properties

Description (example)

ArrivalRealTime

Actual arrival time

DepartureRealTime

Actual departure time

Call.RealtimeState

None, Offset, Cancelled

RealTimeInfo.Cancellations

None of Cancellations

RealTimeInfo.Delays

None, InternalDelay

RealTimeInfo.Detour

Normal

RealTimeInfo.LudMessage

<Text>Dit is een alternatief reisadvies.</ Text>

Delays on a journey

The example below shows how delays are indicated. In the example both the departure time and the arrival time have changed compared to the original time.

Original departure time and arrival time are:

  • DepartureTime 2022-11-05T11:03:00.0000000Z
  • ArrivalTime 2022-11-05T11:27:00.0000000Z

Example

"departureRealtime": "2022-11-05T11:32:00.0000000Z",
"arrivalRealtime": "2022-11-05T11:55:00.0000000Z",
"realtimeInfo": {
"ludMessages": [],
"detour": "Normal",
"cancellations": "None",
"delays": "InternalDelay
}

Real time departure and arrival times on a stop

In a travelling advice for every stop the real time departure and arrival time is indicated, as is also the case for stops in-between. In the example below the bus has left the bus stop "Claudius Prinsenlaan" in Breda earlier than originally planned. The bus should have departed at 10:05h but has left the stop at 10:02h.

Example

"calls": [{
"departureTime": "2022-11-17T10:05:00.0000000Z",
"arrival": "2022-11-17T10:05:00.0000000Z",
"arrivalRealtime": "2022-11-17T10:02:00.0000000Z",
"departureRealtime": "2022-11-17T10:02:00.0000000Z",
"realtimeState": "Offset",
"fareZones": [{
"zone": "7200",
"selected": true
}],
"location": {
"id": "breda/bushalte-claudius-prinsenlaan",
"stationAbbreviation": null,
"displayName": "ClaudiusPrinsenlaan",
"type": "Stop",
"typeDescription": "Bushalte",
"latitude": 51.587575,
"longitude": 4.784468
"placeId": "breda",
"placeName": "Breda",
"regionCode": "NB",
"regionName": "Noord-Brabant",
"showRegion": false,
"countryCode": "NL",
"countryName": "Nederland",
"showCountry": false,
"placeLatitude": 51.594976,
"placeLongitude": 4.779766
},

}]

Planned journey is cancelled

When a planned journey is cancelled, a cancelled message will be sent by the public transport company. This is shown in the example below.

The sprinter (train) from Amersfoort to Zwolle is cancelled. For every station/ stop of that journey, the RealtimeState shows Cancelled.
Thus, this travelling advice is cancelled. It is considered very important to present this information to the traveller and to give an explanation.

Request:

  • https://<reisadvies-api-url>/v4/Journeys?FromId=station-amersfoort&ToId=zwolle

Example

"realtimeInfo": {
"ludMessages": [],
"detour": "Normal",
"cancellations": "Cancellations",
"celays": "None"
},

"call": [{
"platform": "2b",
"departureTime": "2022-11-04T19:43:00.0000000Z",
"arrivalTime": "2022-11-04T19:42:00.0000000Z",
"departureRealTime": null,
"arrivalRealTime": null,
"realtimeState": "Cancelled",
"fareZones": [{
"zone": "5042",
"selected”: true
}],
"location": {
"id": "station-amersfoort",
"stationAbbreviation": "amf",
"displayName": "Amersfoort",
"type": "Station",
"typeDescription": "Station",
"latitude": 52.153484,
"longitude": 5.373807,
"placeId": "amersfoort",
"placeName": "Amersfoort",
"RegionCode": "UT",
"RegionName": "Utrecht",
"ShowRegion": false,
"CountryCode": "NL",
"CountryName": "Nederland",
"ShowCountry": false,
"PlaceLatitude": 52.153484,
"PlaceLongitude": 5.373807
},

]

Transfer connection not realized

It can occur that a transfer connection cannot be realized. For example when there is a delay in the first part of the journey. The RealtimeInfo shows a FatalDelay, the remaining output does not change.
Thus, this travelling advice is cancelled. It is considered very important to present this information to the traveller and to give an explanation.

Example

"realtimeInfo": {
"ludMessages": [],
"detour": "Normal",
"cancellations": "None",
"delays": "FatalDelay"
}

Alternative travelling advice after cancelled journey

When a public transport travelling advice is cancelled, often an alternative travelling advice is offered. It is considered very important to present this information to the traveller.

For example the journey from Kampen Zuid to Amsterdam Bijlmer Arena (sprinter train) has been cancelled. There is an Intercity (train) from Kampen Zuid to Duivendrecht followed by a transfer with the Metro to Amsterdam Bijlmer Arena.

The most important change in the response is displayed in the example below:

Example

"realtimeInfo": {
"ludMessages": [{
"text": "Dit is een alternatief reisadvies.",
"url": null
}],
"detour": "Normal",
"cancellations": "None",
"delays": "InternalDelay"
}

Extra journey

When the NS inserts an extra journey, this is displayed in the 9292 Reisadvies API.
In the example below an extra journey is inserted between Harderwijk and Zwolle: an extra intercity (train) with journey number 29600.
This type of travelling advice is called ‘Alternatief reisadvies’ as is shown in the Ludmessage.

It can occur that there is no Platform or Platformchange information available, as is shown in the example below. This means that 9292 has not received this information or that this information has not been processed.

Example


"departureTime": "2022-11-17T09:00:00.0000000Z",
"arrivalTime": "2022-11-17T09:27:00.0000000Z",
"arrivalRealTime": "2022-11-17T09:58:00.0000000Z",
"realtimeInfo": {
"ludMessages": [{
"text": "Dit is een alternatief reisadvies.",
"url": null
}],
"detour": "Normal",
"cancellations": "None",
"delays": "InternalDelay"
},
"legs": [{
"type": "Scheduled",
"modalityGroup": "Train",
"modalityDescription": "Intercity",
"departureTime": "2022-11-17T09:00:00.0000000Z",
"arrivalTime": "2022-11-17T09:27:00.0000000Z",
"arrivalRealTime": "2022-11-17T09:58:00.0000000Z",
"durationInMinutes": 58,
"operatorName": "NS",
"destination": "Zwolle",
"service": "29600",
"attributes": [],
"calls": [{
"departureTime": "2022-11-17T09:00:00.0000000Z",
"arrivalTime": null,
"realtimeState": "None",
"fareZones": [{
"zone": "4961",
"selected": true
}],
"location": {
"id": "station-harderwijk",
"stationAbbreviation": "hd",
"displayName": "Harderwijk",
"type": "Station",
"typeDescription": "Station",
"latitude": 52.337846,
"longitude": 5.620297,
"placeId": "harderwijk",
"placeName": "Harderwijk",
"regionCode": "GL",
"regionName": "Gelderland",
"showRegion": false,
"countryCode": "NL",
"countryName": "Nederland",
"showCountry": false,
"placeLatitude": 52.337675,
"placeLongitude": 5.620047
}
},
{
"arrival": "2022-11-17T09:27:00.0000000Z",
"arrivalRealTime": "2022-11-17T09:58:00.0000000Z",
"realtimeState": "Offset",
"fareZones": [{
"zone": "4680",
"selected": true
},
{
"zone": "4610",
"selected": false
},
{
"zone": "4601",
"selected": false
}],
"location": {
"id": "station-zwolle",
"stationAbbreviation": "zl",
"displayName": "Zwolle",
"type": "Station",
"typeDescription": "Station",
"latitude": 52.505185,
"longitude": 6.091078,
"placeId": "zwolle",
"placeName": "Zwolle",
"regionCode": "OV",
"RegionName": "Overijssel",
"ShowRegion": false,
"CountryCode": "NL",
"CountryName": "Nederland",
"ShowCountry": false,
"placeLatitude": 52.505185,
"placeLongitude": 6.091078
}
}]
}]

Extra stop

When a journey has an extra stop, this will be displayed as followed in the 9292 Reisadvies API:

  • This service is converted to the 9292-format
  • and the element LudMessages is filled in

The 9292 Reisadvies API does not indicate which additional station/stop has been added. For these stations/stops the departure/arrival platform information might not be available.

The response of a journey with an extra stop is as follows:

Example

"realtimeInfo": {
"ludMessages": [{
"text": "Dit is een alternatief reisadvies.",
"url": null
}],
"detour": "Normal",
"cancellations": "None",
"delays": "None"
},
"departureTime": "2022-11-18T13:24:00.0000000Z",
"arrivalTime": "2022-11-18T14:01:00.0000000Z",
"legs": [{
"type": "Scheduled",
"modalityGroup": "Train",
"modalityDescription": "Intercity",
...
}

 

OV Prijswijzer in the public transport travelling advice

This feature is optional and can be added to the 9292 Reisadvies API upon request.

By using the ‘OV Prijswijzer’ option, you will provide the traveller with appropriate subscription information for the train, bus, metro or tram of their travelling advice. The retrieval of this information is done using the ProductAdvice endpoint.

For more information about the ‘OV Prijswijzer’ we refer you to our website 9292.nl. There you will find the list of subscriptions used by the ‘OV Prijswijzer’.

ProductAdvice request

The ProductAdvice endpoint requires the following parameters to show the Prijswijzer API advice for a travel advice.

Parameter

Description (example)

JourneyId

A travel advice’s unique identifier

TravellerAge

Age (number between 4 and 100)

TravellerFrequencyPeriod

Period (number 1 or 2)

1=week,

2=month

TravellerFrequency

Number of days (number between 1 and 31, dependent on TravellerFrequencyPeriode)

If TravellerFrequencyPeriod = 1, then TravellerFrequency must be between 1 and 7.

If TravellerFrequencyPeriod = 2, then TravellerFrequency must be between 1 and 31.

Here is an example of a valid request with the following information:

Field

Parameter

JourneyId

station-alkmaar~station-utrecht-centraal~~0~C0nHlCAAB$$HmH040~~~B~9~129~~3600215~3627006~

Traveller's Age

24

Number of days

3

Period (week)

1

Request:

  • https://<reisadvies-api-url>/v4/ProductAdvice?JourneyId=station-alkmaar~station-utrecht-centraal~~0~C0nHlCAAB$$HmH040~~~B~9~129~~
    3600215~3627006~&TravellerAge=24&TravellerFrequency=3&TravellerFrequencyPeriod=1

ProductAdvice response

In the example below, we show the XML & JSON of a ProductAdvice response.

Example

{
"rOSYearTotal": 358524,
"rOSMonthTotal": 29877,
"yearBasedProducts": [{
"productAdviceSubSet": [{
"productDetail": {
"productRoutes": [{
"destination": "Station Leiden Centraal",
"departure": "Station Amsterdam Centraal",
"transportType": "Train"
},
{
"destination": "Station Den Haag Centraal",
"departure": "Station Leiden Centraal",
"transportType": "Train"
}
],
"informationURL": "https://9292.nl/prijzen-en-abonnementen/trein/abonnementen/altijd-voordeel#",
"productName": "Altijd Voordeel Jaar",
"productPrice": 310819,
"productSaldoPrice": 358524,
"saldoPrice": 358524,
"starValue": null,
"centrumZones": null,
"additionalInformation": null,
"productCompanies": []
}
}]
}]
}

Accessible journeys in a public transport travelling advice

This optional feature can be added to the 9292 Reisadvies API at your request.

By using the option ‘Planning an accessible journey & Stop Accessibility’ you provide the traveler with the appropriate travel advice suited for someone with a physical disability. In addition, all travel advice (whether or not planned with accessibility) are provided with information regarding a stop's accessibility.

The following parameters are available to get an accessible public transport travel advice.

Parameter

Description (example)

PlanWithAccessibility

true

Business rules for an accessible travel advice

  • The walk speed is 45 meters per minute
  • Every transfer point uses 10 minutes extra transfer time
  • The 9292 Reisadvies API plans with accessible stops as indicated in the ‘CHB’ and with accessible vehicles as indicated by the public transport companies in the timetables

Accessibility of stops

The following attributes are added to the call element:

  • DisabledAccessible
    • This attribute can be used to determine whether or not a stop is wheelchair accessible
  • VisuallyAccessible
    • This attribute can be used to determine whether or not a stop is accessible for people with visual impairment

Possible values for these attributes:

Values

Meaning

Accessible

Stop is accessible

NotAccessible

Stop is not accessible

Unknown

No information available