Produktverfügbarkeit per Telegram-Bot überwachen

Produktverfügbarkeit per Telegram-Bot überwachen
Du kennst das: Ein Artikel ist ausverkauft, du checkst die Produktseite jeden Tag, und irgendwann gibst du einfach auf. So muss das nicht sein! Ein einfaches Python-Skript kann die Seite alle fünf Minuten prüfen und dir per Push-Benachrichtigung über Telegram sofort Bescheid geben, sobald der Artikel wieder verfügbar ist.
Diese Anleitung führt dich durch die komplette Einrichtung — sowohl unter Windows (deinem persönlichen PC) als auch unter Linux (einem Server). Keine Programmierkenntnisse erforderlich.
Was am Ende herauskommt
- Ein Python-Skript, das automatisch in regelmäßigen Abständen eine Produktseite prüft
- Ein Telegram-Bot, der dir sofort eine Push-Benachrichtigung schickt
- Windows: automatischer Start beim Hochfahren des PCs
- Linux: ein systemd-Dienst, der rund um die Uhr im Hintergrund läuft
Schritt 1: Telegram-Bot einrichten
Dieser Schritt ist für Windows und Linux identisch.
1.1 Bot erstellen
- Öffne Telegram und suche nach @BotFather
- Sende
/newbot - Wähle einen Namen (z. B.
Article Watcher) - Wähle einen Benutzernamen — er muss auf "bot" enden
(z. B.articlewatcher_bot) - Du erhältst einen Token, der etwa so aussieht:
1234567890:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxBewahre diesen Token sicher auf — du brauchst ihn später im Skript.
1.2 Chat-ID herausfinden
Der Bot benötigt deine persönliche Chat-ID, um zu wissen, wohin er Nachrichten schicken soll.
- Finde deinen neuen Bot in Telegram und sende ihm eine beliebige Nachricht
(z. B. "Hallo") - Öffne folgende URL in deinem Browser und ersetze den Token durch deinen eigenen:
https://api.telegram.org/botYOUR_TOKEN/getUpdates- Suche in der JSON-Antwort nach deiner Chat-ID:
"chat": { "id": 123456789, ... }Die Zahl neben "id" ist deine Chat-ID.
1.3 Verbindung testen
Kurzer Test — öffne diese URL im Browser mit eingesetztem Token und Chat-ID:
https://api.telegram.org/botYOUR_TOKEN/sendMessage?chat_id=YOUR_CHAT_ID&text=Hello!Wenn eine Nachricht in Telegram erscheint, funktioniert alles.
Schritt 2: Das Skript
Erstelle eine neue Datei namens watcher.py und füge den folgenden Code ein. Passe den Konfigurationsabschnitt oben an deine Einrichtung an:
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import time
# --- Configuration ---
URL = "https://example.com/product" # Product page URL
CHECK_INTERVAL = 300 # Check interval in seconds (5 min)
AVAILABLE_KEYWORD = "Add to Cart" # Text that appears when available
UNAVAILABLE_KEYWORD = "Sold Out" # Text that appears when unavailable
TELEGRAM_TOKEN = "YOUR_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
def send_telegram(message):
requests.get(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
params={"chat_id": TELEGRAM_CHAT_ID, "text": message}
)
def check_availability():
headers = {"User-Agent": "Mozilla/5.0"}
r = requests.get(URL, headers=headers, timeout=10)
soup = BeautifulSoup(r.text, "html.parser")
text = soup.get_text()
if AVAILABLE_KEYWORD in text:
return True
if UNAVAILABLE_KEYWORD in text:
return False
return None
def main():
send_telegram(f"Monitoring started:\n{URL}")
print("Monitoring started...")
while True:
try:
available = check_availability()
if available is True:
send_telegram(f"Item is back in stock!\n{URL}")
print("Available! Notification sent.")
break
elif available is False:
print("Not yet available.")
else:
print("Status unclear.")
except Exception as e:
print(f"Error: {e}")
time.sleep(CHECK_INTERVAL)
if __name__ == "__main__":
main()def hello(): print("Hello")Die richtigen Schlüsselwörter finden
Die Schlüsselwörter AVAILABLE_KEYWORD und UNAVAILABLE_KEYWORD unterscheiden sich von Shop zu Shop. So findest du die passenden:
- Öffne die Produktseite in deinem Browser
- Rechtsklick → Seitenquelltext anzeigen
- Nutze
STRG+F, um nach Begriffen wie "In den Einkaufswagen", "Ausverkauft", "Nicht auf Lager" oder "Nicht verfügbar" zu suchen - Kopiere den exakten Text ins Skript — Groß-/Kleinschreibung ist wichtig
Schritt 3a: Einrichtung unter Windows
Windows ist ein völlig geeigneter Einstieg. Der Hauptnachteil ist, dass dein PC eingeschaltet bleiben muss, damit das Skript weiterläuft.
Python installieren
- Gehe auf python.org und lade Python 3 herunter (z. B. Version 3.14)
- Achte während der Installation darauf, "Add Python to PATH" zu aktivieren
- Schließe die Installation ab
Abhängigkeiten installieren
Öffne die Eingabeaufforderung (cmd) und führe aus:
pip install requests beautifulsoup4Skript speichern und testen
Lege das Skript in einem festen Ordner ab, zum Beispiel:
C:\Users\YOURNAME\scripts\watcher.pyTestlauf in der Eingabeaufforderung:
python C:\Users\YOURNAME\scripts\watcher.pyWenn du eine Telegram-Nachricht mit "Monitoring started..." erhältst, funktioniert alles korrekt.
Autostart über die Aufgabenplanung
Damit das Skript beim Hochfahren von Windows automatisch startet:
- Suche im Startmenü nach "Aufgabenplanung" und öffne sie
- Klicke rechts auf "Einfache Aufgabe erstellen"
- Vergib einen Namen (z. B. "Article Watcher")
- Auslöser: "Bei Anmeldung"
- Aktion: "Programm starten"
- Programm: Pfad zu python.exe
C:\Users\YOURNAME\AppData\Local\Programs\Python\PythonYOURVERSION\python.exe
Argumente:C:\Users\YOURNAME\scripts\watcher.py
Fertigstellen!
Wichtig: Deaktiviere den Ruhemodus und die Energiesparfunktionen, damit Windows den Prozess nicht pausiert. Einstellungen → System → Netzbetrieb & Standby → Nie
Schritt 3b: Einrichtung unter Linux (Server)
Ein Linux-Server ist die bessere Wahl für die langfristige Überwachung: Es muss kein PC laufen, der Energieverbrauch ist geringer, und das Skript läuft nach einem Neustart automatisch weiter.
Python installieren und eine virtuelle Umgebung einrichten
apt update && apt install -y python3 python3-pip python3-venv
mkdir -p /root/scripts/article-watcher
cd /root/scripts/article-watcher
python3 -m venv venv
source venv/bin/activate
pip install requests beautifulsoup4Skript speichern:
nano /root/scripts/article-watcher/watcher.pysystemd-Dienst einrichten
Dadurch läuft das Skript als Hintergrunddienst, der nach jedem Neustart automatisch startet:
cat > /etc/systemd/system/article-watcher.service << 'EOF'
[Unit]
Description=Article Availability Watcher
After=network.target
[Service]
User=root
WorkingDirectory=/root/scripts/article-watcher
ExecStart=/root/scripts/article-watcher/venv/bin/python watcher.py
Restart=no
[Install]
WantedBy=multi-user.target
EOFWarumRestart=no? Das Skript beendet sich von selbst, sobald der Artikel gefunden und die Telegram-Benachrichtigung gesendet wurde. MitRestart=nobleibt es danach gestoppt. Würde man stattdessenRestart=on-failureverwenden, würde systemd es immer wieder neu starten und dir alle paar Minuten eine neue Benachrichtigung schicken.
Dienst aktivieren und starten:
systemctl daemon-reload
systemctl enable article-watcher # Auto-start after reboot
systemctl start article-watcherNützliche Befehle
| Befehl | Beschreibung |
|---|---|
systemctl status article-watcher | Aktuellen Status anzeigen |
systemctl stop article-watcher | Dienst stoppen |
systemctl restart article-watcher | Dienst neu starten |
journalctl -u article-watcher -f | Live-Logs anzeigen (mit Q beenden) |
journalctl -u article-watcher -n 50 | Letzte 50 Log-Zeilen anzeigen |
Hinweis: journalctl öffnet einen Pager (less). Drücke Q zum Beenden — das schließt nur die Ansicht, stoppt aber nicht den Dienst.Häufige Probleme und ihre Lösungen
ModuleNotFoundError: No module named 'requests'
Die Abhängigkeiten wurden nicht installiert. Lösung:
pip install requests beautifulsoup4
# If pip isn't found:
python3 -m pip install requests beautifulsoup4SyntaxError: Non-UTF-8 code starting with '\xdc'
Sonderzeichen wurden beim Einfügen des Skripts beschädigt. Stelle sicher, dass die erste Zeile des Skripts lautet:
# -*- coding: utf-8 -*-Am sichersten ist es, komplett auf Nicht-ASCII-Zeichen im Skript zu verzichten.
Status zeigt immer "Unclear"
Keines der beiden Schlüsselwörter wurde im Seitentext gefunden. Mögliche Gründe:
- Die Schlüsselwörter stimmen nicht exakt überein — prüfe Groß-/Kleinschreibung und Leerzeichen
- Die Verfügbarkeitsinfo wird dynamisch per JavaScript nachgeladen und ist im rohen HTML nicht vorhanden. In diesem Fall wird stattdessen Playwright (eine Bibliothek zur Browser-Automatisierung) benötigt, anstelle des einfachen requests-Ansatzes.
Keine Telegram-Nachricht erhalten
- Prüfe genau, ob Token und Chat-ID korrekt sind
- Stelle sicher, dass du dem Bot zuerst mindestens eine Nachricht geschickt hast — Bots können nur antworten, nachdem sie kontaktiert wurden
- Teste die Verbindungs-URL aus Schritt 1.3 direkt im Browser
Vom Shop blockiert werden
Ein zu kurzes Prüfintervall kann dazu führen, dass deine IP vom Shop gesperrt wird. Fünf Minuten (300 Sekunden) sind ein sicherer Standardwert — geh nicht unter zwei Minuten.
Ideen zur Erweiterung des Skripts
Das Skript ist eine solide Grundlage — mit etwas zusätzlichem Aufwand kann es deutlich mehr:
- Mehrere Artikel gleichzeitig überwachen — über eine Liste von URLs iterieren
- Preisüberwachung — zusätzlich zur Verfügbarkeit auch Preisänderungen verfolgen
- Intelligentere Zeitplanung — nachts seltener prüfen, um Ressourcen zu sparen
Wer die Einrichtung lieber überspringen möchte: Tools wie Visualping oder Distill Web Monitor bieten eine grafische Oberfläche und funktionieren ohne Programmierung. Die kostenlosen Tarife sind jedoch eingeschränkt, und deine Daten werden von einem Drittanbieter verarbeitet.
Fazit
Mit rund 50 Zeilen Python und einem kostenlosen Telegram-Bot lässt sich ein zuverlässiger Verfügbarkeits-Monitor bauen, der vollautomatisch im Hintergrund läuft. Die Einrichtung dauert etwa 15–20 Minuten — und zahlt sich schon beim ersten Mal aus, wenn du einen Nachschub-Restock vor allen anderen entdeckst.