Access public transit data from Nederlandse Spoorwegen API with node.js
To use this module you need API access credentials, which you can request at Here (Dutch).
const NSAPI = require ('ns-api');
const ns = new NSAPI ({
key: 'abc123',
});
// Output w/o limits
function out (data) {
console.dir (data, {
depth: null,
colors: true,
});
}
// Get travel advise
ns.getTrips ({
fromStation: 'UT',
toStation: 'AMF',
})
.then (out)
.catch (console.error)
;
npm i ns-api
param | type | default | description |
---|---|---|---|
key | string | One of your API keys | |
[timeout] | number | 8000 | Request time out in ms |
const NSAPI = require ('ns-api');
const ns = new NSAPI ({
key: 'abc123',
});
Each method returns a Promise, so make sure to catch the errors properly.
When a method takes arguments they are only accepted in object notation. This way the order no longer matters and it makes it easier to reuse them.
methodName ({ one, two });
I'm not going to outline to full possibilities of each method here, only the parts that adjust the API response or make the request easier. Read the API documentation links to find all available parameters that each method can take.
List of all stations
ns.getAllStations()
.then (data => data.filter (station => station.land === 'NL'))
.then (data => console.table (data, ['code', 'stationType']))
.catch (console.error)
;
List of arrivals at a station. It requires a station
or uicCode
.
parameter | type | description |
---|---|---|
[dateTime] | Date or string | Limit to starting time, will be converted to the right format |
ns.getArrivals ({
dateTime: '2019-05-10',
station: 'UT',
})
.then (data => console.table (data, ['name', 'origin', 'actualDateTime']))
.catch (console.error)
;
List of all current calamities
parameter | type | description |
---|---|---|
[lang] | string | Text language |
ns.getArrivals ({ lang: 'en' })
.then (console.log)
.catch (console.error)
;
List all departures at a station. It requires a station
or uicCode
.
parameter | type | description |
---|---|---|
[dateTime] | Date or string | Limit to starting time, will be converted to the right format |
ns.getDepartures ()
.then (console.log)
.catch (console.error)
;
List of disruptions/maintenance.
parameter | type | description |
---|---|---|
[actual] | boolean | Only return disruptions within 2 hours |
ns.getDisruptions()
.then (data => console.table (data, ['titel']))
.catch (console.error)
;
List of disruptions at a station
parameter | type | description |
---|---|---|
[dateTime] | Date or string | Limit to starting time, will be converted to the right format |
ns.getStationDisruption ({ dateTime: '2019-05-10' })
.then (data => console.table (data, ['titel']))
.catch (console.error)
;
Get details about one disruption
parameter | type | description |
---|---|---|
type | string | Disruption type |
id | string | Disruption object ID |
ns.getDisruption ({
type: 'maintenance',
id: '7001000',
})
.then (console.log)
.catch (console.error)
;
Get a list of travel advises
parameter | type | description |
---|---|---|
[dateTime] | Date or string | Limit to starting time, will be converted to the right format |
ns.getTrips ({
dateTime: '2019-05-10 17:40',
fromStation: 'Amersfoort',
toStation: 'Den Haag',
})
.then (console.log)
.catch (console.error)
;
Get a specific travel advise
parameter | type | description |
---|---|---|
ctxRecon | string | Trip ctxRecon from getTrips() |
ns.getTrip ({ ctxRecon: 'abc123' })
.then (console.log)
.catch (console.error)
;
Get pricing for travel between two stations.
parameter | type | description |
---|---|---|
fromStation | string | Station name or ID |
toStation | string | Station name or ID |
ns.getPrices ({
fromStation: 'AMF',
toStation: 'Den Haag',
})
.then (console.log)
.catch (console.error)
;
Get information about a specific journey.
You can find the id
in the trip data from getTrip()
at trip.legs[].journeyDetail[].link.uri
.
Just use that whole path.
parameter | type | description |
---|---|---|
id | string | Journey ID |
ns.getJourney ({
id: 'HARP_S2S-1|3824|0|784|8052021',
})
.then (console.log)
.catch (console.error)
;
Search for places. Returns an array.
argument | type | description |
---|---|---|
parameters | object | See API docs |
ns.placesList ({
q: 'utrecht cs',
});
Get details about one place. Returns an object.
parameter | type | description |
---|---|---|
type | string | Place type, ex: stationV2 |
id | string | Place ID, ex: AMF |
[lang] | string | Response language |
ns.placesGet ({
type: 'stationV2',
id: 'AMF',
});
Get a list of OV Fiets locations. Returns an array.
parameter | type | description |
---|---|---|
[station_code] | string | Filter by station |
ns.placesOvfiets ({
station_code: 'AMF',
});
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to https://unlicense.org/