5 Min. Lesezeit

Produktverfügbarkeit per Telegram-Bot überwachen

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

  1. Öffne Telegram und suche nach @BotFather
  2. Sende /newbot
  3. Wähle einen Namen (z. B. Article Watcher)
  4. Wähle einen Benutzernamen — er muss auf "bot" enden
    (z. B.articlewatcher_bot)
  5. Du erhältst einen Token, der etwa so aussieht:
   1234567890:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Bewahre 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.

  1. Finde deinen neuen Bot in Telegram und sende ihm eine beliebige Nachricht
    (z. B. "Hallo")
  2. Öffne folgende URL in deinem Browser und ersetze den Token durch deinen eigenen:
   https://api.telegram.org/botYOUR_TOKEN/getUpdates
  1. 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:

  1. Öffne die Produktseite in deinem Browser
  2. Rechtsklick → Seitenquelltext anzeigen
  3. Nutze STRG+F, um nach Begriffen wie "In den Einkaufswagen", "Ausverkauft", "Nicht auf Lager" oder "Nicht verfügbar" zu suchen
  4. 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

  1. Gehe auf python.org und lade Python 3 herunter (z. B. Version 3.14)
  2. Achte während der Installation darauf, "Add Python to PATH" zu aktivieren
  3. Schließe die Installation ab

Abhängigkeiten installieren

Öffne die Eingabeaufforderung (cmd) und führe aus:

pip install requests beautifulsoup4

Skript speichern und testen

Lege das Skript in einem festen Ordner ab, zum Beispiel:

C:\Users\YOURNAME\scripts\watcher.py

Testlauf in der Eingabeaufforderung:

python C:\Users\YOURNAME\scripts\watcher.py

Wenn 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:

  1. Suche im Startmenü nach "Aufgabenplanung" und öffne sie
  2. Klicke rechts auf "Einfache Aufgabe erstellen"
  3. Vergib einen Namen (z. B. "Article Watcher")
  4. Auslöser: "Bei Anmeldung"
  5. Aktion: "Programm starten"
  6. 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 beautifulsoup4

Skript speichern:

nano /root/scripts/article-watcher/watcher.py

systemd-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
EOF
Warum Restart=no? Das Skript beendet sich von selbst, sobald der Artikel gefunden und die Telegram-Benachrichtigung gesendet wurde. Mit Restart=nobleibt es danach gestoppt. Würde man stattdessen
Restart=on-failure verwenden, 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-watcher

Nützliche Befehle

BefehlBeschreibung
systemctl status article-watcherAktuellen Status anzeigen
systemctl stop article-watcherDienst stoppen
systemctl restart article-watcherDienst neu starten
journalctl -u article-watcher -fLive-Logs anzeigen (mit Q beenden)
journalctl -u article-watcher -n 50Letzte 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 beautifulsoup4

SyntaxError: 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.