JavaScript module for finding the cheapest railway connections using the Deutsche Bahn Sparpreise API. Inofficial, using an endpoint by Deutsche Bahn. Ask them for permission before using this module in production.
npm install db-prices
prices()
returns a Promise
that will resolve with a list of offers.
const prices = require('db-prices')
prices(from, to, [date], [opt]).then(…)
from
and to
must be station IDs like '8000105'
.
date
must be a Date
object; if empty, the current datetime will be used.
With opt
, you can override the default options, which look like this:
{
class: 2, // 1st class or 2nd class
noICETrains: false,
transferTime: 0, // in minutes
duration: 1440, // search for routes in the next n minutes
preferFastRoutes: true
travellers: [{ // one or more
bc: 0, // BahnCard ID (see https://gist.github.com/juliuste/202bb04f450a79f8fa12a2ec3abcd72d)
typ: "E", // E: adult: K: child; B: baby -- BUG: child and baby dont work ATM
alter: 30 // age
}],
}
The result will be a list of Friendly Public Transport Format journey
objects.
With from = '8000105'
, to = '8011160'
and date = new Date('2016-08-17T00:00:00.000Z')
, the result looked like this:
[
{
type: 'journey',
id: '0',
origin: {
type: 'station',
id: '8000105',
name: 'Frankfurt(Main)Hbf'
},
destination: {
type: 'station',
id: '8098160',
name: 'Berlin Hbf (tief)'
},
legs: [{
origin: {
type: 'station',
id: '8000105',
name: 'Frankfurt(Main)Hbf'
},
start: '2017-06-05T08:53:00.000Z',
departurePlatform: '13',
destination: {
type: 'station',
id: '8098160',
name: 'Berlin Hbf (tief)'
},
end: '2017-06-05T13:17:00.000Z',
arrivalPlatform: '7',
line: {
type: 'line',
id: 'ice-1537',
name: 'ICE 1537',
product: 'ICE'
}
}],
price: {
currency: 'EUR',
amount: 126,
discount: false,
name: 'Flexpreis',
description: 'Fully flexible (not bound to a specific train / not dependent on the connection indicated on the selected route). Exchanges and refunds free of charge; on or after the first day of validity subject to a fee.'
},
nightTrain: false
}
// …
]
- db-hafas – "JavaScript client for the DB HAFAS API."
- db-hafas-rest – "DB Hafas REST API"
- db-stations – "A list of DB stations."
If you found a bug, want to propose a feature or feel the urge to complain about your life, feel free to visit the issues page.
Cheers to Jannis R for contributing.