geOps Logo


Realtime vehicle positions and prognosis data based on scheduled times, realtime updates and GPS locations. Available for S-Bahn Munich. Temporary access for the DBRegioDataHack in March 2021 only.

Websocket address with temporary API key for the hackathon:


We have an example using mobility-toolbox-js.

Our realtime vehicle position API delivers data in “channels” which support classic GET requests (REST API) or websockets with a custom protocol.

Each channel provides different data or a different view of the data. See the swagger documentation for details on the data returned.

Some interesting channels would be:

  • trajectory
  • newsticker
  • station
  • timetable_<ibnr>

Websocket API

This API is based on our redis-websocket-api and supports the same protocol:


BBOX <left> <bottom> <right> <top> // to only receive GeoJSON features within this box plus all messages which are not valid GeoJSON
PROJECTION epsg:<number> // causes all future GeoJSON features to be transformed to the given projection

Fetching data:

GET <key> // fetches all data from a channel
GET <key> <id> // fetches a specific item from the channel
SUB <key> // subscribes the websocket to a channel to get event-based updates
DEL <key> // unsubscribes the client from the channel
PING // causes a PONG response (to avoid timeouts or validate the connection)

A rudimentary example for subscribing to a channel from the #-location in the address bar:

<!DOCTYPE html>
    <title>WebSocket demo</title>
      var ws = new WebSocket(
        messages = document.createElement("ol");
      ws.onmessage = function (event) {
        var messages = document.getElementsByTagName("ol")[0],
          message = document.createElement("li"),
          code = document.createElement("code");
        content = document.createTextNode(;
      ws.onopen = function () {
        ws.send("SUB " + window.location.hash.slice(1));
      window.onhashchange = function () {

Need help?

Feel free to reach out to the team via