public-transport / db-hafas

JavaScript client for the Deutsche Bahn HAFAS API.
https://github.com/public-transport/db-hafas
ISC License
75 stars 5 forks source link
api deutsche-bahn germany transit transport

db-hafas

A client for the German Railways (DB). It acts as a consistent and straightforward interface on top of a verbose API.

This project is actually a thin wrapper around hafas-client@6. Its docs document the API in general.

npm version ISC-licensed support me via GitHub Sponsors chat with me on Twitter

Installing

npm install db-hafas

API

Check the docs for hafas-client@6 as well as its DB-specific customisations.

Getting Started

import {createDbHafas} from 'db-hafas'

const hafas = createDbHafas('my-awesome-program')

As an example, we will search for a route from Berlin Jungfernheide to München Hbf. To get the station IDs, use locations(query, [opt]).

// Berlin Jungfernheide to München Hbf
const {journeys} = await hafas.journeys('8011167', '8000261', {
    results: 1,
})
console.log(journeys[0])

The output will be an array of journey objects in the Friendly Public Transport Format 1.2.1 format:

[ {
    type: 'journey',
    legs: [ {
        tripId: '1|300793|27|80|27032019',
        origin: {
            type: 'stop',
            id: '8089100',
            name: 'Berlin Jungfernheide (S)',
            location: {
                type: 'location',
                id: '8089100',
                latitude: 52.530408,
                longitude: 13.299424
            },
            products: {
                nationalExpress: false,
                national: false,
                regionalExp: false,
                regional: true,
                suburban: true,
                bus: true,
                ferry: false,
                subway: true,
                tram: false,
                taxi: false
            },
            station: {
                type: 'station',
                id: '8011167',
                name: 'Berlin Jungfernheide',
                location: { /* … */ },
                products: { /* … */ }
            }
        },
        departure: '2019-03-27T14:10:00.000+01:00',
        departureDelay: 0,
        departurePlatform: '6',
        destination: {
            type: 'stop',
            id: '8089073',
            name: 'Berlin Südkreuz (S)',
            location: { /* … */ },
            products: { /* … */ },
            station: { /* … */ }
        },
        arrival: '2019-03-27T14:30:00.000+01:00',
        arrivalDelay: 0,
        arrivalPlatform: '12',
        direction: 'Berlin Südkreuz (S)',
        line: {
            type: 'line',
            id: 's-42',
            fahrtNr: '42133',
            name: 'S 42',
            public: true,
            mode: 'train',
            product: 'suburban',
            operator: {type: 'operator', id: 's-bahn-berlin', name: 'S-Bahn Berlin'}
        },
        cycle: {min: 300, max: 300, nr: 25}
    }, {
        origin: { /* … */ },
        departure: '2019-03-27T14:30:00.000+01:00',
        destination: { /* … */ },
        arrival: '2019-03-27T14:37:00.000+01:00',
        public: true,
        walking: true,
        distance: 622
    }, {
        tripId: '1|245684|0|80|27032019',
        origin: { /* … */ },
        departure: '2019-03-27T14:37:00.000+01:00',
        departureDelay: 0,
        departurePlatform: '3',
        destination: {
            type: 'stop',
            id: '8000261',
            name: 'München Hbf',
            location: { /* … */ },
            products: { /* … */ }
        },
        arrival: '2019-03-27T19:06:00.000+01:00',
        arrivalDelay: 0,
        arrivalPlatform: '18',
        direction: 'München Hbf'
        line: {
            type: 'line',
            id: 'ice-1601',
            fahrtNr: '1601',
            name: 'ICE 1601',
            public: true,
            mode: 'train',
            product: 'nationalExpress',
            operator: { /* … */ }
        },
    } ],
    refreshToken: '…',
    price: {amount: null, hint: 'No pricing information available.'}
} ]

Similar Projects

Also check hafas-client's related projects.

Contributing

If you have a question, found a bug or want to propose a feature, have a look at the issues page.