wiener-wohn-bot
Python GraphQL SAML GitHub Actions Telegram Bot API
Vienna’s Mein Wiener Wohn-Ticket portal lists subsidized apartments but never tells you when a new one appears, so you have to keep checking it manually. This checks it for you and sends one Telegram message per new apartment, with a readable summary and the distance to a reference address. Email still works as an alternative channel.
Each run logs in by itself. It walks through the City of Vienna’s SAML login like a browser would, so there is no session cookie to copy over and refresh. It then queries the site’s GraphQL API with the filters from your saved search URL, geocodes new addresses through the city’s open-data address service, and notifies only apartments it has not seen before.
It runs hourly as a GitHub Action, with no server involved: the whole configuration lives in a single repository secret, and the IDs of already-notified apartments are committed to a separate state branch so main stays clean. Failures such as a wrong password or the site being down are sent to the same channel, so you notice when it stops working. A cron entry on a Raspberry Pi works just as well.
Optionally it scores listings 0–100 against criteria you describe, using any OpenAI-compatible model, and can submit applications to the ones that match.