I did some reverse engineering of the IVB-Scout public transport app, hoping some nice realtime data would fall out. Unfortunately with the current structure, generating a realtime feed would require periodically requesting ~230 stations, so I dropped the idea. The API gives realtime positions of vehicles, which are not displayed anywhere, but that would also require more time to implement than I’m willing to right now.
List of stations:
https://smartinfo.ivb.at/api/JSON/STOPS
List of all routes:
https://smartinfo.ivb.at/api/JSON/ROUTES
All routes of a station:
https://smartinfo.ivb.at/api/JSON/ROUTES?stopID=1187
All routes around a central point with the next station they depart from:
https://smartinfo.ivb.at/api/JSON/TIMETABLE?lat=47.266958&lon=11.39365&dis=500
Timetable of a specific route and station:
https://smartinfo.ivb.at/api/JSON/TIMETABLE?stopID=61557&routeID=9&dir=Fulpmes%20Bahnhof&via=Hauptbahnhof
Timetable of a single station:
https://smartinfo.ivb.at/api/JSON/TIMETABLE?stopID=1187
Next vehicles departing from a station, like timetable but with a simpler structure:
https://smartinfo.ivb.at/api/JSON/PASSAGE?stopID=64396×tamp=1760931169229
I think tmin is just a constant offset, to compensate walking time
https://smartinfo.ivb.at/api/JSON/PASSAGE?stopID=1187&tmin=0×tamp=1760930064139
If you want to convert the latitude and longitude of the realtime positions to regular WGS84 coordinates, divide them by 3600000.
https://smartinfo.ivb.at/vaoV2_2/address
https://smartinfo.ivb.at/vaoV2_2/gis
https://smartinfo.ivb.at/vaoV2_2/mapping/stops
https://smartinfo.ivb.at/vaoV2_2/location?name=ahornstra%C3%9Fe
These endpoints are not directly provided by IVB but seem to proxy VAO data. You need to use the username scout with the password m6VEu6athFQnH2DYAK984S2GRESSmTuE for HTTP basic authentication to access them. I didn’t really look into them, VAO can be better queried directly using the HAFAS API, but maybe this has special rate limiting exceptions.