Lerne, wie du TikTok-Videos mit Python scrapen kannst

Zuletzt aktualisiert am June 26, 2026
Lerne, wie du TikTok-Videos mit Python scrapen kannst

Rund 1,9 Milliarden monatlich aktive Nutzer tummeln sich auf TikTok, und täglich kommen schätzungsweise 23 Millionen neue Videos dazu. Wer aus diesem Datenstrom auch nur einen kleinen Ausschnitt programmatisch herausziehen will, merkt schnell, wie zäh das werden kann.

Das Muster ist fast immer dasselbe: Du suchst nach „TikTok-Videos mit Python scrapen“, übernimmst einen Code-Schnipsel aus einem Tutorial (oder lässt ihn dir von ChatGPT generieren), startest das Skript – und am Ende steht da nichts. Leeres HTML, ein 403-Fehler oder ein freundliches „Process finished with exit code 0“ ganz ohne Ausgabe. Diese Endlosschleife taucht in unzähligen GitHub-Issues und Reddit-Threads auf, und genau deshalb gibt es diesen Leitfaden. Wir nehmen drei Python-Methoden durch, die 2025 tatsächlich liefern, gehen den Download der echten .mp4-Dateien Schritt für Schritt durch (nicht nur die Metadaten – hier steigen die meisten anderen Anleitungen aus) und schließen mit einer Vergleichstabelle ab, an der du die passende Methode für deinen Anwendungsfall ablesen kannst. Und falls Python für dich gar nicht infrage kommt, zeige ich dir No-Code-Alternativen wie Thunderbit, die dich mit etwa zwei Klicks an dieselben Daten bringen.

Was bedeutet „TikTok-Videos scrapen“ überhaupt?

Bevor es in den Code geht, lohnt sich eine kurze Begriffsklärung – denn hinter „TikTok-Videos scrapen“ verbergen sich zwei grundverschiedene Vorhaben:

  1. Videometadaten extrahieren: Beschreibungen, Hashtags, Like-Zahlen, Kommentarzahlen, Share-Zahlen, Aufrufe, Veröffentlichungsdatum, Autoreninfos. Hier liegt der Fokus der meisten Tutorials.
  2. Die eigentlichen Videodateien (.mp4) herunterladen: Also das Video selbst auf deinem Rechner speichern. Genau das haben die meisten im Sinn, wenn sie „TikTok-Videos scrapen“ tippen – und ausgerechnet diesen Teil behandeln die wenigsten Anleitungen.

Beides deckt dieser Leitfaden ab. Jede der folgenden Methoden liest Metadaten aus und liefert dir zugleich die Download-URLs, mit denen du die .mp4-Dateien sicherst.

Warum TikTok-Videos mit Python scrapen?

Bei ~280 angesehenen Videos pro Nutzer und Tag und einem TikTok Shop mit über 33 Milliarden US-Dollar globalem Werbeumsatz liegt der geschäftliche Wert von TikTok-Daten auf der Hand. Diese Anwendungsfälle begegnen mir am häufigsten:

AnwendungsfallWas du ausliestFür wen es gedacht ist
Influencer- & Marketing-AnalyseEngagement-Raten, Follower-Zahlen, Content-Formate, Hashtag-PerformanceMarketing-Teams, Agenturen
Content-StrategieTrend-Hashtags, virale Videoformate, Posting-FrequenzCreator, Social-Media-Manager
Brand MonitoringErwähnungen, Kampagnenreichweite, Stimmungsbild der ZielgruppeBrand Manager, PR-Teams
Competitive IntelligencePerformance von Wettbewerber-Videos, Ad Creatives, TikTok-Shop-AngeboteE-Commerce, Produktteams
MarktforschungNeue Trends, Nutzerverhalten, ProduktentdeckungAnalysten, Hedgefonds, Research-Teams
Archivierung & ComplianceVideodateien für interne Prüfung oder DokumentationRechtsabteilungen, Compliance, Agenturen

Die wirtschaftliche Relevanz ist greifbar: Der TikTok-Werbeumsatz in den USA soll 2026 bei 23,4 Milliarden US-Dollar liegen, und Affiliate-Creator stehen in den Top-Kategorien des TikTok Shop für 82–84 % des Umsatzes. Wer im E-Commerce oder Influencer-Marketing arbeitet, hält mit diesen Daten also bares Geld in der Hand.

Warum dein einfaches Python-Skript auf TikTok scheitert

Falls du so etwas schon probiert hast und nicht weitergekommen bist – damit bist du nicht allein:

import requests
from bs4 import BeautifulSoup

resp = requests.get("https://www.tiktok.com/@someuser")
soup = BeautifulSoup(resp.text, "html.parser")
# ...und dann steht im HTML nichts Brauchbares

Der Grund ist schlicht: TikTok zählt zu den am schwersten zu scrapenden Plattformen überhaupt. Ein einfaches requests.get() liefert meist nur ein nahezu leeres HTML-Gerüst, weil die eigentlichen Inhalte erst im Browser per JavaScript gerendert werden. Hinzu kommt eine aggressive Anti-Bot-Architektur mit Verhaltensanalyse, TLS-Fingerprinting, einer eigenen JavaScript-VM, die Request-Signaturen erzeugt, und dynamischen CSS-Selektoren, die sich ohne Vorwarnung ändern.

tiktok-anti-bot-wall.webp

Dem Imperva 2025 Bad Bot Report zufolge hat automatisierter Traffic 2024 erstmals den menschlichen überholt – Bots stehen inzwischen für 51 % des gesamten Internet-Traffics. TikTok ist diese Entwicklung bestens bekannt, und die Abwehr ist entsprechend ausgebaut.

Damit du schneller erkennst, woran es hakt, und direkt zur passenden Methode springen kannst, hilft diese Diagnose-Tabelle:

SymptomWahrscheinliche UrsacheMethode, die das Problem löst
Leeres HTML / keine DatenInhalte werden per JS gerendert; requests kann kein JavaScript ausführenMethode 1 (verstecktes JSON) oder Methode 3 (Playwright)
403 / Zugriff verweigertFehlende oder falsche Header; Anti-Bot-ErkennungMethode 1 mit korrekten Headern
Daten funktionieren einmal, dann nicht mehrRate Limiting / IP-BlockProxy-Rotation (alle Methoden)
Login-Wall erscheintSession-/Cookie-AnforderungMethode 3 (Browser mit gespeicherter Session)
Von ChatGPT generierter Code liefert nichtsTikTok-Struktur hat sich seit den Trainingsdaten geändertAlle 3 Methoden (aktuelle Ansätze)

Die Rate-Limit-Schwelle liegt grob bei 30–60 Requests pro Minute und IP, danach drohen Soft Blocks oder CAPTCHAs. Rechenzentrums-IP-Adressen fallen oft schon nach wenigen Minuten auf – Residential- oder Mobile-Proxies sind für jede nennenswerte Menge praktisch Pflicht.

Überblick: 3 Methoden, um TikTok-Videos mit Python zu scrapen

Hier ist der Fahrplan. Jede Methode bringt eigene Vor- und Nachteile mit, und ich zeige dir alle drei mit funktionierendem Code:

  1. Verstecktes JSON auslesen — Das im TikTok-HTML eingebettete Script-Tag __UNIVERSAL_DATA_FOR_REHYDRATION__ parsen. Am schnellsten, am einfachsten, kein Browser nötig.
  2. TikToks interne API — Den undokumentierten Endpunkt /api/post/item_list/ direkt ansprechen, um per Cursor-Pagination große Datenmengen zu holen.
  3. Browser-Automatisierung mit Playwright — Seiten in einem Headless-Browser rendern, um Infinite Scroll, dynamische Inhalte und Login-Walls zu handhaben.

Alle drei Methoden können außerdem die echten .mp4-Videos herunterladen – das erkläre ich im Anschluss an die Methoden separat. Ganz am Ende findest du eine vollständige Vergleichstabelle als Entscheidungsgrundlage.

Methode 1: TikTok-Videos über verstecktes JSON scrapen (einsteigerfreundlich)

Mit dieser Methode würde ich anfangen. TikTok bettet bei praktisch jedem Seitenaufruf einen großen JSON-Block in ein <script>-Tag mit der ID __UNIVERSAL_DATA_FOR_REHYDRATION__ ein. Darin stecken sämtliche Profil- und Videodaten, die das Frontend sonst rendert – du greifst sie also mit einem einzigen HTTP-Request ab, ganz ohne Browser.

Was du brauchst

  • Python 3.8+
  • requests (oder httpx)
  • beautifulsoup4 (oder parsel)
  • Sinnvolle Header: User-Agent, Referer, Accept-Language

Abhängigkeiten installieren:

pip install requests beautifulsoup4

Schritt für Schritt: TikTok-Videodaten aus dem Script-Tag extrahieren

Schritt 1: Eine GET-Anfrage mit realistischen Browser-Headern senden.

Hier scheitern die meisten Einsteiger. Schickst du nur ein nacktes requests.get() ohne Header, antwortet TikTok mit einem 403 oder einer CAPTCHA-Seite. Mindestens ein aktueller Browser-User-Agent und der Referer-Header gehören dazu.

import requests
from bs4 import BeautifulSoup
import json

url = "https://www.tiktok.com/@charlidamelio"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "Referer": "https://www.tiktok.com/",
    "Accept-Language": "en-US,en;q=0.9",
}

resp = requests.get(url, headers=headers)

Schritt 2: Das HTML parsen und das Hydration-Script-Tag finden.

soup = BeautifulSoup(resp.text, "html.parser")
script_tag = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__")

Ist script_tag None, hat TikTok dich entweder blockiert (prüfe den Statuscode) oder die Tag-ID geändert (selten, aber möglich).

Schritt 3: Den Script-Inhalt als JSON laden.

data = json.loads(script_tag.string)

Schritt 4: Die JSON-Struktur durchlaufen und Videometadaten extrahieren.

Die Struktur liegt unter __DEFAULT_SCOPE__. Für eine Benutzerprofilseite:

user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
user_info = user_detail["userInfo"]

# Profilstatistiken
stats = user_info["stats"]
print(f"Followers: {stats['followerCount']}, Likes: {stats['heartCount']}")

# Videoliste (erste Seite der Videos)
item_list = user_detail.get("itemList", [])
for video in item_list:
    print(video["desc"])  # Beschreibung
    print(video["stats"]["playCount"])  # Aufrufe
    print(video["video"]["playAddr"])  # Video-Download-URL (ohne Wasserzeichen)
    print(video["video"]["downloadAddr"])  # Video-Download-URL (mit Wasserzeichen)

Schritt 5: Video-Download-URLs extrahieren.

Das Feld playAddr liefert in der Regel eine sauberere Version des Videos (oft ohne das TikTok-Wasserzeichen), während downloadAddr das Standard-Wasserzeichen enthält. Beide sind direkte Links zur .mp4-Datei – für den Download brauchst du allerdings bestimmte Header (dazu gleich im Download-Abschnitt mehr).

Jetzt hast du eine Liste von Video-Objekten, die jeweils Beschreibung, Statistiken, Erstellungszeit, Hashtags (in challenges[] und textExtra) sowie direkte Video-URLs enthalten.

Grenzen der Methode mit verstecktem JSON

  • Erfasst nur Daten aus dem initialen Seitenaufruf – meist die ersten ~30 Videos eines Profils
  • Kein Umgang mit Infinite Scroll oder Pagination möglich (es gibt keine „nächste Seite“, die man abrufen könnte)
  • Ändert TikTok die Script-Tag-ID oder JSON-Struktur, bricht der Parser (das passiert regelmäßig – Pydantic-Validierung hilft, Probleme früh zu erkennen)
  • Am besten geeignet für schnelle Profil-Scrapes, einmalige Datenabzüge oder wenn du nur die neuesten Videos brauchst

Methode 2: TikTok-Videos über die interne API scrapen

TikToks Frontend lädt nicht alle Videos auf einmal – beim Scrollen werden XHR-Aufrufe an interne API-Endpunkte ausgelöst. Der wichtigste Endpunkt für Nutzer-Videos ist /api/post/item_list/. Sprichst du ihn direkt aus Python an, bekommst du Cursor-basierte Pagination und damit Zugriff auf alle Videos eines Profils, nicht nur auf die erste Seite.

So findest du den internen API-Endpunkt

Öffne in Chrome DevTools eine TikTok-Profilseite, wechsle in den Network-Tab, filtere nach XHR und scrolle nach unten. Du siehst Requests an URLs wie:

https://www.tiktok.com/api/post/item_list/?WebIdLastTime=...&aid=1988&count=35&cursor=0&secUid=...

Die wichtigsten Parameter sind:

  • secUid — die eindeutige Profil-ID (du kannst sie aus dem JSON aus Methode 1 ziehen, unter userInfo.user.secUid)
  • cursor — der Paginierungs-Offset (startet bei 0, jede Antwort liefert den nächsten Cursorwert)
  • count — Anzahl der Elemente pro Seite (typischerweise 30–35)

Schritt für Schritt: TikToks interne API mit Python abfragen

Schritt 1: Die secUid des Zielprofils holen.

Das geht über das versteckte JSON aus Methode 1 oder über das HTML der Profilseite.

Schritt 2: Den API-Request zusammenbauen und senden.

import requests
import json

sec_uid = "MS4wLjABAAAA..."  # Aus Methode 1
api_url = "https://www.tiktok.com/api/post/item_list/"
params = {
    "aid": "1988",
    "secUid": sec_uid,
    "count": 35,
    "cursor": 0,
}
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "Referer": "https://www.tiktok.com/",
}

resp = requests.get(api_url, params=params, headers=headers)
data = resp.json()

Schritt 3: Die Antwort parsen.

Jedes Element in data["itemList"] enthält dieselbe Videostruktur wie Methode 1 — desc, stats, video.playAddr, video.downloadAddr usw.

Schritt 4: Durch alle Videos paginieren.

all_videos = []
cursor = 0
has_more = True

while has_more:
    params["cursor"] = cursor
    resp = requests.get(api_url, params=params, headers=headers)
    data = resp.json()
    
    items = data.get("itemList", [])
    all_videos.extend(items)
    
    has_more = data.get("hasMore", False)
    cursor = data.get("cursor", 0)
    
    print(f"{len(items)} Videos abgerufen, insgesamt: {len(all_videos)}, hasMore: {has_more}")

print(f"Insgesamt gescrapte Videos: {len(all_videos)}")

Jede Runde liefert den nächsten Block und einen neuen Cursor. Die Schleife läuft, bis hasMore False ist.

Grenzen der Methode über die interne API

  • TikTok ändert diese Endpunkte und die geforderten Parameter häufig – das ist die wartungsintensivste Methode. Seit einigen Monaten verlangen manche Requests bereits msToken, X-Bogus oder andere Signatur-Parameter, die TikToks eigene JavaScript-VM erzeugt (Spoiler: Das in reinem Python nachzubauen ist alles andere als trivial).
  • Für bestimmte Datentypen können Session-Cookies oder zusätzliche Tokens erforderlich sein
  • IP-basiertes Rate Limiting gilt weiterhin – Proxy-Rotation ist empfohlen
  • Kommt itemList plötzlich leer zurück, ist dein msToken wahrscheinlich veraltet (er rotiert im Browser ungefähr alle 10 Sekunden)
  • Am besten geeignet für: große Datenmengen, wenn du alle Videos eines Profils brauchst und die Erste-Seite-Grenze von Methode 1 nicht reicht

Methode 3: TikTok-Videos mit Playwright scrapen (Browser-Automatisierung)

Wenn die ersten beiden Methoden an ihre Grenzen kommen – Login-Anforderungen, CAPTCHAs oder Signatur-Parameter, die du nicht nachbauen kannst – springt Playwright ein. Es startet einen echten Browser (headless), bewegt sich auf TikTok wie ein gewöhnlicher Nutzer und kommt mit JavaScript-Rendering, Infinite Scroll und sogar eingeloggten Sessions zurecht.

Playwright für TikTok-Scraping einrichten

Installiere Playwright und die Browser-Binaries:

pip install playwright
playwright install firefox

Für TikTok-Scraping empfehle ich Firefox statt Chromium. Tests aus der Community zeigen durchweg bessere Fingerprint-Kompatibilität, und TikToks Bot-Erkennung geht gegen headless Chromium-Browser besonders streng vor.

Für zusätzliche Tarnung lässt sich Playwright mit patchright (einem gepatchten Playwright-Fork) oder Camoufox kombinieren (Firefox, der auf C++-Ebene gegen Erkennung modifiziert wurde). In unabhängigen Benchmarks erreicht Camoufox nahezu perfekte Stealth-Werte gegenüber großen Bot-Detection-Diensten.

Schritt für Schritt: TikTok-Profilvideos mit Playwright scrapen

Schritt 1: Einen headless Firefox-Browser starten und zum Profil navigieren.

import asyncio
from playwright.async_api import async_playwright
import json

async def scrape_tiktok_profile(username):
    async with async_playwright() as p:
        browser = await p.firefox.launch(headless=True)
        context = await browser.new_context(
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0",
            viewport={"width": 1280, "height": 720},
        )
        page = await context.new_page()
        
        await page.goto(f"https://www.tiktok.com/@{username}", wait_until="networkidle")

Schritt 2: Warten, bis das Video-Raster geladen ist.

        # Warten, bis die Video-Elemente erscheinen
        await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)

Zeigt TikTok ein Overlay mit „Something went wrong“, musst du eventuell auf einen Retry-Button klicken:

        retry_btn = page.locator('button:has-text("Retry")')
        if await retry_btn.count() > 0:
            await retry_btn.click()
            await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)

Schritt 3: Daten aus dem versteckten JSON extrahieren (auch in Playwright).

Selbst mit Browser bleibt der zuverlässigste Weg, das Hydration-JSON zu ziehen:

        script_el = page.locator("#__UNIVERSAL_DATA_FOR_REHYDRATION__")
        raw_json = await script_el.inner_text()
        data = json.loads(raw_json)
        
        # Gleiches JSON-Navigieren wie in Methode 1
        user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
        videos = user_detail.get("itemList", [])

Schritt 4: Infinite Scroll für weitere Videos behandeln.

Brauchst du mehr als die ersten ~30 Videos, scrolle nach unten und fange zusätzliche XHR-Antworten ab:

        all_videos = list(videos)
        
        # API-Antworten beim Scrollen mitloggen
        api_responses = []
        
        async def capture_response(response):
            if "/api/post/item_list" in response.url:
                try:
                    body = await response.json()
                    api_responses.append(body)
                except:
                    pass
        
        page.on("response", capture_response)
        
        # Nach unten scrollen, um weitere Ladevorgänge auszulösen
        for _ in range(5):  # Bei Bedarf anpassen
            await page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
            await asyncio.sleep(2)
        
        # Videos aus den abgefangenen Antworten sammeln
        for api_resp in api_responses:
            items = api_resp.get("itemList", [])
            all_videos.extend(items)
        
        print(f"Gesamtzahl Videos: {len(all_videos)}")
        await browser.close()
        return all_videos

# Ausführen
videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))

Jetzt hast du eine Liste von Video-Objekten – sowohl aus dem initialen Seitenaufruf als auch aus weiteren per Scrollen geladenen Seiten.

Grenzen der Playwright-Methode

  • Mit Abstand die langsamste Methode (vollständiges Rendern, Netzwerkrundreisen, Scroll-Verzögerungen)
  • Höherer Ressourcenverbrauch — jede Browser-Instanz beansprucht spürbar Speicher und CPU
  • Auch hier drohen bei großem Umfang IP-basierte Blocks — Proxy-Rotation ist sinnvoll
  • Am besten geeignet für: komplexe Interaktionen, Inhalte hinter Login-Walls, CAPTCHAs oder wenn Methode 1 und 2 blockiert sind

So lädst du TikTok-Videos (.mp4) mit Python herunter

Das ist der Teil, der in fast jeder anderen TikTok-Scraping-Anleitung fehlt. Metadaten zu extrahieren ist nützlich, doch die meisten, die nach „TikTok-Videos scrapen“ suchen, wollen die eigentlichen Videodateien.

TikTok hinterlegt Download-URLs im Video-Datenobjekt:

  • playAddr — meist die Version ohne Wasserzeichen oder mit deutlich weniger sichtbarem Wasserzeichen
  • downloadAddr — die Version, die TikTok für den In-App-Download vorsieht (mit TikTok-Wasserzeichen)

Beide URLs sind zeitkritisch und laufen nach kurzer Zeit ab (meist nach ein paar Stunden). Lade die Datei also möglichst direkt nach dem Extrahieren herunter.

Schritt für Schritt: Eine TikTok-Videodatei herunterladen

Schritt 1: Die Video-URL aus einer der drei Methoden oben extrahieren.

video_url = video["video"]["playAddr"]  # Version ohne Wasserzeichen
# oder
video_url = video["video"]["downloadAddr"]  # Mit Wasserzeichen

Schritt 2: Einen GET-Request mit den richtigen Headern senden.

Hier stolpern viele. Rufst du einfach requests.get(video_url) auf, bekommst du einen 403. TikTok prüft den Referer-Header und erwartet einen browserähnlichen User-Agent.

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "Referer": "https://www.tiktok.com/",
}

resp = requests.get(video_url, headers=headers, stream=True)

Schritt 3: Den Inhalt als .mp4-Datei speichern.

Nutze stream=True und schreibe in Blöcken – TikTok-Videos können groß werden, und du willst nicht alles auf einmal in den Speicher laden:

video_id = video["id"]
filename = f"tiktok_{video_id}.mp4"

with open(filename, "wb") as f:
    for chunk in resp.iter_content(chunk_size=1024 * 1024):  # 1 MB-Blöcke
        if chunk:
            f.write(chunk)

print(f"Heruntergeladen: {filename}")

Jetzt liegt eine abspielbare .mp4-Datei lokal auf deinem Rechner.

Wasserzeichen vs. Download ohne Wasserzeichen

TikTok speichert sowohl eine Version mit als auch eine ohne Wasserzeichen. Die playAddr-URL liefert oft die sauberere Variante (die, die auch der Player nutzt), während downloadAddr das TikTok-Wasserzeichen samt Creator-Namen trägt.

Ein kurzer ethischer Hinweis: Das Wasserzeichen kennzeichnet den Creator. Lädst du Videos für Forschung, Analyse oder interne Prüfung herunter, ist playAddr in der Regel unproblematisch. Verbreitest du Inhalte weiter oder veröffentlichst sie erneut, wirft das Entfernen der Creator-Zuordnung sowohl ethische als auch urheberrechtliche Fragen auf. Mehr dazu im rechtlichen Abschnitt unten.

Für ein robusteres Download-Setup lohnt sich ein Blick auf yt-dlp — der TikTok-Extractor übernimmt Signaturberechnung und URL-Auflösung automatisch, sodass du dich nicht selbst um Header und ablaufende Tokens kümmern musst.

Direktvergleich: Welche Python-Methode solltest du verwenden?

Hier ist die Vergleichstabelle, die ich mir zu meinen Anfängen im TikTok-Scraping gewünscht hätte:

KriteriumMethode 1: Verstecktes JSONMethode 2: Interne APIMethode 3: Playwright
SchwierigkeitsgradEinsteigerFortgeschrittenFortgeschritten
GeschwindigkeitSchnell (1 Request pro Seite)Schnell (JSON-API)Langsam (vollständiges Rendern)
Widerstand gegen Anti-BotMittelNiedrig (Endpunkte ändern sich)Hoch (ahmt echten Browser nach)
Lädt Video .mp4 herunter?Ja (über playAddr)Ja (URL in der Antwort)Ja (über Netzwerk-Intercept)
Hält Infinite Scroll aus?Nein (nur erste Seite)Ja (Cursor-Pagination)Ja (Scroll-Simulation)
Proxy bei größerem Umfang nötig?JaJaJa
WartungsaufwandMittel (JSON-Struktur ändert sich)Hoch (Endpunkte/Signaturen ändern sich häufig)Niedrig-Mittel (Browser passt sich an)
Am besten geeignet fürSchnelle EinzelprofileGroße Datenmengen, alle VideosInhalte hinter Login-Walls oder komplexe Inhalte

Meine Empfehlung:

  • Du brauchst nur einen schnellen Snapshot eines Profils? Dann starte mit Methode 1. Die Einrichtung dauert etwa 30 Sekunden, und die Daten pro Seite hast du in unter einer Sekunde.
  • Du brauchst alle Videos eines Profils mit Pagination? Dann ist Methode 2 die richtige Wahl – rechne aber damit, nachzubessern, sobald TikTok seine API-Parameter ändert.
  • Du kämpfst mit Login-Walls, CAPTCHAs oder brauchst maximale Robustheit? Dann greif zu Methode 3 mit Playwright. Sie ist langsamer und schwerer, aber für TikTok am schwersten zu blockieren.

In der Praxis beginne ich meist mit Methode 1 und wechsle erst zu Methode 2 oder 3, wenn ich anstehe. So bleibt die Infrastruktur schlank und die Kosten niedrig.

Du brauchst kein Python? TikTok-Videos mit No-Code-Tools scrapen

Viele, die nach „TikTok-Videos mit Python scrapen“ suchen, brauchen eigentlich gar kein Python. Sie brauchen nur die Daten. Wenn du als Marketing-Analyst Videometadaten aus ein paar Konkurrenzprofilen ziehen oder als Brand Manager Erwähnungen beobachten willst, ist eine Python-Umgebung mit Proxy-Rotation und Signatur-Handling überdimensioniert.

python-vs-nocode-ai-comparison.webp

Hier ist ein ehrlicher Vergleich der Ansätze:

AnsatzSkill-LevelKostenWartungAm besten für
Python (DIY)Fortgeschritten+Kostenlos (+ Proxy-Kosten)Hoch (Skripte brechen)Volle Kontrolle, eigene Pipelines
Thunderbit (Chrome-Erweiterung)EinsteigerKostenloser Tarif verfügbarKeine (die KI liest die Seite jedes Mal neu)Schnelle Extraktion von Videodaten, Export nach Sheets/Excel
Apify TikTok ScraperEinsteigerKostenpflichtig (pro Lauf)Niedrig (von Apify gepflegt)Große automatisierte Läufe nach Zeitplan
TikAPIEntwicklerKostenpflichtiges AboMittelEigene Apps auf Basis von TikTok-Daten

Wie Thunderbit TikTok-Scraping erledigt

Thunderbit ist der AI Web Scraper, den wir bei Thunderbit entwickelt haben, und er tickt anders als klassische Scraping-Tools. Statt sich auf vorab definierte CSS-Selektoren oder XPath-Regeln zu stützen, die bei jeder Layout-Änderung von TikTok kaputtgehen, liest die KI von Thunderbit die Seitenstruktur jedes Mal neu und schlägt passende Spalten vor – Beschreibung, Likes, Hashtags, Video-URL, Autor usw.

Der Ablauf ist tatsächlich in zwei Klicks erledigt:

  1. Öffne ein TikTok-Profil in Chrome, klicke auf die Thunderbit-Erweiterung und wähle „AI Suggest Fields“. Thunderbit analysiert die Seite und schlägt eine Tabellenstruktur vor.
  2. Prüfe die vorgeschlagenen Spalten, passe sie bei Bedarf an und klicke auf „Scrape“.

Die Daten exportierst du direkt nach Google Sheets, Excel, Airtable oder Notion. Keine CSS-Selektoren zum Pflegen, kein Code zum Debuggen, keine Proxy-Konfiguration. Für Marketing-Analysten, die Videometadaten aus einer Handvoll Profilen brauchen, ist das messbar schneller als das Aufsetzen einer Python-Umgebung – und es bricht nicht, wenn TikTok sein Frontend ändert (was Berichten aus der Community zufolge alle paar Wochen vorkommt).

Thunderbit beherrscht außerdem Subpage Scraping – es ruft jede einzelne Videoseite auf und reichert deine Datentabelle um zusätzliche Details an, etwa vollständige Kommentarzahlen, Musikinfos oder die Videolänge.

Du kannst es kostenlos über die Thunderbit Chrome Extension testen. Mehr dazu findest du auf unserem YouTube-Kanal.

Rechtliche und ethische Leitplanken beim Scrapen von TikTok

Keines der Top-Tutorials zu diesem Thema spricht die Rechtslage an – ein auffälliges Versäumnis, zumal TikTok aktiv gegen Scraping-Dienste vorgeht. Das solltest du wissen.

Die Nutzungsbedingungen von TikTok (§ 4.1) verbieten automatisierten Zugriff ausdrücklich. Ein Verstoß gegen die AGB ist kein Straftatbestand, kann aber Account-Sperren, IP-Blocks oder zivilrechtliche Schritte nach sich ziehen.

Bei öffentlichen Daten ist die Rechtslage oft entspannter, als viele annehmen. Ein wichtiges Präzedenzurteil ist Meta Platforms v. Bright Data (N.D. Cal., Jan. 2024): Das Gericht entschied, dass das Scrapen öffentlich zugänglicher Daten im ausgeloggten Zustand nicht gegen Metas Nutzungsbedingungen verstößt. Meta zog den Fall zurück und verzichtete auf Berufung. Die frühere Entscheidung hiQ v. LinkedIn des Ninth Circuit (nach Van Buren erneut bestätigt) stellte klar, dass das Scrapen öffentlich zugänglicher Daten keinen CFAA-Verstoß darstellt – auch wenn hiQ am Ende einen Vergleich schloss, 500.000 US-Dollar zahlte und einer dauerhaften Unterlassungsverfügung zustimmte, was zeigt, dass AGB-Durchsetzung durchaus Konsequenzen haben kann.

DSGVO und CCPA greifen, sobald du personenbezogene Daten von EU- oder Kalifornien-Nutzern erhebst. Öffentliche Posts zu scrapen ist eine Sache; Datenbanken mit persönlichen Informationen einzelner Nutzer aufzubauen, eine ganz andere.

Praktische Richtlinien:

  • Drossle deine Requests (TikToks Server nicht überlasten)
  • Scrape keine privaten Accounts und keine Inhalte von Minderjährigen
  • Verbreite urheberrechtlich geschützte Videoinhalte nicht kommerziell weiter
  • Beachte robots.txt (TikTok untersagt dort die meisten automatisierten Crawls)
  • Videos für die eigene Forschung oder Analyse herunterzuladen ist etwas anderes als sie erneut zu posten – mach dir diesen Unterschied bewusst

Hinweis: Das hier ist Bildungsinhalt, keine Rechtsberatung. Wenn du ein kommerzielles Produkt auf Basis gescrapter TikTok-Daten aufbauen willst, sprich mit einer Anwältin oder einem Anwalt.

Fazit: Die wichtigsten Erkenntnisse

TikTok-Scraping ist 2025 ein bewegliches Ziel. Der Anti-Bot-Stack der Plattform zählt zu den ausgefeiltesten im Web, und naive Ansätze (einfaches requests, von ChatGPT generierte Schnipsel, veraltete Tutorials) scheitern schnell. Mit der richtigen Methode ist es aber gut machbar.

Das solltest du dir merken:

  • Methode 1 (verstecktes JSON) ist die schnellste und einfachste – starte hier für schnelle Profil-Scrapes.
  • Methode 2 (interne API) bringt dir Pagination und Zugriff auf große Datenmengen, fordert aber den höchsten Pflegeaufwand, weil sich Endpunkte und Signaturanforderungen oft ändern.
  • Methode 3 (Playwright) widersteht Anti-Bot-Maßnahmen am besten, kostet dafür mehr Zeit und Ressourcen.
  • Alle drei Methoden können Video-Download-URLs extrahieren – und dieser Leitfaden ist der einzige, der dir auch zeigt, wie du die .mp4-Dateien mit den richtigen Headern tatsächlich herunterlädst.
  • Für nicht-technische Nutzer führt Thunderbit deutlich schneller zu denselben Daten, ganz ohne Code zu schreiben oder zu pflegen. Der KI-Ansatz sorgt dafür, dass das Tool nicht kaputtgeht, wenn TikTok sein Layout ändert – und das passiert laut Community-Berichten öfter, als einem lieb ist.

Wenn du ganz ohne Python-Setup loslegen willst, teste die Thunderbit Chrome Extension – der kostenlose Tarif reicht, um das Tool an ein paar Profilen auszuprobieren und zu sehen, ob es zu deinem Workflow passt. Wer den Python-Weg geht, beginnt mit Methode 1, validiert die Daten und skaliert dann bei Bedarf.

Du willst tiefer in Web-Scraping-Techniken einsteigen? Dann schau dir unsere Anleitungen an: Daten von jeder Website mit Python scrapen, Best Practices für Web Scraping und Scraping in Google Sheets.

FAQs

Ist es legal, TikTok-Videos mit Python zu scrapen?

Das Scrapen öffentlich zugänglicher Daten bewegt sich in einer rechtlichen Grauzone, ist aber nicht automatisch verboten. Das Urteil Meta v. Bright Data (2024) stützt die Position, dass das ausgeloggte Scrapen öffentlicher Daten nicht gegen die Nutzungsbedingungen der Plattform verstößt. Allerdings verbieten die TikTok-AGB automatisierten Zugriff ausdrücklich, und bei personenbezogenen Daten gelten DSGVO/CCPA-Pflichten. Es ist nicht in dem Sinne illegal, wie viele befürchten – aber auch nicht risikolos. Für deinen konkreten Fall solltest du rechtlichen Rat einholen.

Welche Python-Bibliothek ist am besten für TikTok-Scraping?

Das hängt von deinem Ansatz ab. Für das versteckte JSON (Methode 1) reichen requests plus beautifulsoup4. Für API-Aufrufe (Methode 2) funktionieren requests oder httpx. Für Browser-Automatisierung (Methode 3) ist playwright derzeit Standard – es hat Selenium bei neuen Scraping-Projekten überholt, mit ~59 Millionen monatlichen PyPI-Downloads gegenüber etwa 53 Millionen bei Selenium. Der TikTok-Api-Wrapper (rund 6,3K GitHub-Stars) lohnt ebenfalls einen Blick, wenn du eine höhere Abstraktionsebene willst, kann aber anfällig sein.

Kann ich TikTok-Videos mit Python ohne Wasserzeichen herunterladen?

Ja. TikToks eigene Daten enthalten eine playAddr-URL, die in der Regel eine Version des Videos ohne das übliche Wasserzeichen liefert. Dieser Leitfaden zeigt dir, wie du diese URL aus jeder der drei Methoden extrahierst und die .mp4-Datei mit den richtigen Headern herunterlädst. Das Feld downloadAddr enthält dagegen das Wasserzeichen.

Warum liefert mein TikTok-Scraper leere Daten zurück?

Der häufigste Grund: TikTok braucht JavaScript, um die Inhalte zu rendern. Ein einfaches requests.get() holt nur das HTML-Gerüst – die eigentlichen Daten liegen entweder in einem versteckten JSON-Script-Tag (Methode 1) oder werden dynamisch per JavaScript geladen (Methode 3). Bekommst du leeres HTML, probiere zuerst Methode 1. Klappt das nicht, prüfe deine Header (ein fehlender Referer ist die häufigste Ursache für 403-Fehler) oder wechsle zu Methode 3 mit Playwright.

Wie vermeide ich Blocks beim Scrapen von TikTok?

Nutze realistische Browser-Header (inklusive User-Agent, Referer und Accept-Language), rotiere Residential- oder Mobile-Proxies (Rechenzentrums-IP-Adressen fallen oft innerhalb weniger Minuten auf), baue zufällige Pausen zwischen Requests ein (mindestens 1–3 Sekunden) und vermeide extrem hohe Volumina. Methode 3 (Playwright) widersteht Blocks am besten, weil sie eine echte Browser-Sitzung nachahmt. Bei ernsthaftem Umfang solltest du Proxy-Kosten einplanen – Residential-Proxies im Einstiegssegment kosten bei großen Anbietern etwa 2–4 US-Dollar pro GB.

  • Mehr erfahren
Shuai Guan
Shuai Guan
CEO bei Thunderbit | Experte für KI-gestützte Datenautomatisierung Shuai Guan ist CEO von Thunderbit und Absolvent der University of Michigan im Bereich Engineering. Mit fast zehn Jahren Erfahrung in Tech und SaaS-Architektur hat er sich darauf spezialisiert, komplexe KI-Modelle in praxisnahe No-Code-Tools zur Datenextraktion zu verwandeln. In diesem Blog teilt er ungefilterte, in der Praxis bewährte Einblicke in Web-Scraping- und Automatisierungsstrategien, damit Sie intelligentere, datengetriebene Workflows aufbauen können. Wenn er gerade keine Datenprozesse optimiert, widmet er dieselbe Liebe zum Detail seiner Leidenschaft für die Fotografie.
Topics
TikTok mit Python scrapenTikTok-Datenextraktion mit PythonPython TikTok Scraper SkriptWie man TikTok-Videos mit Python scraped

Thunderbit testen

Leads und andere Daten in nur 2 Klicks erfassen. Mit KI.

Thunderbit holen Kostenlos
Daten mit KI extrahieren
Daten einfach zu Google Sheets, Airtable oder Notion übertragen
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week