Live data
Public transport
curl 'https://api.kart-api.se/v1/trafik' # operators with an open real-time feed
curl 'https://api.kart-api.se/v1/trafik/otraf' # vehicles right now, as GeoJSONEach vehicle carries position, bearing, speed (m/s) and — when the mapping exists — the route short name, headsign and mode (route_type: 0 tram, 1 metro, 2 rail, 3 bus, 4 ferry). Data refreshes every 30 seconds; we only poll the operators when somebody is looking.
Six counties have no feed, and the API names them
/v1/trafik answers with saknar_flode: the county codes with no open real-time feed at Trafiklab. Today that is Södermanland, Västra Götaland (which includes Gothenburg), Västmanland, Jämtland, Västerbotten and Norrbotten.
That is deliberately a field in the response and not a footnote in this text. A layer that is silently missing reads as "nothing is moving" — and Gothenburg is not a city where the buses stand still.
Freshness
feed_ts is the operator's own timestamp, hamtad is when we fetched it. If they differ a lot, the feed is behind, not us. Show a clock rather than a map that looks live without being live.
What is not here
Aircraft positions (ADS-B) exist in the platform but are not part of the public API: the source is ODbL-licensed in a way that makes an open JSON endpoint a database in its own right, with share-alike consequences for anyone building on it. We show them on our own maps as rendered images, which is legally a different thing. Vessel positions are out for a related reason: one of the two sources publishes no licence terms at all, and a source without terms is unclear, not free.