Wiener Linien Realtime API
Free Vienna public transport API with no key: live countdown times for U-Bahn, tram and bus, with step-free access flags and traffic-jam warnings. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Wiener Linien Realtime API?
The Wiener Linien real-time API is Vienna's free, key-free departure monitor. Given a stop's RBL number it returns every line serving that platform with live countdown times in minutes, the direction, platform, step-free access flag and a warning when a surface service is caught in traffic.
The RBL number is the thing to understand first. Vienna identifies not stops but individual platform positions — one RBL per line per direction — so Stephansplatz has several, and the one in the example returns only the U1 towards Leopoldau. That granularity is exactly right for a departure display facing one platform, and exactly wrong if you expected everything at the station; pass several `stopId` parameters to cover a whole interchange.
The `countdown` field is the operator's own answer in whole minutes, which sidesteps clock-skew problems entirely — a display driven by countdowns stays correct even if the device's time is wrong. Two other flags are worth surfacing: `barrierFree` marks step-free access for that specific service, and `trafficjam` goes true when a tram or bus is delayed by road congestion, which is a distinction most APIs never make.
Quick facts
- Base URL
https://www.wienerlinien.at/ogd_realtime- Authentication
- No API key or account since the open-data relaunch. Published as Vienna open government data.
- Rate limit
- No published quota. Countdowns refresh roughly every 30 seconds, so there is nothing to gain from faster polling.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Wiener Linien Realtime API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch live departures for a Vienna platform
GET https://www.wienerlinien.at/ogd_realtime/monitor?stopId=4111
curl 'https://www.wienerlinien.at/ogd_realtime/monitor?stopId=4111'const res = await fetch("https://www.wienerlinien.at/ogd_realtime/monitor?stopId=4111");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.wienerlinien.at/ogd_realtime/monitor?stopId=4111", timeout=20)
res.raise_for_status()
print(res.json()){
"data": {
"monitors": [
{
"locationStop": {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
16.3716613,
48.208062
]
},
"properties": {
"name": "60201320",
"title": "Stephansplatz",
"municipality": "Wien",
"municipalityId": 49000001,
"type": "stop",
"coordName": "WGS84",
"gate": "1",
"attributes": {
"rbl": 4111
}
}
},
"lines": [
{
"name": "U1",
"towards": "Leopoldau",
"direction": "H",
"platform": "1",
"richtungsId": "1",
"barrierFree": true,
"realtimeSupported": true,
"trafficjam": false,
"departures": {
"departure": [
{
"departureTime": {
"timePlanned": null,
"timeReal": "2026-08-21T10:02:46.000+0200",
"countdown": 1
},
"vehicle": {
"name": "U1",
"towards": "Leopoldau",
"direction": "H",
"platform": "1",
"richtungsId": "1",
"barrierFree": true,
"foldingRamp": false,
"cooling": false,
"realtimeSupported": true,
"trafficjam": false,Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
stopId | query | Required | RBL number identifying a platform position. Repeat the parameter to monitor several at once. 4111 |
diva | query | Optional | DIVA number, which selects a whole stop rather than one platform. 60201320 |
activateTrafficInfo | query | Optional | Include disruption notices, for example `stoerunglang`. stoerunglang |
(static data) | path | Optional | Stop, line and platform reference CSVs are published separately on the Vienna open data portal. |
Response fields
data.monitorsarray- One monitor per platform queried.
monitors[].locationStopobject- GeoJSON Feature for the platform, with `[longitude, latitude]` coordinates.
locationStop.properties.titlestring- Stop name, for example "Stephansplatz".
locationStop.properties.attributes.rblinteger- The RBL number, echoed back so multi-stop responses stay attributable.
monitors[].linesarray- Lines serving this platform.
lines[].name / towardsstring- Line label and the direction headsign.
lines[].platform / directionstring- Platform designation and direction code (`H` outbound, `R` return).
lines[].barrierFreeboolean- Whether this service offers step-free access.
lines[].trafficjamboolean- True when a surface service is delayed by road congestion — a distinction most APIs do not make.
lines[].departures.departure[].departureTime.countdowninteger- Minutes until departure. Immune to client clock skew.
departureTime.timePlanned / timeRealstring- ISO 8601 planned and actual times. `timePlanned` can be null when only a live estimate exists.
What you can build with the Wiener Linien Realtime API
- Drive a platform departure display in Vienna
- Show the next tram home in a personal dashboard
- Flag step-free services for accessibility-aware journey planning
- Detect surface delays caused by road traffic rather than the network
- Monitor several platforms of an interchange in one request
Common errors and how to fix them
Only one line comes back for a big station
An RBL identifies a single platform position, not the whole station.
Fix: Pass several `stopId` parameters, or use `diva` to select the stop as a whole.
timePlanned is null
Some departures only have a real-time estimate.
Fix: Fall back to `countdown`, which is always present and is the field the operator's own displays use.
CORS error in the browser
The endpoint sends no Access-Control-Allow-Origin header.
Fix: Proxy it server-side. Because countdowns refresh every 30 seconds, a short server-side cache also cuts load.
Cannot find the RBL number for a stop
RBL numbers are published in separate reference files, not through this API.
Fix: Download the stop, line and platform CSVs from the Vienna open data portal and join them once.
Wiener Linien Realtime API — frequently asked questions
Is the Wiener Linien API free?
Yes, free with no key or registration since the open-data relaunch. It is published as Vienna open government data.
What is an RBL number?
It identifies one platform position — a specific line in a specific direction at a specific stop — rather than the stop as a whole. That is why a busy interchange has many RBLs and why a single query returns only part of the station.
Why use countdown instead of the timestamps?
Because it is the operator's own answer in whole minutes and does not depend on the client's clock being right. A departure board driven by countdowns stays accurate on a device with skewed time.
What does the trafficjam flag mean?
It marks a tram or bus delayed by road congestion rather than by a network problem. It lets you tell a passenger the vehicle is stuck in traffic instead of showing an unexplained delay.
Tools that pair with this API
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
GeoJSON Validator
Validate GeoJSON against RFC 7946 and get the exact JSON path of every problem: unclosed rings, swapped coordinates, missing properties and more.
Time Duration Calculator
Add or subtract hours, minutes and seconds, or sum a list of durations into a total shown in h:m:s and in total seconds. Free and 100% in-browser.
Wiener Linien Realtime is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.