Cómo obtener un tweet en JSON sin clave de API de X

Actualizado
Cinco formas probadas de leer un post público de X como JSON sin cuenta de desarrollador: FxTwitter, vxTwitter, syndication, oEmbed y UnifAPI.
En resumen: no necesitas una cuenta de desarrollador de X para leer una publicación pública en JSON. El 7 de octubre de 2026 pedimos la misma publicación de la NASA con
curla cinco lugares que responden sin clave. FxTwitter y vxTwitter devuelven un objeto JSON limpio para una publicación o un usuario individual. El endpoint de sindicación de la propia X también devuelve la publicación en JSON, sin documentar y sujeto a cambios. El endpoint oEmbed de X devuelve un fragmento de HTML envuelto en JSON, no datos. El endpoint/tools/x/postde UnifAPI, gratis, sin iniciar sesión y con límite por visitante, devuelve la publicación con autor, medios, publicación citada y todas las métricas, con los mismos nombres de campo que sus endpoints de búsqueda, respuestas y timeline. Si solo vas a necesitar una publicación, con FxTwitter basta. Si la publicación es el primer paso de un flujo de trabajo que después busca, lee respuestas o recorre un timeline, usa un endpoint cuyo sobre sea el mismo para todo eso.
La pregunta "cómo obtengo un tweet en JSON" (que la gente también teclea como "tweet json sin api key", "leer un tweet sin API" o "twitter api sin autenticación") tiene hoy una respuesta distinta de la de 2022. La API oficial sigue funcionando, pero el plan gratuito es una asignación de tokens que un agente agota en una tarde, y el plan de pago arranca con una cuota mensual que la mayoría de los proyectos personales no justificará por un puñado de lecturas. Mientras tanto, alrededor del caso de uso de los embeds y las vistas previas de enlaces creció un conjunto de endpoints públicos que responden a solicitudes HTTP simples sin credenciales.
Este artículo es la prueba que hicimos antes de decidir qué construir. Todas las solicitudes de abajo son reproducibles; copia el comando y ejecútalo.
La prueba
Una publicación pública, https://x.com/NASA/status/2107237881668313108, pedida con curl y el User-Agent por defecto, sin cookies y sin clave. Registramos el código de estado, el tipo de contenido y si el cuerpo contenía el texto de la publicación y el número de me gusta como campos estructurados.
| Endpoint | Estado | Cuerpo | Texto + métricas como campos | URLs de medios | Publicación citada | También hace |
|---|---|---|---|---|---|---|
api.fxtwitter.com/NASA/status/<id> | 200 | JSON, 3.3 KB | Sí | Sí | Sí | Un usuario |
api.vxtwitter.com/NASA/status/<id> | 200 | JSON, 1.6 KB | Sí | Sí | Sí (URL) | Nada más |
cdn.syndication.twimg.com/tweet-result?id=<id>&token=x | 200 | JSON, 3.2 KB | Solo me gusta y número de respuestas | Sí | Sí | Nada más |
publish.twitter.com/oembed?url=… | 200 | JSON que envuelve HTML | No (blockquote HTML) | No | No | Nada más |
unifapi.com/tools/x/post?id=<id> | 200 | JSON, mismo modelo que búsqueda, respuestas y perfil | Sí | Sí | Sí | Búsqueda, respuestas, medios, seguidores, tendencias, comunidades |
Nada de esa tabla requiere clave. Tres de los cinco te dan un registro utilizable de la publicación. Las diferencias están en qué más pueden hacer, en lo estables que son y en si puedes seguir usando los mismos nombres de campo cuando la tarea crece.
FxTwitter y vxTwitter: hechos para vistas previas de enlaces, suficientes para leer
Los dos proyectos existen para que los enlaces de X se desplieguen bien en Discord y Telegram. Su API es un efecto secundario de eso, y es uno bueno.
curl -s "https://api.fxtwitter.com/NASA/status/2107237881668313108" | jq '.tweet | {text, likes, retweets, views, created_at}'
Devuelve el texto, los recuentos de me gusta, reposts, respuestas y visualizaciones, el objeto del autor, los medios con tamaños y variantes MP4, la publicación citada y una marca de tiempo created_at. vxTwitter devuelve un objeto más plano con lo esencial y un array mediaURLs.
Lo que no hacen: búsqueda, respuestas debajo de una publicación, el timeline de un usuario, seguidores. El endpoint de usuario (api.fxtwitter.com/NASA) devuelve los recuentos y la bio, pero no publicaciones. Además corren sobre infraestructura de voluntarios sin un límite de uso publicado, así que un flujo de trabajo que se abre en abanico sobre cientos de publicaciones es un invitado, no un cliente.
El endpoint de sindicación de X: oficial, sin documentar, frágil
X sirve los timelines embebidos desde cdn.syndication.twimg.com. La variante para una sola publicación responde JSON:
curl -s "https://cdn.syndication.twimg.com/tweet-result?id=2107237881668313108&token=x" | jq '{text, favorite_count, created_at, user: .user.screen_name}'
Son los datos que renderiza el propio widget de embed de X, así que son exactos, pero solo trae lo que el widget muestra: favorite_count y conversation_count, sin reposts ni visualizaciones. Además no está documentado, el parámetro token ha cambiado de significado más de una vez y algunas publicaciones vuelven como un esbozo con un tombstone en lugar del texto. Úsalo como contraste, no como dependencia.
oEmbed: no son datos
publish.twitter.com/oembed es el endpoint que usan los CMS para embeber una publicación. Devuelve JSON, pero la carga útil es un blockquote HTML con el texto dentro y una etiqueta script. No hay métricas ni URLs de medios. Si quieres el texto, acabarás extrayendo HTML de dentro de un JSON, que es lo peor de ambos mundos.
El endpoint gratuito de publicaciones de 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
}
}
El parámetro id también acepta la URL completa del estado en x.com o twitter.com, así que un agente puede pasar tal cual lo que haya pegado un usuario. Añade format=md o envía Accept: text/markdown para obtener la misma publicación en Markdown, que es más barato de meter en el contexto de un modelo que el JSON.
Tres propiedades importan para los agentes:
- El sobre es compartido.
post,author,metricsymediatienen la misma forma en/tools/x/search,/tools/x/replies,/tools/x/profiley/tools/x/media. Un prompt que lee.metrics.likesen uno de ellos funciona en todos. - El límite está impreso. Cada respuesta trae
X-RateLimit-Limit,X-RateLimit-RemainingyX-RateLimit-Reset. El límite gratuito es de 20 consultas cada 10 minutos por visitante, y una búsqueda cuenta como dos; un 429 incluyeRetry-Aftery la URL donde se levanta el límite (la API de X / Twitter con medición de uso, de pago por uso, sin suscripción). - Los errores tienen tipo. Un id ausente o mal formado es
{ "error": { "type": "validation_error", … } }; una publicación eliminada esnot_found. Un agente puede ramificar segúnerror.typesin analizar un mensaje.
La tabla completa de parámetros y una muestra capturada de cada endpoint están en la página Markdown de cada herramienta, por ejemplo /tools/x-post-viewer/index.md, y en /llms.txt.
Cuál usar
- Una publicación, en un bot que despliega enlaces: FxTwitter. Es para lo que se construyó.
- Un contraste de que el texto de una publicación es el que sirve X: el endpoint de sindicación.
- Una publicación que es el paso uno de algo más grande (leerla, luego leer sus respuestas, luego buscar reacciones, luego mirar quién respondió): los endpoints gratuitos de UnifAPI, porque los pasos siguientes existen y comparten la forma.
- Volumen, historial más allá de la ventana reciente o garantías: la API con medición de uso y una clave de workspace. Los nombres de campo coinciden con los de los endpoints gratuitos, así que el prompt no cambia.
Preguntas frecuentes
¿Necesito una cuenta de desarrollador de Twitter para leer un tweet público?
No. Los cinco endpoints de este artículo responden sin ella. La API oficial es lo que necesitas para escribir, para datos privados y para un caudal garantizado.
¿Es una opción raspar x.com directamente?
No con curl. x.com/NASA/status/<id> devuelve un cascarón HTML de 147 KB; la publicación la renderiza JavaScript después de que carga la página. Necesitarías un navegador headless, que es más lento, cuesta más y se rompe cuando cambia el marcado.
¿Puede el endpoint de UnifAPI leer la publicación de una cuenta protegida?
No. Las publicaciones protegidas y las eliminadas devuelven not_found. Los endpoints leen solo datos públicos y nunca eluden la configuración de privacidad de X.
¿Cuál es el límite gratuito?
20 consultas cada 10 minutos por visitante entre todos los endpoints /tools/x/* (una búsqueda cuenta como dos), informado en los encabezados de la respuesta. Usarlos es gratis, sin iniciar sesión y sin necesidad de cuenta; levantar el límite es de pago por uso con una clave de workspace de UnifAPI; no hay un plan gratuito con clave que solicitar.