Tony Wang5 Min. LesezeitTwitter/X scrapen 2026 (API & Python)
Drei Wege, Twitter/X 2026 zu scrapen — DIY-Python, No-Code-Tools oder eine strukturierte API für öffentliche Profile, Posts und Timelines — mit den rechtlichen Grundlagen.
Am schnellsten scrapst du Twitter/X 2026, indem du eine strukturierte X-API aufrufst, die normalisiertes JSON zurückgibt — öffentliche Profile, Posts und erste Timeline-Seiten — statt einen Headless-Browser durch X' verstecktes GraphQL-API, Guest-Tokens und rotierende Kennungen zu steuern. DIY ist weiterhin möglich, aber die einfachen Wege sind alle zu: Die kostenlosen Bibliotheken sind tot, die offizielle API ist für Konzerne bepreist, und X überarbeitet seine Abwehr alle paar Wochen. Dieser Guide behandelt alle drei Ansätze, was jeder zurückgibt, wo jeder scheitert und die rechtlichen Grundlagen.
Is it legal to scrape Twitter/X?
Sei vorsichtig. Öffentliche X-Daten zu scrapen (öffentliche Profile, öffentliche Posts) ist in den USA grundsätzlich legal — hiQ v. LinkedIn stellte fest, dass der Zugriff auf öffentliche Webdaten kein Verstoß gegen den Computer Fraud and Abuse Act (CFAA) ist. Aber das ist die strafrechtliche Grenze, nicht das ganze Bild: X' Nutzungsbedingungen verbieten Scraping ausdrücklich, es ist also eine vertragliche Frage, die zur Sperrung von Account oder IP führen kann, und X ist aggressiv gegen Scraper vorgegangen. Öffentliche Posts können außerdem personenbezogene Daten enthalten, die nach DSGVO/CCPA geschützt sind, sobald du sie speicherst oder verarbeitest. Faustregeln: nur öffentliche, nicht personenbezogene Daten; niemals geschützte Accounts, DMs oder etwas hinter einem Login anfassen; keine Daten länger als nötig horten; Rate-Limits respektieren. Siehe is web scraping legal. Keine Rechtsberatung.
Option 1: DIY in Python (and why it breaks)
X' Web-App ist ein GraphQL-Client: Jedes Profil und jede Timeline, die du siehst, wird aus einem versteckten internen API geladen, das von Guest-Tokens, doc_ids und Rate-Limits bewacht wird. Die alten Abkürzungen — snscrape, Twint und Nitter — teilten alle eine Abhängigkeit, den anonymen Guest-Zugang, und brachen allesamt, als X ihn abriegelte. Was noch funktioniert, ist Browser-Automatisierung, die die Seite ihre eigenen Tokens anfordern lässt, während du das JSON abfängst, das sie im Hintergrund abfeuert:
from playwright.sync_api import sync_playwright
# Conceptual skeleton — not a maintained solution
with sync_playwright() as pw:
browser = pw.chromium.launch(
proxy={"server": "http://residential-proxy:8000"} # datacenter IPs get banned fast
)
page = browser.new_page()
page.goto("https://x.com/nasa")
page.wait_for_selector("[data-testid='primaryColumn']")
# From here you still handle guest tokens, doc_ids, and rate limits yourself
print(page.content())
Im Demo funktioniert es, danach bricht es:
- Guest-Tokens laufen ab. Jeder GraphQL-Aufruf braucht einen, sie halten ein paar Stunden, und X bindet jeden Token an die anfragende IP — rotierende IPs mitten in der Session brechen den Token.
doc_ids rotieren. Die Kennungen, die GraphQL-Abfragen routen (UserTweets,TweetResultByRestId), ändern sich alle 2–4 Wochen; fest verdrahtete Abfragen scheitern dann still oder liefern leere Ergebnisse.- Datacenter-IPs werden sofort gesperrt. Du brauchst rotierende Residential-Proxys mit sorgfältigem Pacing (~300 Requests/Stunde anonym), sonst kassierst du innerhalb von ein, zwei Requests
429s und Sperren. - Die offizielle API rettet DIY nicht. Seit Februar 2026 leitet X neue Entwickler standardmäßig auf Pay-per-Use (~0,005 $ pro gelesenem Fremd-Post, gedeckelt bei 2 Mio. Reads/Monat) mit keinem kostenlosen Read-Tier; die Legacy-Tiers Basic (200 $/Monat, nur 7-Tage-Suche) und Pro (5.000 $/Monat, Vollarchiv) sind für Neuanmeldungen geschlossen. Es ist der konforme Weg über Tweepy, aber die Kosten machen das Scrapen öffentlicher Seiten im großen Maßstab unmöglich.
Die eigentlichen Kosten sind nicht das Schreiben des Scrapers — es ist das Neu-Reparieren alle paar Wochen, das typischerweise 10–15 Stunden im Monat frisst.
Option 2: No-code tools
Visuelle Extraktoren und Browser-Erweiterungen exportieren CSV/JSON — passend für einen einmaligen Abruf eines öffentlichen Profils, weniger für produktinterne Pipelines mit vorhersehbaren Feldern, und sie erben dieselbe Guest-Token- und Rate-Limit-Fragilität wie DIY.
Option 3: A structured X API
Für wiederholbare Workflows über öffentliche Daten gibt eine X scraping API normalisiertes JSON zurück, ohne laufenden Browser, ohne aufzufrischende Tokens und mit Proxys hinter einem einzigen Key. Ein öffentliches Profil abrufen:
curl https://api.crawlora.net/api/v1/x/profile/USERNAME \
-H "x-api-key: $CRAWLORA_API_KEY"
Derselbe Aufruf in Python:
import requests
profile = requests.get(
"https://api.crawlora.net/api/v1/x/profile/USERNAME",
headers={"x-api-key": "YOUR_API_KEY"},
).json()["data"]
print(profile["username"], profile["metrics"]["followers"])
Eine Antwort ist normalisiertes JSON (die Felder sind beispielhaft — prüfe die docs):
{
"data": {
"username": "NASA",
"name": "NASA",
"id": "11348282",
"description": "Making the seemingly impossible, possible. ✨",
"location": "Pale Blue Dot",
"is_blue_verified": true,
"metrics": { "followers": 92157321, "following": 119, "posts": 74188 }
}
}
Hol dir die Posts der ersten Profilseite, dann einen einzelnen Post über seine numerische ID:
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/x"
posts = requests.get(f"{base}/profile/NASA/posts", headers=h, params={"limit": 20}).json()["data"]
first_id = posts["posts"][0]["id"]
post = requests.get(f"{base}/post/{first_id}", headers=h, params={"username": "NASA"}).json()["data"]
print(post["text"], post["metrics"]["likes"], post["metrics"]["views"])
Der Posts-Endpoint liest nur die erste öffentliche Seiten-Payload (limit 1–50, Standard 20) — er paginiert keine Replies, Media-Tabs oder Suche. Übergib username an /post/{id}, um abweichende Autoren abzulehnen. Bleib bei öffentlichen, nicht personenbezogenen Feldern.
Which approach should you use?
| DIY Playwright | No-code-Tools | Strukturierte X-API | |
|---|---|---|---|
| Einrichtungszeit | Hoch | Niedrig | Niedrig |
| Wartung | 10–15 Std./Monat | Bricht mit X | Für dich erledigt |
| Guest-Tokens / doc_ids | Du verfolgst sie | Du verfolgst sie | Hinter dem Key erledigt |
| Proxys | Du rotierst Residential | Meist deine | Inklusive |
| Am besten für | Volle Kontrolle, eine Plattform | Einmalige Exporte | Wiederholbare Pipelines |
What you can collect
Sofern die öffentliche Seite sie preisgibt: Username, Anzeigename, numerische ID, Bio, Standort, Verifizierung, Follower-/Following-/Post-Zahlen und Profilmedien — plus je Post Text, Zeitstempel, URL, Autorenkontext und sichtbares Engagement (Likes, Replies, Reposts, Views, Bookmarks). Geschützte Accounts, DMs, vollständige Follower-Listen sowie Keyword-/Timeline-Suche liegen hinter einem Login und sind tabu.
Limitations and common challenges
- Nur die anonyme Oberfläche. Öffentliche Profile, einzelne Posts und die erste Timeline-Seite sind erreichbar; geschützte Accounts, DMs, Follower-Listen und Suche brauchen einen Login und überschreiten ToS-Grenzen.
- Erste Seite, nicht das Archiv. Der Profil-Posts-Endpoint gibt die anfängliche öffentliche Payload zurück, keinen paginierten Back-Katalog — Vollarchiv-Suche ist ein Pro/Enterprise-API-Feature (5.000 $/Monat+), kein Scraping-Ziel.
- Das bewegliche Ziel. X liefert alle 2–4 Wochen Abwehr-Änderungen aus (Guest-Tokens,
doc_ids, IP-Scoring); eine strukturierte API fängt das ab, sodass deine Pipeline weiter Daten liefert. - URLs außerhalb der Plattform finden. X' eigene Suche ist login-verriegelt, aber Google indexiert öffentliche Posts —
site:x.com inurl:status <keyword>baut eine Zielliste ohne Account. - Identitäten sind personenbezogene Daten. Usernames, Namen und Post-Inhalte sind nach DSGVO/CCPA personenbezogen — sammle nur öffentliche, faktische Felder mit einer Rechtsgrundlage.
Where this gets used
- Brand-Monitoring — verfolge die öffentliche Präsenz von Marken und Wettbewerbern auf X. Siehe den Use Case brand monitoring.
- Social Listening & Sentiment — ziehe eine Stichprobe öffentlicher Posts zu einem Thema für die Recherche.
- Creator-Recherche — bewerte öffentliche Profile, Reichweite und Engagement; kombiniere mit TikTok- und YouTube-Signalen.
Sources
Start collecting
Probier es zuerst kostenlos aus: Jage eine beliebige öffentliche URL durch den Free Web Scraper oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste den Profil-Endpoint im Playground, sieh dir das Schema in den API docs an und wirf einen Blick auf die pricing. Siehe auch how to scrape Instagram, how to scrape TikTok, how to scrape YouTube und how to scrape LinkedIn für den Rest des Social-Stacks, how to choose a web scraping API und is web scraping legal.
Häufig gestellte Fragen
Kann ich Twitter/X 2026 noch scrapen?
Ja, öffentliche X-Daten (Profile, einzelne Posts, erste Timeline-Seiten) sind weiterhin scrapebar, aber jeder einfache Weg ist zu: snscrape, Twint und Nitter starben, als X den anonymen Guest-Zugang abriegelte, und die offizielle API hat keinen kostenlosen Read-Tier. DIY bedeutet heute, Playwright durch X' verstecktes GraphQL-API zu steuern — mit Guest-Tokens, rotierenden doc_ids und Residential-Proxys; eine strukturierte API erledigt all das hinter einem Key.
Ist die offizielle X-API kostenlos?
Nein. Seit Februar 2026 leitet X neue Entwickler standardmäßig auf Pay-per-Use (etwa 0,005 $ pro gelesenem Fremd-Post, gedeckelt bei 2 Mio. Reads/Monat) ohne kostenlosen Read-Tier. Die Legacy-Tiers Basic (200 $/Monat, nur 7-Tage-Suche) und Pro (5.000 $/Monat, Vollarchiv) sind für Neuanmeldungen geschlossen, und Enterprise beginnt bei rund 42.000 $/Monat.
Warum brechen DIY-Twitter-Scraper ständig?
X' Web-App ist ein GraphQL-Client, bewacht von drei rotierenden Mechanismen: Guest-Tokens, die in wenigen Stunden ablaufen und an die anfragende IP gebunden sind, doc_ids, die Abfragen routen und alle 2–4 Wochen rotieren, und IP-Reputations-Scoring, das Datacenter-Bereiche sofort sperrt. Fest verdrahtete Scraper scheitern still, sobald sich eines davon ändert, was typischerweise 10–15 Stunden Wartung im Monat kostet.
Ist das Scrapen von Twitter/X legal?
Das Scrapen öffentlicher Daten ist in den USA grundsätzlich legal — hiQ v. LinkedIn stellte fest, dass der Zugriff auf öffentliche Webdaten kein CFAA-Verstoß ist — aber X' Nutzungsbedingungen verbieten Scraping ausdrücklich, es ist also eine vertragliche Frage, die zur Sperrung von Account oder IP führen kann, und X ist gegen Scraper vorgegangen. Öffentliche Posts können außerdem personenbezogene Daten nach DSGVO/CCPA sein. Bleib bei öffentlichen, nicht personenbezogenen Feldern; fass niemals geschützte Accounts, DMs oder etwas hinter einem Login an. Keine Rechtsberatung.
Welche X-Daten kann ich sammeln?
Nur öffentliche Felder: Username, Anzeigename, numerische ID, Bio, Standort, Verifizierung, Follower-/Following-/Post-Zahlen, Profilmedien sowie je Post Text, Zeitstempel, URL, Autorenkontext und sichtbares Engagement (Likes, Replies, Reposts, Views, Bookmarks). Geschützte Accounts, DMs, vollständige Follower-Listen sowie Keyword-/Timeline-Suche liegen hinter einem Login und sind tabu.
Wie bekomme ich die Posts eines Profils und einen einzelnen Post?
Ruf /x/profile/{username}/posts für die erste öffentliche Seite an Posts auf (limit 1–50, Standard 20 — es paginiert keine Replies, Media-Tabs oder Suche), dann /x/post/{id} für einen einzelnen Post, optional mit username, um abweichende Autoren abzulehnen. Vollarchiv-Suche ist ein Pro/Enterprise-API-Feature, kein Scraping-Ziel.
Wie oft kann ich aktualisieren?
Führe geplante Snapshots aus, um öffentliche Präsenz und Engagement über die Zeit zu verfolgen, innerhalb deines Plans und der Fair-Use-Grenzen, statt kontinuierlich zu pollen.