A JavaScript API for Berlin & Brandenburg public transport.

Usage no npm install needed!

<script type="module">
  import vbb from 'https://cdn.skypack.dev/vbb';



vbb is a JavaScript API for the Berlin & Brandenburg public transport service (VBB). It puts a consistent and straightforward promise-based interface on top of the verbose HAFAS REST API. vbb is MIT-licensed and embraces prototypal programming.

npm version dependency status


npm install vbb

Getting Started

We require the vbb factory function and pass the API key.

var vbb = require('vbb');
var client = vbb('<your API key>');

We have access to three methods now:

  • locations to find stations, addresses and POIs
  • routes to get routes between locations
  • departures to query the next departures at a station

As an example, we will search for a route from Berlin Hauptbahnhof to Berlin Charlottenburg.

First, we have to look up the ids of those two stations:

var Promise = require('bluebird');

    client.locations('Berlin Hauptbahnhof'),   // start query promise
    client.locations('Berlin Charlottenburg'),   // dest. query promise
    function (startResults, destResults) {   // the results of both promises
        var startId = startResults[0].id;
        var destId = destResults[0].id;

        return client.routes({
            from: startId,
            to: destId
).then(function (routes) {

The output will have the following structure:

  duration: 600000,   // milliseconds
  parts: [   // all "sections" of the route
      from: {
        title: 'S+U Berlin Hauptbahnhof',
        latitude: 52.525849,
        longitude: 13.368928,
        id: 9003201,
        type: 'station',
        notes: {
          lift: true,
          tactilePaving: true,
          escalator: true
        when: Sat Aug 01 2015 15:48:00 GMT+0200 (CEST)   // `Date` object
      to: {
        title: 'S Charlottenburg Bhf (Berlin)',
        latitude: 52.505048,
        longitude: 13.305212,
        id: 9024101,
        type: 'station',
        notes: {},
        when: Sat Aug 01 2015 15:58:00 GMT+0200 (CEST)   // `Date` object
      transport: 'public',   // another value: `'walk'`
      type: 'suburban',   // another value: `'subway'`
      direction: 'S Spandau Bhf (Berlin)',
      notes: {}


vbb API Dokumentaion


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