Lerne, wie du TikTok-Videos mit Python scrapen kannst

Zuletzt aktualisiert am April 15, 2026

TikTok hat inzwischen rund und Creator laden schätzungsweise jeden Tag 23 Millionen Videos hoch. Wer schon einmal versucht hat, auch nur einen kleinen Teil dieses Datenstroms zu erfassen, weiß, wie frustrierend das sein kann.

Typischer Ablauf: Du suchst nach „TikTok-Videos mit Python scrapen“, kopierst einen Code-Schnipsel aus einem Tutorial (oder lässt ihn dir von ChatGPT schreiben), führst ihn aus – und bekommst … nichts. Leeres HTML. Einen 403-Fehler. Oder die gefürchtete Meldung „Process finished with exit code 0“ ohne Ausgabe. Genau diese Schleife habe ich in Dutzenden GitHub-Issues und Reddit-Threads immer wieder gesehen. Deshalb habe ich diesen Leitfaden erstellt. Wir schauen uns drei Python-Methoden an, die 2025 wirklich funktionieren, gehen Schritt für Schritt durch das Herunterladen der echten .mp4-Dateien (nicht nur Metadaten – an dieser Stelle hören die meisten anderen Anleitungen auf) und zeigen dir am Ende eine Vergleichstabelle, damit du die passende Methode für deinen Use Case auswählen kannst. Falls du Python gar nicht brauchst, stelle ich dir außerdem No-Code-Alternativen wie vor, mit denen du in etwa zwei Klicks an dieselben Daten kommst.

Was bedeutet „TikTok-Videos scrapen“ überhaupt?

Bevor wir in den Code einsteigen, lohnt sich eine kurze Klärung, was Leute meinen, wenn sie sagen, sie wollen „TikTok-Videos scrapen“ – denn dahinter stecken zwei sehr unterschiedliche Dinge:

  1. Videometadaten extrahieren: Beschreibungen, Hashtags, Like-Zahlen, Kommentarzahlen, Share-Zahlen, Aufrufe, Veröffentlichungsdatum, Autoreninfos. Darauf konzentriert sich der Großteil der Tutorials.
  2. Die eigentlichen Videodateien (.mp4) herunterladen: Also das Video selbst auf deinem Rechner speichern. Genau das wollen die meisten eigentlich, wenn sie „TikTok-Videos scrapen“ eingeben – und genau diesen Teil behandeln die wenigsten Anleitungen.

Dieser Leitfaden deckt beides ab. Jede der folgenden Methoden kann Metadaten auslesen und dir zugleich die Download-URLs liefern, die du zum Speichern der .mp4-Dateien brauchst.

Warum TikTok-Videos mit Python scrapen?

Bei und einem TikTok Shop, der erzielt, ist der geschäftliche Nutzen von TikTok-Daten enorm. Die Anwendungsfälle, die ich am häufigsten sehe, sind diese:

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 real: Der TikTok-Werbeumsatz in den USA soll 2026 bei 23,4 Milliarden US-Dollar liegen, und Affiliate-Creator erwirtschaften in den Top-Kategorien des TikTok Shop . Wenn du im E-Commerce oder Influencer-Marketing arbeitest, hat dieses Datenmaterial direkten monetären Wert.

Warum dein einfaches Python-Skript auf TikTok scheitert

Falls du so etwas schon ausprobiert hast und nicht weitergekommen bist, bist du in guter Gesellschaft:

1import requests
2from bs4 import BeautifulSoup
3resp = requests.get("https://www.tiktok.com/@someuser")
4soup = BeautifulSoup(resp.text, "html.parser")
5# ...und dann steht im HTML nichts Brauchbares

Der Grund ist einfach: TikTok gehört zu den schwierigsten Plattformen zum Scrapen. Ein simples requests.get() liefert meist nur ein fast leeres HTML-Gerüst, weil die eigentlichen Inhalte im Browser per JavaScript gerendert werden. Dazu kommt eine aggressive Anti-Bot-Architektur mit Verhaltensanalyse, TLS-Fingerprinting, einer , die Request-Signaturen erzeugt, und dynamischen CSS-Selektoren, die sich ohne Vorwarnung ändern.

tiktok-anti-bot-wall.webp

Laut dem Imperva 2025 Bad Bot Report hat automatisierter Traffic 2024 erstmals den menschlichen überholt – Bots machen inzwischen aus. TikTok kennt diese Entwicklung sehr genau und hat seine Abwehr entsprechend aufgebaut.

Hier ist eine kurze Diagnose-Tabelle, damit du schneller erkennst, woran es liegt, und direkt zur passenden Methode springen kannst:

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, bevor Soft Blocks oder CAPTCHAs auftauchen. Rechenzentrums-IP-Adressen werden oft schon nach wenigen Minuten erkannt – 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 hat ihre eigenen Vor- und Nachteile, 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 – im Anschluss an die Methoden erkläre ich das separat. Am Ende findest du eine vollständige Vergleichstabelle, damit du eine fundierte Entscheidung treffen kannst.

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 alle Profil- und Videodaten, die das Frontend normalerweise rendert – du kannst sie also mit nur einem HTTP-Request abgreifen, 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:

1pip 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 Anfänger. Wenn du einfach nur requests.get() ohne Header sendest, liefert TikTok einen 403 oder eine CAPTCHA-Seite. Du brauchst mindestens einen aktuellen Browser-User-Agent und den Referer-Header.

1import requests
2from bs4 import BeautifulSoup
3import json
4url = "https://www.tiktok.com/@charlidamelio"
5headers = {
6    "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",
7    "Referer": "https://www.tiktok.com/",
8    "Accept-Language": "en-US,en;q=0.9",
9}
10resp = requests.get(url, headers=headers)

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

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

Wenn script_tag None ist, 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.

1data = json.loads(script_tag.string)

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

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

1user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
2user_info = user_detail["userInfo"]
3# Profilstatistiken
4stats = user_info["stats"]
5print(f"Followers: {stats['followerCount']}, Likes: {stats['heartCount']}")
6# Videoliste (erste Seite der Videos)
7item_list = user_detail.get("itemList", [])
8for video in item_list:
9    print(video["desc"])  # Beschreibung
10    print(video["stats"]["playCount"])  # Aufrufe
11    print(video["video"]["playAddr"])  # Video-Download-URL (ohne Wasserzeichen)
12    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 solltest du eine Liste von Video-Objekten haben, 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)
  • Wenn TikTok die Script-Tag-ID oder JSON-Struktur ändert, bricht der Parser (das passiert regelmäßig – 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

Das Frontend von TikTok 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/. Du kannst ihn direkt aus Python ansprechen und bekommst dadurch Cursor-basierte Pagination sowie 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, gehe zum Network-Tab, filtere nach XHR und scrolle nach unten. Du siehst Requests an URLs wie:

1https://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.

1import requests
2import json
3sec_uid = "MS4wLjABAAAA..."  # Aus Methode 1
4api_url = "https://www.tiktok.com/api/post/item_list/"
5params = {
6    "aid": "1988",
7    "secUid": sec_uid,
8    "count": 35,
9    "cursor": 0,
10}
11headers = {
12    "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",
13    "Referer": "https://www.tiktok.com/",
14}
15resp = requests.get(api_url, params=params, headers=headers)
16data = 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.

1all_videos = []
2cursor = 0
3has_more = True
4while has_more:
5    params["cursor"] = cursor
6    resp = requests.get(api_url, params=params, headers=headers)
7    data = resp.json()
8    items = data.get("itemList", [])
9    all_videos.extend(items)
10    has_more = data.get("hasMore", False)
11    cursor = data.get("cursor", 0)
12    print(f"{len(items)} Videos abgerufen, insgesamt: {len(all_videos)}, hasMore: {has_more}")
13print(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 erforderlichen Parameter häufig – das ist die wartungsintensivste Methode. In den letzten Monaten verlangen manche Requests bereits msToken, X-Bogus oder andere Signatur-Parameter, die von TikToks erzeugt werden (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
  • Wenn itemList plötzlich leer zurückkommt, 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 Einschränkung von Methode 1 auf die erste Seite nicht reicht

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

Wenn die ersten beiden Methoden an Grenzen stoßen – Login-Anforderungen, CAPTCHAs oder Signatur-Parameter, die du nicht nachbauen kannst – ist Playwright die Ausweichlösung. Es startet einen echten Browser (headless), bewegt sich auf TikTok wie ein normaler Nutzer und kann JavaScript-Rendering, Infinite Scroll und sogar eingeloggte Sessions verarbeiten.

Playwright für TikTok-Scraping einrichten

Installiere Playwright und die Browser-Binaries:

1pip install playwright
2playwright install firefox

Ich empfehle für TikTok-Scraping Firefox statt Chromium. Tests aus der Community zeigen konsistent , und TikToks Bot-Erkennung ist gegenüber headless Chromium-Browsern besonders streng.

Für zusätzliche Tarnung kannst du Playwright mit (einem gepatchten Playwright-Fork) oder kombinieren (Firefox, der auf C++-Ebene gegen Erkennung modifiziert wurde). In 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.

1import asyncio
2from playwright.async_api import async_playwright
3import json
4async def scrape_tiktok_profile(username):
5    async with async_playwright() as p:
6        browser = await p.firefox.launch(headless=True)
7        context = await browser.new_context(
8            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0",
9            viewport={"width": 1280, "height": 720},
10        )
11        page = await context.new_page()
12        await page.goto(f"https://www.tiktok.com/@{username}", wait_until="networkidle")

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

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

Wenn TikTok ein Overlay mit „Something went wrong“ anzeigt, musst du möglicherweise auf einen Retry-Button klicken:

1        retry_btn = page.locator('button:has-text("Retry")')
2        if await retry_btn.count() &gt; 0:
3            await retry_btn.click()
4            await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)

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

Der zuverlässigste Weg ist weiterhin, das Hydration-JSON zu ziehen, selbst wenn du einen Browser verwendest:

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

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

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

1        all_videos = list(videos)
2        # API-Antworten beim Scrollen mitloggen
3        api_responses = []
4        async def capture_response(response):
5            if "/api/post/item_list" in response.url:
6                try:
7                    body = await response.json()
8                    api_responses.append(body)
9                except:
10                    pass
11        page.on("response", capture_response)
12        # Nach unten scrollen, um weitere Ladevorgänge auszulösen
13        for _ in range(5):  # Bei Bedarf anpassen
14            await page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
15            await asyncio.sleep(2)
16        # Videos aus den abgefangenen Antworten sammeln
17        for api_resp in api_responses:
18            items = api_resp.get("itemList", [])
19            all_videos.extend(items)
20        print(f"Gesamtzahl Videos: {len(all_videos)}")
21        await browser.close()
22        return all_videos
23# Ausführen
24videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))

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

Grenzen der Playwright-Methode

  • Mit Abstand die langsamste Methode (vollständiges Rendern, Netzwerkrundreisen, Scroll-Verzögerungen)
  • Höherer Ressourcenverbrauch — jede Browser-Instanz benötigt spürbar Speicher und CPU
  • Auch hier kann es bei großem Umfang zu IP-basierten Blocks kommen — 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, aber 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). Du solltest die Datei also möglichst direkt nach dem Extrahieren herunterladen.

Schritt für Schritt: Eine TikTok-Videodatei herunterladen

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

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

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

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

1import requests
2headers = {
3    "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",
4    "Referer": "https://www.tiktok.com/",
5}
6resp = 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ß sein, und du willst nicht alles auf einmal in den Speicher laden:

1video_id = video["id"]
2filename = f"tiktok_{video_id}.mp4"
3with open(filename, "wb") as f:
4    for chunk in resp.iter_content(chunk_size=1024 * 1024):  # 1 MB-Blöcke
5        if chunk:
6            f.write(chunk)
7print(f"Heruntergeladen: {filename}")

Jetzt solltest du eine abspielbare .mp4-Datei lokal auf deinem Rechner haben.

Wasserzeichen vs. Download ohne Wasserzeichen

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

Ein kurzer ethischer Hinweis: Das Wasserzeichen dient dazu, den Creator zu kennzeichnen. Wenn du Videos für Forschung, Analyse oder interne Prüfung herunterlädst, ist die Nutzung von playAddr in der Regel unproblematisch. Wenn du Inhalte weiterverbreitest oder erneut veröffentlichst, wirft das Entfernen der Creator-Zuordnung sowohl ethische als auch urheberrechtliche Fragen auf. Mehr dazu im rechtlichen Abschnitt unten.

Für einen robusteres Download-Setup lohnt sich ein Blick auf — 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 gewünscht hätte, als ich mit TikTok-Scraping begonnen habe:

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 du bekommst die Daten pro Seite in unter einer Sekunde.
  • Du brauchst alle Videos eines Profils mit Pagination? Dann ist Methode 2 die richtige Wahl, aber rechne damit, dass du Anpassungen vornehmen musst, wenn TikTok seine API-Parameter ändert.
  • Du kämpfst mit Login-Walls, CAPTCHAs oder brauchst maximale Robustheit? Dann nutze 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 an Grenzen stoße. So bleibt die Infrastruktur einfach 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 willst oder als Brand Manager Erwähnungen beobachten musst, ist das Aufsetzen einer 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

ist der AI Web Scraper, den wir bei Thunderbit entwickelt haben, und er funktioniert anders als klassische Scraping-Tools. Statt sich auf vorab definierte CSS-Selektoren oder XPath-Regeln zu verlassen, 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 lassen sich direkt nach Google Sheets, Excel, Airtable oder Notion exportieren. Keine CSS-Selektoren, die du pflegen musst, kein Code, den du debuggen musst, keine Proxy-Konfiguration. Für Marketing-Analysten, die Videometadaten aus einer Handvoll Profilen brauchen, ist das messbar schneller als eine Python-Umgebung aufzusetzen – und es bricht nicht, wenn TikTok sein Frontend ändert (was Berichten aus der Community zufolge alle paar Wochen passiert).

Thunderbit unterstützt außerdem – es kann jede einzelne Videoseite aufrufen und deine Datentabelle um zusätzliche Details wie vollständige Kommentarzahlen, Musikinfos oder die Videolänge anreichern.

Du kannst es kostenlos über die testen. Mehr dazu findest du auf unserem .

Rechtliche und ethische Leitplanken beim Scrapen von TikTok

Keines der Top-Tutorials zu diesem Thema spricht über die Rechtslage – 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, aber er kann zu Account-Sperren, IP-Blocks oder zivilrechtlichen Schritten führen.

Die rechtliche Lage ist bei öffentlichen Daten oft weniger streng, als viele denken. Ein wichtiges Präzedenzurteil ist Meta Platforms v. Bright Data (N.D. Cal., Jan. 2024), in dem 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.

GDPR und CCPA gelten, wenn 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 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 verbietet dort die meisten automatisierten Crawls)
  • Videos für eigene Forschung oder Analyse herunterzuladen ist etwas anderes als sie erneut zu posten – mach dir diesen Unterschied klar

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 gehört 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 absolut 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, erfordert aber den höchsten Pflegeaufwand, weil sich Endpunkte und Signaturanforderungen oft ändern.
  • Methode 3 (Playwright) ist am widerstandsfähigsten gegen Anti-Bot-Maßnahmen, kostet aber 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 bietet einen deutlich schnelleren Weg zu denselben Daten, ohne Code schreiben oder pflegen zu müssen. 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 starten möchtest, – der kostenlose Tarif reicht aus, um das Tool an ein paar Profilen auszuprobieren und zu sehen, ob es zu deinem Workflow passt. Wer den Python-Weg geht, sollte mit Methode 1 beginnen, die Daten validieren und dann bei Bedarf skalieren.

Du willst tiefer in Web-Scraping-Techniken einsteigen? Dann schau dir unsere Anleitungen an: , und .

FAQs

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 GDPR/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 Auslesen des versteckten 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 der Standard – es hat Selenium bei neuen Scraping-Projekten inzwischen überholt, mit gegenüber etwa 53 Millionen bei Selenium. Der TikTok-Api-Wrapper (rund 6,3K GitHub-Stars) ist ebenfalls einen Blick wert, 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 ist, dass TikTok JavaScript zum Rendern der Inhalte benötigt. 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). Wenn du leeres HTML bekommst, probiere zuerst Methode 1. Wenn das nicht klappt, prüfe deine Header (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 werden oft innerhalb weniger Minuten erkannt), baue zufällige Pausen zwischen Requests ein (mindestens 1–3 Sekunden) und vermeide extrem hohe Volumina. Methode 3 (Playwright) ist am robustesten gegen Blocks, 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 .

  • Mehr erfahren
Topics
TikTok mit Python scrapenTikTok-Datenextraktion mit PythonPython TikTok Scraper SkriptWie man TikTok-Videos mit Python scraped
Inhaltsverzeichnis

Teste Thunderbit

Leads und andere Daten in nur 2 Klicks extrahieren. Mit KI unterstützt.

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