Por Sorsa Editorial
Actualizado en julio de 2026: replanteado el precio de multimedia de Sorsa sobre la base por lotes por cada 1,000 tweets, agregada la asignación inicial de 100 solicitudes gratis, reconfirmadas las tarifas por recurso de la API oficial de X tras la actualización de abril de 2026 y re-verificado el extractor nativo de X de yt-dlp.
Conclusión clave: Para descargar multimedia de Twitter (X) por API, solicita el tweet y luego lee sus objetos multimedia para obtener la URL directa del archivo. La API oficial de X devuelve los enlaces de video dentro del array variants mediante expansiones, mientras que las APIs REST de terceros los devuelven en una sola llamada. Las imágenes salen de pbs.twimg.com y el video de video.twimg.com.
La parte difícil de extraer multimedia de Twitter con código rara vez es la descarga. Es conseguir una URL de multimedia limpia y directa a escala, sin flujos OAuth, sin scraping frágil y sin cobro por recurso. Sorsa API, una API alternativa de Twitter/X, devuelve los enlaces de multimedia de cada tweet junto al perfil completo del autor en una sola solicitud, acepta hasta 100 IDs de tweets por llamada por lotes y corre a 20 solicitudes por segundo en todos los planes. Por lotes, eso deja la extracción de multimedia desde $0.02 por cada 1,000 tweets, con datos de multimedia y de autor incluidos, así que recorrer miles de posts cuesta centavos en lugar de las lecturas por recurso apiladas de la API oficial.
Esta guía cubre los tres enfoques que la comunidad de desarrollo usa de verdad en 2026: la API oficial de X, el yt-dlp de código abierto y una API administrada de datos de Twitter/X. Obtienes la solicitud funcional de cada uno, el costo real y una lectura clara de cuál encaja con cada trabajo.
Contenido
- Cómo se adjunta la multimedia a un tweet
- Método 1: la API oficial de X (expansiones y variants)
- Método 2: yt-dlp para descargas puntuales y archivo local
- Método 3: una API administrada de datos de Twitter/X
- Cómo se comparan los tres métodos
- Descargar multimedia de una cronología o búsqueda completa
- Calidad de imagen: obtener fotos en resolución completa
- Aspectos legales y términos de servicio
- En la práctica
- Preguntas frecuentes
- Cómo empezar
Cómo se adjunta la multimedia a un tweet {#how-media-is-attached-to-a-tweet}
Un tweet no contiene un archivo multimedia. Contiene referencias a objetos multimedia, y esos objetos apuntan a archivos alojados en los servidores de contenido de X. Las imágenes viven en pbs.twimg.com y el video en video.twimg.com, normalmente bajo una ruta como amplify_video. Para descargar cualquier cosa, consultas el tweet, encuentras su objeto multimedia y lees la URL directa.
Dos detalles hacen tropezar a la gente. El video se sirve como una o más variantes MP4 a distintos bitrates, así que "la URL del video" es en realidad una lista, y eliges el archivo de mayor bitrate. Los GIFs no son GIFs en X; la plataforma los guarda como MP4 silenciosos en bucle, así que descargar un GIF devuelve un MP4. Las fotos son más simples: cada objeto multimedia trae una única URL de imagen, y la subida original es más grande y más nítida que la copia comprimida que se muestra en la cronología.
Cada método de abajo es una forma distinta de llegar a ese mismo objeto multimedia. Las diferencias están en la autenticación, el costo, cuánto parseo haces tú y si el enfoque aguanta cuando lo corres sobre miles de posts.
Método 1: la API oficial de X (expansiones y variants) {#method-1-the-official-x-api}
La API oficial de X puede devolver URLs de multimedia, pero solo cuando las pides explícitamente. Por defecto, la respuesta de un tweet trae solo el id y el text. Para obtener multimedia agregas una expansión para las claves de multimedia adjuntas más los campos de multimedia que quieras, y luego lees el resultado en la sección includes.media de la respuesta.
curl "https://api.twitter.com/2/tweets/TWEET_ID?expansions=attachments.media_keys&media.fields=variants,url,preview_image_url&tweet.fields=attachments" \
-H "Authorization: Bearer $BEARER_TOKEN"
Para video, el objeto multimedia devuelve un array variants, y cada entrada trae un bit_rate y una url. Ordenas por bit_rate y tomas el MP4 más alto. Para fotos, el objeto devuelve una url directamente. La URL del video no estaba disponible en el lanzamiento de la v2 y llegó después mediante esta expansión, que es la razón por la que muchos desarrolladores reciben una respuesta vacía en su primer intento.
El método es autoritativo, y es la única vía cuando también necesitas acciones oficiales de escritura o feeds de cumplimiento. El problema son el costo y la fricción. Bajo el modelo de pago por uso vigente tras la actualización de precios de abril de 2026, la API oficial no tiene nivel gratuito y cobra por recurso: aproximadamente $0.005 por lectura de post y $0.010 por lectura de usuario, con la multimedia contada como recurso propio encima (tarifas verificadas en julio de 2026). Las cuentas de pago por uso tienen un tope de 2,000,000 de lecturas de posts al mes, y la autenticación es OAuth 2.0 con Bearer token. Para un solo tweet, está bien. Para un pipeline que lee tweets, su multimedia y sus autores a volumen, el medidor por recurso sube rápido y el parseo queda de tu lado.
Método 2: yt-dlp para descargas puntuales y archivo local {#method-2-yt-dlp}
yt-dlp es el descargador de línea de comandos de código abierto al que más se recurre cuando solo se necesita un archivo en disco. Es un fork mantenido de youtube-dl, publica actualizaciones frecuentes, cubre más de 1,800 sitios y admite Twitter/X de forma nativa. Para un solo video público es una línea.
yt-dlp "https://x.com/USER/status/TWEET_ID"
Selecciona la mejor calidad por defecto y usa FFmpeg para unir streams cuando hace falta, así que instalas FFmpeg junto a él. Para tus propios posts o cualquier cosa detrás de un login, pasas cookies de una sesión de navegador con la sesión iniciada:
yt-dlp --cookies-from-browser chrome "https://x.com/USER/status/TWEET_ID"
yt-dlp es excelente para archivo personal, uso transformativo de tu propio contenido y scripts rápidos. Encaja peor en pipelines de multimedia de producción por tres razones. Te entrega un archivo descargado en lugar de URLs y metadatos estructurados, así que construir una base de datos de enlaces de multimedia implica parsear su salida por tu cuenta. Su extractor se rompe cada vez que X cambia la estructura de su página, lo que significa fijar versiones y reconstruir con regularidad. Y correrlo sobre un lote grande desde una sola máquina invita bloqueos y límites por IP, porque estás scrapeando el frontend en lugar de llamar a un endpoint administrado. Las cuentas privadas, el contenido de pago de creadores y los mensajes directos están detrás de autenticación y quedan fuera de alcance sin permiso.
Método 3: una API administrada de datos de Twitter/X {#method-3-a-managed-twitter-x-data-api}
Una API administrada de datos de Twitter/X elimina tanto la configuración de OAuth como el parseo de variantes. Con Sorsa, una llamada al endpoint Tweet Data devuelve el tweet completo, su multimedia y el perfil completo del autor, autenticada con un único encabezado ApiKey.
curl -X POST "https://api.sorsa.io/v3/tweet-info" \
-H "ApiKey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tweet_link": "https://x.com/USER/status/TWEET_ID"}'
La respuesta trae un array entities, donde cada elemento multimedia lista su type (photo, video o url), un link directo al archivo y una miniatura preview:
{
"id": "1782368585664626774",
"full_text": "Example tweet text",
"entities": [
{
"type": "video",
"link": "https://video.twimg.com/amplify_video/.../vid.mp4",
"preview": "https://pbs.twimg.com/.../thumb.jpg"
}
],
"user": { "username": "user", "followers_count": 100000 }
}
Sin expansiones que pedir, sin array variants que ordenar, sin refresco de tokens. Para conjuntos conocidos de posts, el endpoint Tweet Data (Batch) admite hasta 100 IDs de tweets y los devuelve todos como una sola solicitud facturable:
curl -X POST "https://api.sorsa.io/v3/tweet-info-bulk" \
-H "ApiKey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tweet_links": ["TWEET_ID_1", "TWEET_ID_2", "TWEET_ID_3"]}'
Como Sorsa cobra una solicitud por llamada y no por recurso, el perfil del autor adjunto a cada tweet viene incluido sin costo extra, y no hay cargo separado por multimedia. Por el endpoint de lotes, la extracción de multimedia cuesta desde $0.02 por cada 1,000 tweets: $0.049 por 1,000 en Starter, $0.02 en Pro y $0.018 en Enterprise, con cada enlace de multimedia y perfil de autor devuelto. Las extracciones de perfiles por separado salen desde $0.01 por cada 1,000. Los mismos 1,000 posts en la API oficial de X arrancan en $5.00 solo en lecturas de posts, antes de las lecturas separadas de multimedia y por autor (verificado en julio de 2026). Los detalles completos de los planes están en los planes de precio de tarifa plana.
Si solo necesitas un archivo de vez en cuando, o no programas, el mismo motor impulsa un descargador de multimedia de Twitter sin código: pega el enlace de un tweet y obtén el MP4 o la imagen en resolución completa, sin necesidad de clave.
Cómo se comparan los tres métodos {#comparison}
Cada método gana un trabajo distinto. Las elecciones de abajo asignan a cada uno su caso de uso más fuerte, y luego la tabla de costos muestra dónde un modelo de tarifa plana se adelanta a la API oficial.
Descargas puntuales y archivo local: yt-dlp, una herramienta gratuita de línea de comandos cuando solo necesitas un archivo en disco y puedes absorber el mantenimiento.
Acciones oficiales de escritura o feeds de cumplimiento: la API oficial de X, la vía obligatoria para publicar, mensajes directos y datos licenciados.
Extracción de multimedia intensiva en lecturas sobre muchos posts: Sorsa, cobro de tarifa plana por solicitud con llamadas por lotes, URLs estructuradas y datos de autor incluidos.
Si necesitas acceso de escritura o datos licenciados, ese es territorio de la API oficial. Para acceso de lectura a multimedia a un precio de tarifa plana y predecible, gana una alternativa administrada, que corre hasta 50 veces más barata que la API oficial de X en ese trabajo, con las extracciones por lotes ampliando la brecha aún más. Como yt-dlp es gratuito pero autoalojado, la comparación de costos que decide los pipelines reales es contra la API oficial:
| Costo de extraer 1,000 tweets con multimedia y autor | API oficial de X | Sorsa API (por lotes) |
|---|---|---|
| Unidad de cobro | por recurso consultado | por solicitud |
| Lecturas de posts | $5.00 | incluidas |
| Lecturas de autor | $10.00 | incluidas |
| Costo por 1,000 tweets | $15.00 antes de multimedia | desde $0.02 |
Una solicitud de Sorsa devuelve hasta 100 tweets o 200 perfiles, así que mil tweets son diez llamadas por lotes, y el perfil del autor en cada tweet es gratis (verificado en julio de 2026).
Descargar multimedia de una cronología o búsqueda completa {#download-media-from-a-whole-timeline-or-search}
La mayoría de los trabajos reales no son un tweet. Quieres cada video que publicó un perfil, o todas las imágenes que coinciden con una consulta. El patrón es listar los tweets, recolectar los enlaces de multimedia de cada uno y luego descargar los archivos.
Extrae los posts de un perfil con el endpoint User Tweets, que devuelve unos 20 tweets por página junto con sus entities. Sigue el next_cursor para recorrer el resto:
curl -X POST "https://api.sorsa.io/v3/user-tweets" \
-H "ApiKey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username": "USERNAME"}'
Para una palabra clave o un hashtag, cambia al endpoint Search Tweets y lee la multimedia del mismo campo entities. Cuando ya tienes un conjunto de IDs de tweets, el endpoint por lotes colapsa hasta 100 de ellos en una sola solicitud, lo que mantiene bajos tanto tu conteo de solicitudes como tu factura. Todo el flujo son unos pocos endpoints y un bucle, sin OAuth y sin scraping de frontend que mantener. Quienes migran desde un montaje con scripts suelen acompañar esto con la guía de cómo obtener datos de X en Python.
Calidad de imagen: obtener fotos en resolución completa {#image-quality}
Las fotos que ves en la cronología son vistas previas comprimidas afinadas para cargar rápido, no los originales. Guardar con clic derecho, o tomar la primera URL que veas, suele dejarte con una copia reducida. La URL de imagen del objeto multimedia apunta a la subida original, que puede ser varias veces más grande en dimensiones de píxeles y notablemente más nítida.
Esto importa más cuando los píxeles llevan información: infografías, capturas de texto, gráficas o cualquier imagen destinada a OCR o a un conjunto de entrenamiento. Una API administrada devuelve el enlace en resolución completa directamente, así que no estás armando parámetros de tamaño ni adivinando el original. Cuando las imágenes son todo el trabajo, el recorrido dedicado de cómo descargar imágenes de Twitter por API cubre la ruta de fotos de principio a fin, y los equipos que arman corpus etiquetados pueden seguir los pasos de cómo construir un dataset de Twitter para machine learning. Para datasets y archivos, extraer el original una vez es más limpio que volver por una copia más nítida después.
Aspectos legales y términos de servicio {#legal-and-terms-of-service}
Descargar multimedia publicada públicamente para referencia personal o análisis interno es en general aceptable. Republicarla, redistribuirla o usarla comercialmente sin permiso de quien la creó puede infringir derechos de autor y los términos de servicio de X, y ese riesgo vive en lo que haces con el archivo, no en la herramienta que lo obtuvo. Las cuentas privadas y protegidas quedan fuera de alcance sin autorización, y conviene respetar los límites de tasa en lugar de martillar los endpoints. Cuando el uso es de cara al público, lo seguro es dar crédito o acordarlo con quien creó el contenido.
En la práctica {#in-practice}
Una startup de monitoreo de medios de unas 15 personas migró a una API de tarifa plana después de que su producto de seguridad de marca se pasara de presupuesto una y otra vez. El equipo leía URLs de video desde la API oficial, donde el medidor por recurso cobraba por separado cada lectura de post, cada recurso de multimedia y cada consulta de autor. Durante los picos de noticias, el volumen los empujaba hacia el tope de 2,000,000 de lecturas de posts, y el OAuth más el parseo de variants eran un costo de mantenimiento permanente. Enrutar la vía de lectura por una solicitud por lotes por cada 100 tweets llevó la línea de lecturas de multimedia de dólares por millar de tweets a unos dos centavos, un recorte de más de 90%, y colapsar la llamada a una única solicitud con ApiKey eliminó toda una clase de bugs de tokens y parseo. Para los equipos que corren flujos de monitoreo de marca, alinear el modelo de cobro con una carga intensiva en lecturas es toda la ganancia.
Preguntas frecuentes {#faq}
¿Se puede descargar un video de Twitter con la API oficial de X?
Sí. La API oficial de X devuelve enlaces de video cuando solicitas la expansión de multimedia attachments.media_keys junto con media.fields=variants. El video regresa como un array de variantes MP4 a distintos bitrates, y seleccionas la más alta. Las fotos devuelven una única url. Funciona, pero cobra por recurso y requiere OAuth 2.0.
¿Cómo se obtiene la URL directa del MP4 de un tweet?
Consulta el objeto multimedia del tweet y lee la entrada de mayor bitrate en sus variants de video, que es el MP4 directo en video.twimg.com. Las imágenes devuelven la URL del archivo original en pbs.twimg.com. Una API administrada de Twitter/X devuelve estos enlaces en la respuesta sin los pasos de expansión y parseo que exige la API oficial.
¿Existe una API que devuelva las URLs de multimedia de Twitter sin OAuth?
Sí. Sorsa API, una API alternativa de Twitter/X, devuelve los enlaces de multimedia de cada tweet y el perfil completo del autor en una solicitud autenticada con un único encabezado ApiKey, sin flujo OAuth. Agrupa hasta 100 tweets por llamada y corre a 20 solicitudes por segundo en todos los planes, lo que conviene para extraer multimedia a escala.
¿Puede yt-dlp descargar videos de Twitter/X en 2026?
Sí. yt-dlp tiene un extractor nativo de Twitter/X, se mantiene activamente y descarga videos de tweets públicos con un comando, usando FFmpeg para unir streams. El contenido detrás de un login necesita cookies de una sesión iniciada. Es mejor para descargas puntuales y archivo local que para pipelines administrados, porque su extractor se rompe cuando X cambia su marcado.
¿Cuánto cuesta descargar multimedia de Twitter a escala?
En la API oficial de X, leer multimedia cobra por recurso, aproximadamente $0.005 por lectura de post más multimedia por separado y lecturas de usuario de $0.010, con tope de 2,000,000 de lecturas de posts al mes. Una API de tarifa plana como Sorsa cobra por solicitud, así que agrupar mil tweets cuesta desde $0.02 por cada 1,000, unos dos centavos en el plan Pro, con datos de multimedia y autor incluidos.
¿Se pueden descargar imágenes en resolución completa por API?
Sí. La URL de imagen del objeto multimedia apunta al archivo original subido, no a la vista previa comprimida que se muestra en la cronología, y el original suele ser varias veces más grande en dimensiones de píxeles. Extraer el enlace en resolución completa importa para infografías, capturas de texto, OCR y datasets donde el detalle de la imagen es parte de los datos.
Cómo empezar {#getting-started}
Si tu trabajo es acceso estructurado a multimedia sobre muchos posts, la configuración toma minutos y no una cola de aprobación. Cada cuenta nueva arranca con 100 solicitudes gratis: una asignación por única vez, sin tarjeta de crédito, que nunca vence y cubre los 40 endpoints, suficiente para hasta 10,000 tweets o 20,000 perfiles. Crea una clave y haz tu primera llamada con un único encabezado ApiKey, sin OAuth y sin revisión de cuenta de desarrollador. El inicio rápido de Sorsa te lleva a la primera respuesta rápido, y las 20 solicitudes por segundo aplican en todos los planes. Para descargas puntuales, el descargador de multimedia sin código no necesita clave.
Revisado por Keksich, fundador de Sorsa, especialista en marketing e investigador de la API de X.
Esta guía se apoya en nuestro trabajo diario operando la API de solo lectura de Twitter/X de Sorsa, con cada endpoint y ejemplo de código verificado contra la API v3 en vivo durante la redacción. La vía de la API oficial se verificó contra la documentación de desarrolladores de X para las expansiones de multimedia y el campo variants; las cifras de costo usan las tarifas de pago por uso de X tras la actualización de abril de 2026 junto a los planes publicados de Sorsa. El extractor de X vigente de yt-dlp se confirmó contra el proyecto mantenido. Se compararon tres métodos de obtención: la API oficial de X, yt-dlp y Sorsa. Verificado en julio de 2026. Más sobre el equipo en la página Acerca de de Sorsa.