jsonscraper
Märkte
Zurück zum Journal

TikTok-Leads auf IG prüfen, bevor sie ins CRM gelangen

Sammeln Sie öffentlich zugängliche TikTok-Signale und prüfen Sie die zugehörigen IG-Profile, bevor Sie einen Kontakt manuell qualifizieren.

Redaktionsrichtlinie Fehler melden

Marketingfachleute finden auf TikTok vielleicht ein Video, in dem der Urheber über ein passendes Produkt spricht. Von diesem Signal zu einem überprüfbaren Kontakt zu gelangen, ist jedoch schwieriger: Der TikTok-Name und der IG-Name können voneinander abweichen, und das Profil kann privat sein oder es gibt überhaupt keinen bestätigten Zusammenhang mit einer Person. Das praktische Ergebnis ist keine automatisch erstellte Liste „fertiger Leads“, sondern eine Prüftabelle mit dem ursprünglichen Video, dem TikTok-Urheber, dem vermuteten IG-Benutzernamen, der API-Antwort und dem Status für die weitere Überprüfung.

Im Folgenden wird ein schlanker Python-Workflow für diese Aufgabe vorgestellt. Er sucht nach öffentlichen Videos anhand einer Suchphrase, extrahiert verfügbare Angaben zum Urheber und prüft IG-Profile nur dann, wenn bereits ein begründeter Benutzername zur Überprüfung vorliegt. Die API kann Profildaten anhand eines Benutzernamens abrufen; sie stellt nicht automatisch fest, ob zwei Konten derselben Person gehören.

Welches Ergebnis sich automatisieren lässt

Stellen Sie sich ein Unternehmen vor, das Geräte für die Zubereitung von Kaffee zu Hause verkauft und Urheber öffentlicher Videos über die Getränkezubereitung finden möchte. Die manuelle Suche ist nützlich, um sich zunächst mit den Inhalten vertraut zu machen. Bei wiederholter Durchführung ist es jedoch schwierig festzuhalten, welches Video zum Kontakt geführt hat, woher der Profilname stammt und was genau geprüft wurde.

Artikel: TikTok-Leads auf IG prüfen, bevor sie ins CRM gelangen
Zusammenfassung: Ein Python-Workflow verknüpft öffentliche TikTok-Videos mit den in den Profilen angegebenen Urhebern und prüft anschließend passende IG-Konten über jsonscraper. Das Ergebnis ist eine Tabelle zur manuellen Prüfung, in der Plattformdaten getrennt bleiben und fehlende Felder leer bleiben.
Bildrolle: Titelbild – die zentrale Idee
Abschnitt: Welches Ergebnis sich automatisieren lässt
Bildmotiv: Editorial-Foto vom Recherchearbeitsplatz einer Marketingfachkraft
Eine überprüfbare Kette verbindet das gefundene Video mit einem separaten Schritt zur manuellen Prüfung des IG-Profils.© jsonscraper · KI-generiert

Die Pipeline trennt drei Schritte: die Videosuche auf TikTok, das Speichern beobachtbarer Daten und die Prüfung eines vermuteten IG-Profils. So kann eine analysierende Person eine einzelne CSV-Datei öffnen und die Herkunft jedes Kandidaten nachvollziehen. IG-Felder sollten erst ausgefüllt werden, wenn der Benutzername in einer öffentlichen Beschreibung oder einem Link des Urhebers gefunden oder von einer Person anhand anderer verfügbarer Materialien überprüft wurde.

Diese Methode eignet sich für eine Agentur, ein Forschungsteam oder eine interne Marketingfachkraft, die eine kleine, reproduzierbare Liste zur manuellen Qualifizierung benötigt. Sie bewahrt den Kontext des Fundes und macht aus ähnlichen Namen keine Behauptung über die Identität einer Person.

Welche Felder sich abrufen lassen

Die dokumentierte TikTok-Route /searchVideo erfordert den Parameter keyword. Außerdem stehen count, date_posted, sort_by, region und cursor zur Verfügung. In beobachteten Antworten finden sich eine Video-ID, eine Beschreibung, das Veröffentlichungsdatum, ein Link, Angaben zum Urheber und öffentliche Interaktionszahlen. Die tatsächliche Feldmenge kann variieren; der folgende Code liest die Werte daher sicher aus und verwendet leere Werte, wenn Angaben fehlen.

Für IG wird in diesem Beispiel die dokumentierte GET-Route /v1/user/by/username mit dem Parameter username verwendet. Die Antwort kann Benutzernamen, Anzeigenamen, Angaben zu privatem Status und Verifizierung, die Zahl der Beiträge, Follower und abonnierten Konten sowie eine Biografie enthalten. Diese Angaben dienen der Ansicht und der anschließenden Beurteilung durch Fachleute, nicht der Bewertung des Urhebers.

Die offizielle Dokumentation der TikTok API beschreibt die Suchparameter; die Dokumentation der IG API erläutert Methoden und IG-Parameter. Auch die integrierten API-Definitionen von jsonscraper legen Routen, Parameternamen und beobachtete Antwortformen fest. Die hier angeführten Prüfungen erfolgten am 25. Oktober 2026.

API-Schlüssel und Kandidatenliste einrichten

Speichern Sie die API-Schlüssel in Umgebungsvariablen: JSONSCRAPER_TIKTOK_LICENSE_KEY und JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Fügen Sie sie weder in den Quellcode noch in CSV-Dateien oder Aufgabenprotokolle ein. Installieren Sie die Requests-Bibliothek mit python -m pip install requests. Das folgende Beispiel ist für Python 3.8 und neuer ausgelegt.

import csv
import os
import sys
from urllib.parse import urlencode

import requests

TIKTOK_KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
INSTAGRAM_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")

if not TIKTOK_KEY or not INSTAGRAM_KEY:
    sys.exit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY and JSONSCRAPER_INSTAGRAM_LICENSE_KEY")


def get_json(base_url, path, params):
    response = requests.get(
        f"{base_url}{path}",
        params=params,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()


def extract_videos(payload):
    """Handle both observed TikTok search result locations."""
    if payload.get("status") != "ok":
        raise RuntimeError(f"TikTok API status: {payload.get('status')}")

    tiktok = payload.get("tiktok") or {}
    videos = list(tiktok.get("aweme_list") or [])
    for item in tiktok.get("search_item_list") or []:
        video = item.get("aweme_info")
        if video:
            videos.append(video)

    unique = {}
    for video in videos:
        video_id = video.get("aweme_id")
        if video_id:
            unique[video_id] = video
    return list(unique.values())


keyword = "домашний кофе"
tiktok_payload = get_json(
    "https://tiktok.evelode.com",
    "/searchVideo",
    {
        "license_key": TIKTOK_KEY,
        "keyword": keyword,
        "count": 20,
        "date_posted": "this-month",
        "sort_by": "relevance",
    },
)

rows = []
for video in extract_videos(tiktok_payload):
    author = video.get("author") or {}
    stats = video.get("statistics") or {}
    rows.append({
        "tiktok_video_id": video.get("aweme_id", ""),
        "tiktok_url": video.get("share_url", ""),
        "video_description": video.get("desc", ""),
        "created_at": video.get("create_time", ""),
        "tiktok_username": author.get("unique_id", ""),
        "tiktok_author_name": author.get("nickname", ""),
        "tiktok_followers": author.get("follower_count", ""),
        "views": stats.get("play_count", ""),
        "likes": stats.get("digg_count", ""),
        "instagram_username": "",
        "instagram_status": "not checked",
        "instagram_followers": "",
        "instagram_is_private": "",
        "manual_match_review": "required",
    })

# Fill this dictionary only with usernames found separately
# and added after manually checking their source.
verified_instagram_usernames = {
    # "tiktok_video_id": "instagram_username"
}

for row in rows:
    username = verified_instagram_usernames.get(row["tiktok_video_id"])
    if not username:
        continue

    ig_payload = get_json(
        "https://ig.jsonscraper.com",
        "/v1/user/by/username",
        {
            "license_key": INSTAGRAM_KEY,
            "username": username,
        },
    )
    if ig_payload.get("status") != "ok":
        row["instagram_status"] = "api status: " + str(ig_payload.get("status"))
        continue

    profile = ig_payload.get("ig") or {}
    row["instagram_username"] = profile.get("username", username)
    row["instagram_status"] = "profile returned"
    row["instagram_followers"] = profile.get("follower_count", "")
    row["instagram_is_private"] = profile.get("is_private", "")
    row["manual_match_review"] = "check relationship manually"

if rows:
    with open("social_lead_checks.csv", "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=rows[0].keys())
        writer.writeheader()
        writer.writerows(rows)
else:
    print("No video rows returned for this query.")

Warum der Handler zwei Antwortstrukturen berücksichtigt

Bei der TikTok-Suche können Videos an zwei Stellen stehen: in tiktok.aweme_list und in tiktok.search_item_list[].aweme_info. In einer beobachteten Suchantwort war die erste Liste leer, während sich Einträge in der zweiten befanden. Das Beispiel führt daher beide Quellen zusammen und entfernt anhand von aweme_id Duplikate. Zuerst prüft es den äußeren Wert status und liest anschließend das Objekt tiktok aus.

Artikel: TikTok-Leads auf IG prüfen, bevor sie ins CRM gelangen
Zusammenfassung: Ein Python-Workflow verknüpft öffentliche TikTok-Videos mit den in den Profilen angegebenen Urhebern und prüft anschließend passende IG-Konten über jsonscraper. Das Ergebnis ist eine Tabelle zur manuellen Prüfung, in der Plattformdaten getrennt bleiben und fehlende Felder leer bleiben.
Bildrolle: ergänzende Illustration 2 – ein anderer konkreter Aspekt
Abschnitt: Warum der Handler zwei Antwortstrukturen berücksichtigt
Bildmotiv: Clea
Das Diagramm zeigt beide Fundstellen für TikTok-Suchergebnisse und den separaten manuellen Schritt vor der IG-Abfrage.© jsonscraper · KI-generierte Illustration

Der Code speichert nur Felder, die tatsächlich in der Antwort vorhanden sind. Ein leerer Wert bedeutet, dass das Feld im empfangenen Objekt fehlte; er darf nicht als Nullwert interpretiert werden. Links und Videobeschreibungen sollten zusammen mit den Kennzahlen gespeichert werden, da die Tabelle sonst bei einer späteren Sichtung ihren ursprünglichen Kontext verliert.

Paginierung nur bei Bedarf hinzufügen

Das Beispiel fragt eine einzelne Seite ab und verarbeitet nur die zurückgegebenen Einträge. Wenn die Suche fortgesetzt werden muss, sieht die Dokumentation für die Videosuche den Parameter cursor vor; der Wert wird aus der vorherigen Antwort übernommen. Speichern Sie den Cursor als undurchsichtigen Wert und übermitteln Sie ihn unverändert, ohne ihn selbst zu berechnen. Beenden Sie die Schleife, sobald die Antwort meldet, dass keine weiteren Ergebnisse vorliegen, oder sobald das vom Team festgelegte Limit erreicht ist. Durch Paginierung werden mehr zurückgegebene Ergebnisse erfasst; daraus folgt jedoch nicht, dass alle Veröffentlichungen zum Thema vollständig abgedeckt sind.

Prüfen Sie die tatsächliche Antwort mit Ihrem Schlüssel, bevor Sie einen automatischen Export hinzufügen, und wählen Sie eine angemessene Zahl von Seiten. Speichern Sie das ursprüngliche JSON neben der normalisierten Zeile oder separat mit dem Datum des Abrufs. So lässt sich feststellen, ob sich ein Antwortfeld geändert hat, und die Erfassung kann bei einer Schemaänderung erneut verarbeitet werden.

Die CSV-Datei zur Qualifizierung verwenden

In der Tabelle lassen sich Zeilen nach vorhandenem Videolink, Beschreibung, Urheber und ausgefülltem IG-Profil filtern. Für die erste Prüfrunde eignen sich einfache Statusangaben: „Video gefunden“, „IG-Benutzername gefunden“, „Profil abgerufen“, „Kontozusammenhang von einer Person geprüft“ und „ausgeschlossen“. Die Statusangaben beschreiben den Prüfprozess, nicht die Qualität oder Absicht des Urhebers.

Wenn die Aufgabe einen wiederholbaren Bericht erfordert, führen Sie das Skript nach einem Zeitplan aus und ergänzen Sie eine separate Spalte mit dem Abrufdatum. Beim Vergleich der Momentaufnahmen wird dann sichtbar, was sich zwischen den Durchläufen in den verfügbaren Feldern geändert hat, etwa die Followerzahl eines Profils. TikTok- und IG-Kennzahlen sollten getrennt und jeweils mit Plattform und Beobachtungszeitpunkt gespeichert werden: Es handelt sich um unterschiedliche Kontexte und unterschiedliche API-Antworten.

Bei größeren Datenmengen können Sie die CSV-Datei durch eine Datenbank mit einem Primärschlüssel aus Plattform und Video-ID ersetzen. Speichern Sie die ursprüngliche Suchanfrage, den Erfassungszeitpunkt und die unverarbeitete Antwort. Eine Slack-Benachrichtigung oder die Übermittlung eines Eintrags an ein CRM sollte erst erfolgen, nachdem die Verbindung zwischen den Profilen manuell bestätigt wurde – nicht unmittelbar nach einer Namensübereinstimmung.

Grenzen der Interpretation und sicherer Betrieb

Die Suche nach einer Suchphrase liefert gefundene API-Ergebnisse und keine vollständige Liste aller Veröffentlichungen. Die Zahlen zu Aufrufen, Likes und Followern sind Momentaufnahmen zum Zeitpunkt der Anfrage. Sie eignen sich dazu, eine Arbeitsliste zu sortieren und anschließend zu prüfen, belegen für sich genommen aber weder eine Kaufabsicht noch eine bestimmte Zielgruppe oder die Zustimmung zur Kontaktaufnahme.

Bestätigen Sie den Zusammenhang zwischen Profilen anhand eindeutiger öffentlicher Hinweise und halten Sie fest, wer die Prüfung wann durchgeführt hat. Wenn der IG-Benutzername aus einer externen Tabelle stammt, ohne dass sich die Quelle bestätigen lässt, belassen Sie den Status auf „Prüfung erforderlich“. Ein privates Profil oder fehlende Daten sollten als eigenes Prüfergebnis ausgewiesen werden; versuchen Sie nicht, Lücken durch Vermutungen zu füllen.

Verwenden Sie die Schlüssel in einem Secret-Store der Arbeitsumgebung, beschränken Sie den Zugriff auf Exporte und legen Sie eine zur Forschungsfrage passende Aufbewahrungsfrist fest. Übermitteln Sie an das CRM nur die Felder, die für die weitere manuelle Bearbeitung erforderlich sind, und beachten Sie die geltenden Plattformregeln und Datenschutzanforderungen.

Das Ergebnis

Nach dem Start enthält die CSV-Datei eine Liste gefundener Videos, ihrer Urheber und verfügbarer Kennzahlen sowie separate Felder für die IG-Prüfung. Das Skript lässt sich manuell, nach einem Zeitplan in CI oder über einen HTTP-Request-Knoten einer Automatisierungsplattform ausführen. Entscheidend ist, die Datenerfassung und -strukturierung zu automatisieren und die Feststellung, ob Konten zusammengehören, als überprüfbaren menschlichen Schritt beizubehalten.

Informationen zu Routen und verfügbaren Parametern finden Sie zunächst bei der TikTok Scraper API und der IG Scraper API. Die Produktseiten bieten Anforderungsbeispiele und Links zur Dokumentation. Beginnen Sie mit einer kleinen Anfrage, bevor Sie die Erfassung in einen dauerhaften Prozess integrieren.

Menschen

Für diesen Artikel sind noch keine Personen aufgeführt.

Lesen Sie weiterIG-Profile in eine tägliche Änderungsübersicht verwandeln
Lesen Sie den nächsten Artikel

Vom Artikel zur funktionierenden Integration

Entdecke die Social-Data-APIs von jsonscraper, teste Anfragen und entwickle deinen nächsten Workflow.

APIs entdecken