Wenn Marketingfachleute Dutzende öffentliche IG-Profile manuell prüfen, kostet nicht das Öffnen der Seiten am meisten Zeit, sondern das Fehlen einer vergleichbaren Historie. Eine Momentaufnahme zeigt die Zahl der Follower von heute; aus zwei Momentaufnahmen lässt sich die Differenz für einen gewählten Zeitraum berechnen. Für eine einfache Profilüberwachung können Sie die Abfrage automatisieren, nur die benötigten Felder speichern und eine Übersicht der Änderungen erstellen.
Unten finden Sie ein minimales, lauffähiges Python-Beispiel: Es ruft anhand des Benutzernamens Profildaten über die IG Scraper API ab und schreibt eine JSONL-Zeile mit Zeitstempel. Das Ergebnis ist eine kleine Historienquelle, die sich mit cron, n8n oder einem eigenen Speicher verbinden lässt. Die offizielle Beschreibung der Route und ihrer Parameter finden Sie im IG-API-Referenzhandbuch.
Welche Frage eine tägliche Momentaufnahme beantwortet
Angenommen, ein Team überwacht öffentliche Konten von Marken oder Partnern und möchte Änderungen bei Followerzahlen, Beiträgen oder dem Verifizierungsstatus erkennen. Auf der Profilseite sehen Sie die aktuellen Werte, doch sie speichert nicht von selbst den Stand der vergangenen Woche. Legen Sie daher zunächst fest, welche Felder wichtig sind, und speichern Sie sie anschließend mit dem Datum der Beobachtung.

Die Route /v1/user/by/username erwartet den Pflichtparameter username. Die Antwort enthält unter anderem follower_count, following_count, media_count, is_verified, is_private und biography. Diese Felder eignen sich für eine Profil-Momentaufnahme; sie enthalten keine Historie der Beiträge und erklären für sich genommen nicht, warum sich Kennzahlen geändert haben.
Das Skript ist bewusst eng gefasst: Es erfasst zu einem festgelegten Zeitpunkt einen beobachtbaren Satz von Feldern und vergleicht ihn mit früheren Einträgen. So sieht eine Analystin oder ein Analyst beispielsweise, dass sich die Followerzahl zwischen gespeicherten Zeitpunkten geändert hat, und kann dies anschließend unabhängig von der automatischen Erfassung weiter untersuchen.
API-Schlüssel und Kontenliste vorbereiten
Installieren Sie die Bibliothek für HTTP-Anfragen und hinterlegen Sie den API-Schlüssel in einer Umgebungsvariable. Schreiben Sie das Geheimnis weder in die Quelldatei noch in ein Repository oder die Programmausgabe. Die API verwendet den Abfrageparameter license_key; die Bibliothek erstellt die Query-String-Parameter selbst.
python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="ihr_schlüssel"
Die Liste der Profile können Sie bequem in einer Konfigurationsdatei oder Projektvariablen speichern. Für den ersten Lauf reicht ein Benutzername, um Antwort, Zugriff und Speicherung zu prüfen. Im Beispiel ist username als API-Parameter gesetzt; der Schlüssel wird ausschließlich aus der Umgebung gelesen.
Abfrage und Speicherung einer Momentaufnahme mit Python
Das Skript prüft die HTTP-Antwort, den API-Status und das Vorhandensein des Objekts ig. Danach speichert es nur Werte, die ausdrücklich vorhanden sind. Fehlt ein Feld, bleibt in dem Eintrag null stehen: Eine Null einzusetzen, würde einen unbekannten Wert mit einer tatsächlichen Null vermischen.

import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_URL = "https://ig.jsonscraper.com/v1/user/by/username"
LICENSE_KEY = os.environ["JSONSCRAPER_INSTAGRAM_LICENSE_KEY"]
USERNAME = "apple" # durch ein Profil aus Ihrer Liste ersetzen
OUTPUT = Path("instagram-profile-snapshots.jsonl")
response = requests.get(
API_URL,
params={"username": USERNAME, "license_key": LICENSE_KEY},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
raise RuntimeError("Die API hat einen unerwarteten Status oder eine unerwartete Struktur zurückgegeben")
profile = payload["ig"]
record = {
"observed_at": datetime.now(timezone.utc).isoformat(),
"username": profile.get("username", USERNAME),
"pk": profile.get("pk"),
"follower_count": profile.get("follower_count"),
"following_count": profile.get("following_count"),
"media_count": profile.get("media_count"),
"is_verified": profile.get("is_verified"),
"is_private": profile.get("is_private"),
}
with OUTPUT.open("a", encoding="utf-8") as file:
file.write(json.dumps(record, ensure_ascii=False) + "\n")
print("Momentaufnahme gespeichert:", record["username"], record["observed_at"])
Felder und Struktur des Beispiels entsprechen den für diese Route beschriebenen Profilinformationen. Eine erfolgreiche Anfrage liefert eine Beobachtung zum Zeitpunkt des Abrufs. Um die Entwicklung zu analysieren, muss das Skript wiederholt ausgeführt und jede Momentaufnahme gespeichert werden. Auf der Seite zur IG Scraper API finden Sie eine einfache Abfrage und eine Beispielantwort im JSON-Format.
Änderungen zwischen Momentaufnahmen berechnen
JSONL speichert einen Eintrag pro Zeile und lässt sich daher mit dem standardmäßigen Python-Modul lesen. Der nächste Ausschnitt wählt die beiden letzten Einträge für ein Profil aus und berechnet die Differenz der Followerzahl. Er gibt das Ergebnis nur aus, wenn beide Einträge einen numerischen Wert enthalten.
import json
from pathlib import Path
rows = [
json.loads(line)
for line in Path("instagram-profile-snapshots.jsonl").read_text(encoding="utf-8").splitlines()
]
username = "apple"
profile_rows = [row for row in rows if row.get("username") == username]
profile_rows.sort(key=lambda row: row["observed_at"])
if len(profile_rows) >= 2:
previous, current = profile_rows[-2:]
old = previous.get("follower_count")
new = current.get("follower_count")
if isinstance(old, int) and isinstance(new, int):
print({
"username": username,
"from": previous["observed_at"],
"to": current["observed_at"],
"follower_delta": new - old,
})
Die Differenz bezieht sich genau auf die beiden ausgewählten Beobachtungen. Werden Läufe ausgelassen, verlängert sich der Zeitraum zwischen ihnen. Daher sollte der Bericht beide Zeitpunkte anzeigen, statt die Änderung automatisch als „pro Tag“ zu bezeichnen. Für einen regelmäßigen Betrieb richten Sie einen geplanten Lauf mit cron oder dem Scheduler einer Cloud-Plattform ein. In n8n lässt sich dieselbe Abfolge mit Scheduler-, HTTP-Anfrage- und Speicher-Knoten in einer Datenbank oder Tabelle abbilden; die Namen der Knoten und die Anbindung des Speichers hängen von Ihrer Installation ab.
Auf mehrere Profile erweitern
Für eine Kontenliste können Sie die Benutzernamen in eine separate Datei auslagern und sie mit einer Schleife durchgehen. Speichern Sie den Status jeder Anfrage separat: Dann löscht der Ausfall eines Profils nicht die erfolgreich erfassten Daten der übrigen. Ergänzen Sie ein Zeitlimit, ein Fehlerprotokoll und einen erneuten Lauf nur für Konten, bei denen die Anfrage fehlgeschlagen ist.
Als Schlüssel des Eintrags können Sie pk verwenden, sofern die API diesen Wert zurückgegeben hat; speichern Sie den Benutzernamen für die bessere Lesbarkeit zusätzlich. Die ID hilft, ein Profil von einer Textbezeichnung im Bericht zu unterscheiden. Fehlt sie, sollten Sie keine erfinden oder durch ein anderes Feld ersetzen. Für Analysen empfiehlt es sich, den ursprünglichen Erfassungszeitpunkt in UTC zu speichern und den Vergleichszeitraum ausdrücklich festzulegen.
Wenn es für Ihre Aufgabe genügt, Informationen in einer bestimmten Häufigkeit abzurufen, können Sie mit dem dokumentierten Parameter cache_timeout die Cache-Dauer in Sekunden angeben; für IG ist Caching standardmäßig ausgeschaltet. Wählen Sie die Dauer passend zum Überwachungsintervall und speichern Sie sie zusammen mit den Erfassungseinstellungen, damit sich die Ergebnisse unter Berücksichtigung der Abfrageparameter interpretieren lassen.
Das Ergebnis
Nach mehreren Läufen haben Sie eine Datei mit zeitgestempelten Momentaufnahmen öffentlicher Kennzahlen und eine einfache, für ausgewählte Zeitpunkte berechnete Differenz. Sie können die Daten in Google Sheets, PostgreSQL oder ein Analysesystem laden; eine separate Verarbeitungsebene kann eine Benachrichtigung auslösen, wenn eine Änderung einen vom Team festgelegten Schwellenwert überschreitet. Dieser Schwellenwert ist Ihre Geschäftsregel und keine integrierte Funktion der API.
Die Profilroute liefert Kontofelder. Wenn Sie neue Beiträge gezielt überprüfen möchten, benötigen Sie daher eine entsprechende Medienabfrage, statt aus media_count Schlussfolgerungen zu ziehen. Das IG-API-Referenzhandbuch führt eine separate Route zum Abruf von Beiträgen mit seitenweiser Abfrage über user_id und den Parameter end_cursor auf. Nutzen Sie sie, wenn Ihre Aufgabe eine Untersuchung der Beiträge selbst erfordert. Für das hier beschriebene Ergebnis – eine historische Tabelle der Profilkennzahlen – genügt eine Abfrage pro Nutzer und das wiederholte Speichern der Momentaufnahmen.
Beginnen Sie mit einem Profil und zwei Läufen: Prüfen Sie, ob der Antwortstatus korrekt ist, die Zeitpunkte gespeichert werden und fehlende Daten ausdrücklich unbekannt bleiben. Fügen Sie anschließend die Kontenliste und den Zeitplan hinzu. So erhalten Sie eine reproduzierbare Beobachtung mit einem nachvollziehbaren Zeitraum und Ausgangswerten, die sich überprüfen und in den weiteren Analyseprozess übergeben lässt.