public-transport / bvg-hafas

JavaScript client for the BVG HAFAS API.
https://github.com/public-transport/bvg-hafas#bvg-hafas
ISC License
13 stars 0 forks source link
api berlin bvg hafas public-transport transit

bvg-hafas

A client for the HAFAS endpoint of Berliner Verkehrsbetriebe (BVG), the largest public transport provider in Berlin. It acts as a consistent and straightforward interface on top of their verbose API.

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

Note: The BVG HAFAS endpoint covers Brandenburg as well.

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

Installing

npm install bvg-hafas

API

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

Usage

import {createBvgHafas} from 'bvg-hafas'

const client = createBvgHafas('my-awesome-program')

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

const journeys = await client.journeys('900020201', '900068201', {
    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: [ {
        id: '1|62072|0|86|14082018',
        origin: {
            type: 'stop',
            id: '900020201',
            name: 'S+U Jungfernheide',
            location: {
                type: 'location',
                latitude: 52.530273,
                longitude: 13.299064
            },
            products: {
                suburban: true,
                subway: true,
                tram: false,
                bus: true,
                ferry: false,
                express: false,
                regional: true
            }
        },
        departure: '2018-08-14T15:05:00.000+02:00',
        departurePlatform: '6',
        departureDelay: 0,
        destination: {
            type: 'stop',
            id: '900068201',
            name: 'S+U Tempelhof',
            location: {
                type: 'location',
                latitude: 52.470692,
                longitude: 13.385756
            },
            products: { /* … */ }
        },
        arrival: '2018-08-14T15:27:00.000+02:00',
        arrivalPlatform: '2',
        arrivalDelay: 0,
        direction: 'Ringbahn S 42',
        line: {
            type: 'line',
            id: 's42',
            name: 'S42',
            public: true,
            mode: 'train',
            product: 'suburban',
            operator: { /* … */ },
            // …
        },
        cycle: { min: 300, max: 300 }
    } ],
    refreshToken: '…'
}

Related

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.