This package provides an API for accessing departure data from the realtime system of the Oslo public transportation system. Its features are:

  • Find stations by name
  • Retrieve realtime data for stations. Falls back to schedule data when no realtime data is available

In addition to the API, two command line scripts are included: tf_realtime and tf_search.


Author: runefh at gmail dot com Web site:


Import the module:

>>> import trafikanten

Search for some stations:

>>> trafikanten.find_station("holmenk")
[{'xcoord': u'592869', 'ycoord': u'6648156', 'id': u'03012370', 'district': u'Oslo', 'name': u'Holmenkollen'}]

Get realtime data for the found station:

>>> trafikanten.get_realtime('03012370') # doctest: +ELLIPSIS

The same usign a caching class would go like this:

>>> import trafikanten
>>> tf = trafikanten.MemoryCacheTrafikanten()
>>> tf.find_station("holmenk")
[{'xcoord': u'592869', 'ycoord': u'6648156', 'id': u'03012370', 'district': u'Oslo', 'name': u'Holmenkollen'}]
>>> tf.get_realtime('03012370') # doctest: +ELLIPSIS

Usage notes

The package provdes module level functions for making requests to trafikanten without any caching. It's however strongly recommended that developers use one of the provided caching API classes, or implement their own caching.

With regard to caching, the following rules of thumb should be followed:

  • Station search data can be cached for a long time, as that data rarely
    changes. An hour is the default in the API, but more is fine.
  • Realtime data should be cached for no more than 20 seconds. In other words,
    this caching will only be useful under load.

The above rules of thumb are the defaults for the caching classes.

Known issues

  • There is currently no way to map from a station id to a station name. If you need this your only choice is to cache all station id/name pairs from searches and hope whatever you're looking for has been searched for at one point.
  • There is currently no way to determine if realtime data is available for a certain stop. Getting an empty list as the result from a realtime query may mean that there is no data available, or that there are noe upcomming departures.
  • There is currently no way to get the "shortname" of a station, or to retrieve realtime data based on shortnames

To do

  • More tests
  • More docs
  • Better caching classes