Bürgeramt-Termin frei? Automatisch per Push erfahren
Freie Termine beim Bürgeramt sind in Minuten weg. So meldet changedetection.io neue Termine per ntfy aufs Handy, ohne dass Du ständig neu lädst.
Von Nathan Base
Neuer Personalausweis, Ummeldung, Führungszeugnis: In vielen Städten zeigt die Terminbuchung des Bürgeramts wochenlang nur „Keine Termine verfügbar“. Dabei werden laufend Termine frei, weil andere absagen oder umbuchen. Wer diese Lücken erwischen will, lädt die Seite normalerweise dutzende Male am Tag neu.
Diese Anleitung nimmt Dir das Neuladen ab. Das Werkzeug changedetection.io prüft die Terminseite in einem festen Abstand und schickt Dir eine Push-Nachricht aufs Handy, sobald sich dort etwas ändert. Buchen tust Du weiterhin selbst, das Programm sagt Dir nur, wann sich ein Blick lohnt.
Erst prüfen: Bietet Deine Stadt einen Wunschtermin?
Bevor Du etwas einrichtest, schau auf der Terminseite Deiner Stadt nach einer Warteliste. Einige Städte schicken von sich aus eine Mail, sobald ein passender Termin frei wird. Nürnberg bietet das zum Beispiel über die Terminvereinbarung des Bürgeramts an, Dortmund über ein Terminwunsch-Formular. Andere Städte schalten neue Termine zu festen Uhrzeiten frei, in Hannover laut Stadtverwaltung täglich gegen 8 Uhr. Gibt es so etwas, ist das der einfachste Weg. Die Überwachung lohnt sich dort, wo nur Absagen nachrücken und es keine Warteliste gibt.
Was Du brauchst
- Einen Rechner, auf dem Docker läuft und der eingeschaltet bleibt, etwa einen Raspberry Pi, ein NAS oder einen kleinen Server.
- Die ntfy-App auf dem Handy, aus dem App Store oder Google Play.
- Die genaue Adresse der Terminseite für Deine Dienstleistung, also die Seite, auf der „Keine Termine verfügbar“ steht.
Für ntfy reicht der öffentliche Server ntfy.sh. Willst Du die Nachrichten auf einem eigenen Server halten, steht in Push-Benachrichtigungen selbst hosten mit ntfy, wie Du ihn einrichtest.
Schritt 1: changedetection.io starten
Lege einen Ordner an und darin eine Datei compose.yaml:
mkdir -p ~/changedetection
cd ~/changedetection
nano compose.yamlFüge diesen Inhalt ein. Er entspricht der Vorlage aus dem offiziellen Repository, ergänzt um einen Browser, den viele Terminportale brauchen, weil sie ihre Inhalte erst per JavaScript nachladen:
services:
changedetection:
image: ghcr.io/dgtlmoon/changedetection.io
container_name: changedetection
volumes:
- changedetection-data:/datastore
ports:
- 127.0.0.1:5000:5000
environment:
- PLAYWRIGHT_DRIVER_URL=ws://browser-sockpuppet-chrome:3000
depends_on:
- browser-sockpuppet-chrome
restart: unless-stopped
browser-sockpuppet-chrome:
image: dgtlmoon/sockpuppetbrowser:latest
hostname: browser-sockpuppet-chrome
cap_add:
- SYS_ADMIN
restart: unless-stopped
volumes:
changedetection-data:Speichere mit Strg + O, bestätige mit Enter und schließe nano mit Strg + X. Dann startest Du beide Container:
docker compose up -dDie Oberfläche erreichst Du jetzt auf demselben Rechner unter http://localhost:5000. Läuft Docker auf einem anderen Gerät im Heimnetz, ersetze in der Zeile ports die 127.0.0.1 durch die IP-Adresse dieses Geräts. Auf einem Mac ist Port 5000 oft durch AirPlay belegt, dann nimm 127.0.0.1:5050:5000 und öffne http://localhost:5050.
Schritt 2: Die Terminseite als Watch anlegen
- Füge oben im Feld die Adresse der Terminseite ein und klicke auf Watch.
- Klicke beim neuen Eintrag auf Edit.
- Wähle im Reiter Request beim Fetch-Verfahren den Playwright-Browser statt der einfachen Abfrage. Nur so sieht changedetection.io die Termine, die die Seite nachlädt.
- Stell das Prüfintervall auf 10 Minuten und trag bei Random jitter seconds etwa
120ein. Dann fragt das Programm nicht exakt im Takt ab, sondern mit kleinen Abweichungen.
Bleib bei 5 bis 15 Minuten. Kürzere Abstände bringen kaum mehr Treffer, belasten aber die Server der Stadt, und manche Portale sperren Adressen, die zu oft fragen. Lies außerdem die Nutzungsbedingungen des Portals. Automatisches Buchen ist fast überall untersagt, und diese Anleitung macht das bewusst nicht.
Schritt 3: Nur auf echte Termine reagieren
Ohne Filter meldet changedetection.io jede Änderung, also auch eine neue Uhrzeit im Seitenfuß oder einen geänderten Hinweistext. Damit nur freie Termine einen Alarm auslösen, nutzt Du im Reiter Filters & Triggers das Feld Block change-detection while text matches. Trag dort den Satz ein, den die Seite ohne Termine zeigt, zum Beispiel:
Keine Termine verfügbarSolange dieser Text auf der Seite steht, ignoriert das Programm alle Änderungen. Verschwindet er, weil Termine auftauchen, schlägt es Alarm. Den genauen Wortlaut kopierst Du am besten direkt von der Seite, denn jedes Portal formuliert anders.
Schritt 4: Push aufs Handy einrichten
Öffne die ntfy-App, tippe auf das Plus und abonniere ein Thema mit einem Namen, den niemand errät, etwa buergeramt-k7r2xq. Themen auf ntfy.sh sind öffentlich, jeder mit dem Namen kann mitlesen.
Trag in changedetection.io beim Watch im Reiter Notifications diese Adresse ein und ersetze das Thema durch Deines:
ntfys://ntfy.sh/buergeramt-k7r2xqDas Programm nutzt dafür die Bibliothek Apprise, ntfys steht für eine verschlüsselte Verbindung. Bei einem eigenen ntfy-Server mit Zugangstoken sieht die Adresse so aus: ntfys://tk_DEINTOKEN@ntfy.example.com/buergeramt. Schreib als Nachrichtentext etwas wie Termin frei: {{ watch_url }}, dann führt Dich ein Tipp auf die Benachrichtigung direkt zur Buchungsseite.
Prüfen, ob es funktioniert
Klicke beim Watch auf Send test notification. Die Nachricht muss nach wenigen Sekunden auf dem Handy erscheinen. Danach lohnt ein Blick auf den Reiter Preview: Dort siehst Du den Text, den changedetection.io auf der Seite gefunden hat. Steht dort Dein Satz „Keine Termine verfügbar“, ist der Browser richtig eingebunden. Fehlt die Terminliste ganz, lädt die Seite ihre Inhalte erst nach einem Klick, dazu gleich mehr.
Wenn es nicht klappt
Die Vorschau ist leer oder zeigt nur ein Cookie-Banner. Viele Portale verlangen zuerst einen Klick auf „Weiter“ oder die Auswahl einer Dienstleistung. Dafür gibt es den Reiter Browser Steps, in dem Du die Klicks einmal vormachst. Er funktioniert nur mit dem Playwright-Browser aus Schritt 1.
Es kommt bei jeder Prüfung ein Alarm. Der Blockiertext stimmt nicht exakt, etwa wegen eines anderen Anführungszeichens. Kopier ihn erneut aus der Vorschau.
Die Seite meldet nach einiger Zeit einen Fehler 429 oder sperrt Dich. Das Intervall ist zu kurz. Stell es auf 15 Minuten und erhöhe die Zufallsabweichung.
Fazit
Mit changedetection.io und ntfy musst Du die Terminseite nicht mehr selbst beobachten. Nutz zuerst eine Warteliste, wenn Deine Stadt eine anbietet, und überwach die Seite nur in vernünftigen Abständen. Das Muster funktioniert auch für Arzttermine, Restplätze in Kursen oder Ausverkauftes, das wieder lieferbar wird. Für Preise, die Du über mehrere Shops vergleichen willst, passt eher der Preisalarm mit Claude: Wunschprodukte automatisch prüfen.
Weiterlesen.
-
Web & CodePush-Benachrichtigungen selbst hosten mit ntfy
ntfy mit Docker und Caddy selbst hosten, absichern und Meldungen von Skripten, Uptime Kuma und Home Assistant aufs iPhone und Android-Handy schicken.
Nathan Base -
Digital LifestylePreisalarm mit Claude: Wunschprodukte automatisch prüfen
Eine geplante Aufgabe in Claude prüft täglich Deine Wunschliste über mehrere Shops und meldet sich nur, wenn ein Produkt unter Deinen Zielpreis fällt.
Nathan Base -
Digital LifestyleNewsletter zusammenfassen lassen: Digest mit Claude
Statt 30 Newsletter am Tag eine Zusammenfassung am Abend: Ein Gmail-Filter sammelt sie, Claude schreibt daraus einen kurzen Digest mit Links.
Nathan Base -
Digital LifestyleKita- und Schulmails automatisch in den Familienkalender
Elternbriefe mit Terminen gehen im Postfach unter. Claude liest Kita- und Schulmails, trägt Termine in den Familienkalender ein und notiert, was mit muss.
Nathan Base -
Digital LifestyleMorgen-Briefing mit Claude: Mails, Termine, News
Eine geplante Claude-Aufgabe fasst Dir jeden Werktag um 6:30 Uhr wichtige Mails, Termine, Wetter und Nachrichten zu Deinen Themen auf einer Seite zusammen.
Nathan Base -
Digital LifestyleKaufberatung per KI: Produkte mit Claude vergleichen
Statt stundenlang Testberichte zu lesen: Mit Claude Research vergleichst Du Saugroboter, Waschmaschinen oder Kopfhörer nach Deinen Kriterien, mit Quellen.
Nathan Base