So bekommen Sie einen Tweet als JSON, ohne X-API-Key

So bekommen Sie einen Tweet als JSON, ohne X-API-Key
Unif Cookbooks team
Unif Cookbooks team

Aktualisiert

Fünf getestete Wege, einen öffentlichen X-Post ohne Entwicklerkonto als JSON zu lesen: FxTwitter, vxTwitter, Syndication, oEmbed und UnifAPI.

Kurz gesagt: Um einen einzelnen öffentlichen Post als JSON zu lesen, brauchen Sie keinen X-Developer-Account. Am 7. Oktober 2026 haben wir denselben NASA-Post mit curl von fünf Stellen abgerufen, die ohne Key antworten. FxTwitter und vxTwitter liefern ein sauberes JSON-Objekt für einen einzelnen Post oder Nutzer. Der Syndication-Endpoint von X selbst liefert den Post ebenfalls als JSON, undokumentiert und jederzeit änderbar. Der oEmbed-Endpoint von X liefert ein in JSON verpacktes HTML-Snippet, keine Daten. Der /tools/x/post-Endpoint von UnifAPI, kostenlos ohne Login und pro Besucher begrenzt, liefert den Post mit Autor, Medien, zitiertem Post und allen Metriken, mit denselben Feldnamen wie seine Such-, Antworten- und Timeline-Endpoints. Wer immer nur einen einzelnen Post braucht, kommt mit FxTwitter aus. Ist der Post der erste Schritt eines Workflows, der danach sucht, Antworten liest oder eine Timeline durchgeht, sollte man einen Endpoint nehmen, dessen Umschlag für all das gleich bleibt.

Die Frage „Wie bekomme ich einen Tweet als JSON“ hat heute eine andere Antwort als 2022. Die offizielle API funktioniert nach wie vor, aber der kostenlose Tarif ist ein Token-Kontingent, das ein Agent an einem Nachmittag aufbraucht, und ein bezahlter Tarif beginnt bei einer Monatsgebühr, die sich für eine Handvoll Lesezugriffe bei den meisten Nebenprojekten nicht rechtfertigen lässt. Parallel dazu ist rund um Einbettungen und Link-Vorschauen eine Reihe öffentlicher Endpoints entstanden, die auf schlichte HTTP-Anfragen ohne Zugangsdaten antworten.

Dieser Beitrag ist der Test, den wir gemacht haben, bevor wir entschieden haben, was wir bauen. Jede Anfrage unten ist reproduzierbar: Befehl kopieren und ausführen.

Der Test

Ein öffentlicher Post, https://x.com/NASA/status/2107237881668313108, abgerufen mit curl und dem Standard-User-Agent, ohne Cookies, ohne Key. Festgehalten haben wir den Statuscode, den Content-Type und ob der Body den Text des Posts und die Like-Zahl als strukturierte Felder enthielt.

EndpointStatusBodyText + Metriken als FelderMedien-URLsZitierter PostKann außerdem
api.fxtwitter.com/NASA/status/<id>200JSON, 3,3 KBJaJaJaEinen Nutzer
api.vxtwitter.com/NASA/status/<id>200JSON, 1,6 KBJaJaJa (URL)Sonst nichts
cdn.syndication.twimg.com/tweet-result?id=<id>&token=x200JSON, 3,2 KBNur Likes und AntwortzahlJaJaSonst nichts
publish.twitter.com/oembed?url=…200JSON um HTML herumNein (HTML-Blockquote)NeinNeinSonst nichts
unifapi.com/tools/x/post?id=<id>200JSON, dasselbe Modell wie Suche, Antworten, ProfilJaJaJaSuche, Antworten, Medien, Follower, Trends, Communities

Nichts in dieser Tabelle verlangt einen Key. Drei der fünf liefern einen brauchbaren Datensatz des Posts. Die Unterschiede liegen darin, was sie sonst noch können, wie stabil sie sind und ob man dieselben Feldnamen weiterverwenden kann, wenn die Aufgabe wächst.

Beide Projekte existieren, damit X-Links in Discord und Telegram eine Vorschau bekommen. Ihre API ist ein Nebenprodukt davon, und ein gutes.

curl -s "https://api.fxtwitter.com/NASA/status/2107237881668313108" | jq '.tweet | {text, likes, retweets, views, created_at}'

Liefert den Text, die Zahlen für Likes, Reposts, Antworten und Aufrufe, das Autor-Objekt, Medien mit Größen und MP4-Varianten, den zitierten Post und einen created_at-Zeitstempel. vxTwitter liefert ein flacheres Objekt mit denselben Kernangaben und einem mediaURLs-Array.

Was sie nicht können: Suche, Antworten unter einem Post, die Timeline eines Nutzers, Follower. Der Nutzer-Endpoint (api.fxtwitter.com/NASA) liefert Zahlen und Bio, aber keine Posts. Außerdem laufen sie auf ehrenamtlich betriebener Infrastruktur ohne veröffentlichtes Rate-Limit, sodass ein Workflow, der sich auf Hunderte Posts verteilt, dort Gast ist, nicht Kunde.

Der Syndication-Endpoint von X: offiziell, undokumentiert, fragil

X liefert eingebettete Timelines über cdn.syndication.twimg.com aus. Die Variante für einen einzelnen Post antwortet mit JSON:

curl -s "https://cdn.syndication.twimg.com/tweet-result?id=2107237881668313108&token=x" | jq '{text, favorite_count, created_at, user: .user.screen_name}'

Es sind die Daten, die das Embed-Widget von X selbst rendert, also sind sie korrekt, aber sie enthalten nur, was das Widget zeigt: favorite_count und conversation_count, keine Reposts, keine Aufrufe. Der Endpoint ist zudem undokumentiert, der token-Parameter hat seine Bedeutung mehr als einmal geändert, und manche Posts kommen als Stub mit einem tombstone statt des Textes zurück. Taugt als Gegenprobe, nicht als Abhängigkeit.

oEmbed: keine Daten

publish.twitter.com/oembed ist der Endpoint, über den CMS-Systeme einen Post einbetten. Er liefert JSON, aber die Nutzlast ist ein HTML-blockquote mit dem Text darin und einem Script-Tag. Keine Metriken, keine Medien-URLs. Wer den Text will, muss HTML aus JSON herausparsen, das Schlechteste aus beiden Welten.

Der kostenlose Post-Endpoint von UnifAPI

curl -s "https://unifapi.com/tools/x/post?id=2107237881668313108"
{
  "post": {
    "id": "2107237881668313108",
    "text": "Time to bring them home 🌎\n\nAfter nearly eight months aboard the @Space_Station, the four members of Crew-12 will soon head back to Earth…",
    "createdAt": "2026-10-05T22:33:56.000Z",
    "language": "en",
    "url": "https://x.com/NASA/status/2107237881668313108",
    "author": {
      "id": "11348282",
      "handle": "NASA",
      "name": "NASA",
      "verified": true,
      "followers": 92373840
    },
    "metrics": {
      "likes": 7210,
      "reposts": 846,
      "replies": 262,
      "quotes": 60,
      "bookmarks": 197,
      "views": 2823329
    },
    "media": [
      {
        "kind": "photo",
        "url": "https://pbs.twimg.com/media/HT5pcNwXwAAKdoM.jpg",
        "width": 2048,
        "height": 1365
      }
    ],
    "quoted": null
  }
}

Der id-Parameter akzeptiert auch die vollständige Status-URL von x.com oder twitter.com, sodass ein Agent einfach durchreichen kann, was ein Nutzer eingefügt hat. Mit format=md oder dem Header Accept: text/markdown kommt derselbe Post als Markdown, was im Kontext eines Modells günstiger ist als JSON.

Drei Eigenschaften sind für Agents entscheidend:

  • Der Umschlag ist geteilt. post, author, metrics und media haben auf /tools/x/search, /tools/x/replies, /tools/x/profile und /tools/x/media dieselbe Form. Ein Prompt, der auf einem davon .metrics.likes liest, funktioniert auf allen.
  • Das Limit steht in der Antwort. Jede Antwort trägt X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset. Das kostenlose Limit liegt bei 20 Abfragen pro 10 Minuten und Besucher, und eine Suche zählt doppelt; ein 429 enthält Retry-After und die URL, unter der sich das Limit aufheben lässt (die abgerechnete X / Twitter API, nutzungsbasiert, ohne Abo).
  • Fehler sind typisiert. Eine fehlende oder fehlerhafte id ergibt { "error": { "type": "validation_error", … } }, ein gelöschter Post not_found. Ein Agent kann nach error.type verzweigen, ohne eine Meldung zu parsen.

Die vollständige Parametertabelle und eine aufgezeichnete Beispielantwort für jeden Endpoint stehen auf der Markdown-Seite des jeweiligen Tools, zum Beispiel /tools/x-post-viewer/index.md, und in /llms.txt.

Welchen man nehmen sollte

  • Ein Post in einem Bot, der Links entfaltet: FxTwitter. Genau dafür wurde es gebaut.
  • Eine Gegenprobe, ob der Text eines Posts dem entspricht, was X ausliefert: der Syndication-Endpoint.
  • Ein Post als erster Schritt von etwas Größerem (lesen, dann die Antworten lesen, dann nach Reaktionen suchen, dann ansehen, wer geantwortet hat): die kostenlosen UnifAPI-Endpoints, weil die nächsten Schritte existieren und dieselbe Form haben.
  • Volumen, Verlauf über das aktuelle Fenster hinaus oder Garantien: die abgerechnete API mit einem Workspace-Key. Die Feldnamen entsprechen denen der kostenlosen Endpoints, der Prompt ändert sich also nicht.

FAQ

Brauche ich einen Twitter-Developer-Account, um einen öffentlichen Tweet zu lesen?

Nein. Alle fünf Endpoints in diesem Beitrag antworten ohne einen. Die offizielle API brauchen Sie zum Schreiben, für private Daten und für garantierten Durchsatz.

Kann ich x.com direkt scrapen?

Nicht mit curl. x.com/NASA/status/<id> liefert eine 147 KB große HTML-Hülle; der Post wird erst nach dem Laden der Seite per JavaScript gerendert. Sie bräuchten einen Headless-Browser, der langsamer ist, mehr kostet und bricht, sobald sich das Markup ändert.

Kann der UnifAPI-Endpoint den Post eines geschützten Accounts lesen?

Nein. Geschützte und gelöschte Posts liefern not_found. Die Endpoints lesen ausschließlich öffentliche Daten und umgehen nie die Privatsphäre-Einstellungen von X.

Wie hoch ist das kostenlose Limit?

20 Abfragen pro 10 Minuten und Besucher über alle /tools/x/*-Endpoints hinweg (eine Suche zählt doppelt), ausgewiesen in den Antwort-Headern. Die Nutzung ist kostenlos, ohne Login und ohne Account; aufheben lässt sich das Limit nutzungsbasiert (Pay as you go) mit einem UnifAPI-Workspace-Key; einen kostenlosen Key-Tarif, den man beantragen könnte, gibt es nicht.