Ir al contenido

Descarga todos los tweets de un usuario en X

Para descargar todos los tweets de una cuenta de X, recorre su línea de tiempo página por página y guarda cada página en CSV; el endpoint de línea de tiempo de X se detiene en los 3,200 posts más recientes, así que un historial completo exige un endpoint sin ese tope.

Respuesta corta: El archivo de X te da gratis el historial completo de tu propia cuenta, aunque X dice que puede tardar unos días. Para la cuenta de cualquier otra persona, la línea de tiempo de usuario de la API oficial de X se detiene en los 3,200 posts más recientes. Para obtener todos los posts, usa el POST /user-tweets de Sorsa API: 20 posts por solicitud sin tope, desde $0.07 por cada 1,000; tus 100 solicitudes gratis cubren los primeros 2,000.

Endpoint
POST /user-tweets
Tamaño de página
20 posts por solicitud
Precio
desde $0.07 por cada 1,000 posts

#¿Qué camino debes elegir?

Dos datos eligen la ruta: de quién necesitas los tweets y cuántos. El historial completo de tu propia cuenta sale del archivo de X, gratis. Los posts de cualquier otra persona salen de una exportación que recorre su línea de tiempo pública, y qué tan atrás llegue depende del endpoint que la respalda.

Para los posts más recientes de una cuenta, la herramienta Exportar tweets, gratuita, guarda 20 a la vez como CSV, Excel o JSON, con vistas, me gusta, guardados y las etiquetas de X en 25 columnas. No pide registro ni extensión; escribe un handle abajo para probarla.

Export Tweets: las últimas 20 publicaciones de cualquier cuenta

Gratis. Sin registro ni extensión. CSV, Excel o JSON con 25 columnas: texto, fecha, vistas, me gusta, reposts, respuestas, marcadores, enlaces de medios y las etiquetas de X.

El formulario abre la herramienta gratuita Export Tweets con la cuenta ya rellenada.

Todos los posts que una cuenta ha escrito son un trabajo más grande, y cinco números deciden si una ruta puede hacerlo:

  • Qué tan atrás llega. El endpoint de línea de tiempo de usuario de X devuelve solo los 3,200 posts más recientes.
  • El precio por cada 1,000 posts. La API oficial de X cobra $0.005 por post, así que 1,000 posts cuestan $5.00.
  • Qué te pide. La API oficial de X quiere una cuenta de desarrollador, una app y créditos prepagados.
  • Qué tan rápido corre. Un historial largo toma cientos o miles de solicitudes, así que las solicitudes por segundo importan.
  • Qué pone en riesgo. Las herramientas que leen a través de tu sesión de X pueden hacer que esa cuenta quede marcada por actividad automatizada, por lo que algunas aconsejan exportar desde una cuenta de repuesto.

#Descarga todos los posts con Sorsa API

Para el historial completo de cualquier cuenta pública, usa Sorsa API, una API y scraper de Twitter (X): POST /user-tweets recorre toda la línea de tiempo sin el tope de 3,200, 20 posts por solicitud, desde $0.07 por cada 1,000 posts frente a $5.00 en la API oficial de X.

También cumple los otros tres números. Sorsa API necesita una API key en lugar de una cuenta de desarrollador, responde a 20 solicitudes por segundo en todos los planes, incluidas las cuentas gratuitas, y nunca pide tu inicio de sesión de X ni cookies, así que ninguna cuenta tuya de X interviene en una descarga.

Cuatro rutas pasan por Sorsa API con la misma clave y las mismas 100 solicitudes gratis; la herramienta gratuita no necesita clave, y el archivo de X cubre solo la cuenta con la que inicias sesión.

RutaÚsala paraQué obtienesCosto
Sorsa API en el API PlaygroundTodos los posts de una cuenta, sin códigoPáginas de 20 posts como CSV, Excel o JSONPrimeros 2,000 posts gratis, luego desde $0.07 por cada 1,000
Sorsa API, POST /user-tweetsTodos los posts, en código o de forma programadaToda la línea de tiempo, 20 posts por solicitudPrimeros 2,000 posts gratis, luego desde $0.07 por cada 1,000
Sorsa API, POST /search-tweetsUn periodo de una cuentaPosts entre dos fechas, hasta 2006Desde $0.07 por cada 1,000
Sorsa API, POST /tweet-info-bulkPosts de los que ya tienes enlacesHasta 100 posts por solicitudDesde $0.014 por cada 1,000
Herramienta Exportar tweetsLos últimos 20 posts, una vezUn archivo con 20 postsGratis
Archivo de X con tus datosTodo lo de tu propia cuentaUn .zip de HTML y JSON, con mensajes directosGratis; X dice que puede tardar unos días
  • Sorsa API en el API Playground

    Úsala para
    Todos los posts de una cuenta, sin código
    Qué obtienes
    Páginas de 20 posts como CSV, Excel o JSON
    Costo
    Primeros 2,000 posts gratis, luego desde $0.07 por cada 1,000
  • Sorsa API, POST /user-tweets

    Úsala para
    Todos los posts, en código o de forma programada
    Qué obtienes
    Toda la línea de tiempo, 20 posts por solicitud
    Costo
    Primeros 2,000 posts gratis, luego desde $0.07 por cada 1,000
  • Sorsa API, POST /search-tweets

    Úsala para
    Un periodo de una cuenta
    Qué obtienes
    Posts entre dos fechas, hasta 2006
    Costo
    Desde $0.07 por cada 1,000
  • Sorsa API, POST /tweet-info-bulk

    Úsala para
    Posts de los que ya tienes enlaces
    Qué obtienes
    Hasta 100 posts por solicitud
    Costo
    Desde $0.014 por cada 1,000
  • Herramienta Exportar tweets

    Úsala para
    Los últimos 20 posts, una vez
    Qué obtienes
    Un archivo con 20 posts
    Costo
    Gratis
  • Archivo de X con tus datos

    Úsala para
    Todo lo de tu propia cuenta
    Qué obtienes
    Un .zip de HTML y JSON, con mensajes directos
    Costo
    Gratis; X dice que puede tardar unos días

#Descarga todos los tweets sin escribir código

El API Playground envía solicitudes a Sorsa API desde un formulario: elige User Tweets, escribe el handle, ejecútalo y exporta los posts como CSV, Excel o JSON. Sirve para una descarga puntual en la que un script sería excesivo.

  1. Crea una cuenta gratuita. Regístrate y copia tu API key desde el panel. Las primeras 100 solicitudes son gratis, sin tarjeta.

  2. Abre el playground. Ve al API playground y pega la clave arriba.

  3. Elige User Tweets. Escribe el handle de la cuenta sin la @.

  4. Fija el número de páginas. Cada página es una solicitud de 20 posts, así que 100 páginas traen 2,000 posts. El Playground muestra el costo antes de ejecutar nada.

  5. Ejecuta y exporta. Cambia el resultado a CSV, Excel o JSON y guarda el archivo.

Para una cuenta con años de historial, divide el trabajo por fechas: ejecuta Search Tweets en el mismo Playground con from: y un rango de fechas, un año por ejecución, como muestra más abajo la sección sobre el tope de 3,200.

#Cómo descargar todos los tweets con la API, paso a paso

En código, toda la descarga es un bucle alrededor del POST /user-tweets de Sorsa API: una clave en el encabezado ApiKey, 20 posts por solicitud y un cursor que retrocede hasta el primer post de la cuenta. Un cursor es un marcador que la API devuelve con cada página; enviarlo con la siguiente solicitud devuelve la página que sigue.

  1. Obtén una clave. Regístrate y copia la clave desde el panel. No hay cuenta de desarrollador que abrir, ni OAuth ni aprobación.

  2. Revisa el tamaño del trabajo. GET /info (se abre en una pestaña nueva) devuelve el perfil con tweets_count; divídelo entre 20 para obtener el número de solicitudes.

    Terminal
    curl -G "https://api.sorsa.io/v3/info" \
      -H "ApiKey: YOUR_API_KEY" \
      --data-urlencode "username=northfield_climatelab"
    
  3. Pide la primera página. Envía el handle a POST /user-tweets (se abre en una pestaña nueva) como JSON. Un ID de usuario o un enlace de perfil sirven en lugar del handle.

    Terminal
    curl -X POST "https://api.sorsa.io/v3/user-tweets" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"username": "northfield_climatelab"}'
    
    Response200 OK
    {
      "tweets": [
        {
          "id": "2116531887928250368",
          "full_text": "October was our warmest month on record. #climatedata",
          "created_at": "2026-10-31T14:05:00Z",
          "lang": "en",
          "likes_count": 812,
          "retweet_count": 240,
          "reply_count": 61,
          "quote_count": 38,
          "view_count": 96400,
          "bookmark_count": 410,
          "is_reply": false,
          "is_quote_status": false,
          "entities": [
            {
              "type": "photo",
              "link": "https://pbs.twimg.com/media/Gx1nQ7aW8AAzk3T.jpg"
            }
          ],
          "user": {
            "username": "northfield_climatelab",
            "display_name": "Northfield Climate Lab",
            "followers_count": 48900,
            "tweets_count": 12400
          }
        }
      ],
      "next_cursor": "DAABCgABG8vZ0Qm__-oKAAIbuv3MBVvA0AgAAwAAAAIAAA"
    }
    
  4. Sigue el cursor. Pon cada next_cursor en el cuerpo de la siguiente solicitud. Una respuesta sin cursor es la última página: la línea de tiempo está completa.

    POST /user-tweets handle + cursor Escribir 20 filas en tweets.csv Guardar el cursor en un .cursor Sin cursor el archivo está completo repetir con el cursor guardado ¿Se detuvo a medias? Ejecuta el script otra vez: lee el cursor guardado y sigue.
    Guarda el cursor después de cada página, y una descarga detenida se reanuda donde se quedó en lugar de empezar de nuevo.
  5. Escribe las filas a medida que llegan. El script de abajo añade cada página a un CSV, deja los enlaces de medios en su propia columna y guarda el cursor después de cada página, para que una ejecución detenida retome donde se quedó.

    import csv
    import os
    import time
    
    import requests
    
    API = "https://api.sorsa.io/v3/user-tweets"
    HEADERS = {"ApiKey": "YOUR_API_KEY"}
    FIELDS = ["id", "created_at", "full_text", "lang", "likes_count",
              "retweet_count", "reply_count", "quote_count", "view_count",
              "bookmark_count", "is_reply", "in_reply_to_username", "media"]
    
    
    def download(username, out="tweets.csv"):
        state = out + ".cursor"
        cursor = open(state).read().strip() if os.path.exists(state) else None
        first_run = not os.path.exists(out)
        with open(out, "a", newline="", encoding="utf-8") as f:
            rows = csv.DictWriter(f, FIELDS, extrasaction="ignore")
            if first_run:
                rows.writeheader()
            while True:
                body = {"username": username}
                if cursor:
                    body["next_cursor"] = cursor
                r = requests.post(API, headers=HEADERS, json=body, timeout=60)
                if r.status_code == 429:  # over 20 requests in a second
                    time.sleep(1)
                    continue
                r.raise_for_status()  # 403: key missing, wrong or used up
                page = r.json()
                for t in page.get("tweets") or []:
                    media = [e["link"] for e in t.get("entities") or []
                             if e.get("type") in ("photo", "video")]
                    rows.writerow({**t, "media": " ".join(media)})
                f.flush()
                cursor = page.get("next_cursor")
                if not cursor:
                    break
                with open(state, "w") as s:
                    s.write(cursor)
        if os.path.exists(state):
            os.remove(state)
    
    
    download("northfield_climatelab")
    

Respuestas y reposts

Por defecto, POST /user-tweets devuelve los posts propios de la cuenta. Agrega "with_replies": true al cuerpo para incluir sus respuestas, o fija "type" en "replies" o "retweets" para descargar solo esos. Un repost trae el post original completo en retweeted_status.

Una respuesta 403 significa que falta la clave, que es incorrecta o que se acabaron las solicitudes; un 429 significa más de 20 solicitudes en un segundo, así que los scripts esperan un segundo y reintentan. Las solicitudes fallidas nunca se cobran, y la guía de la API de Twitter en Python cubre reintentos y paginación para todos los demás endpoints.

#Cómo obtener más de 3,200 tweets de un usuario

Usa un endpoint sin el tope: el límite de 3,200 pertenece a la línea de tiempo de usuario de la API oficial de X, que devuelve solo los 3,200 posts más recientes de una cuenta, mientras que el POST /user-tweets de Sorsa API sigue retrocediendo hasta el primer post.

La propia documentación de líneas de tiempo (se abre en una pestaña nueva) de X da el número: "Up to 3,200 most recent Posts". La misma documentación lista la búsqueda en el archivo completo (se abre en una pestaña nueva) hasta marzo de 2006 para los clientes de pago por uso, a $0.005 por post y con una cuenta de desarrollador y una app. Así que el tope es una propiedad de un endpoint, no de los datos de X, y las guías que llaman a 3,200 un muro para todas las herramientas describen ese endpoint.

Cuenta de ejemplo: 12.4K posts, de 2011 a 2026 API oficial de X timeline del usuario 8.2K posts antiguos, nunca devueltos Los 3,200 más recientes Sorsa API POST /user-tweets Los 12.4K posts, hasta el primero Tope de 3,200 2011 2014 2017 2020 2023 2026 Posts antiguos a la izquierda, recientes a la derecha
En una cuenta de 12.4K posts, la línea de tiempo de la API oficial de X se detiene tras los 3,200 posts más recientes; la de Sorsa API llega hasta el primero.

Sorsa API vende todo ese historial a la misma tarifa que la página más reciente: una cuenta con 12.4K posts son 620 solicitudes, desde $0.87. La búsqueda en el archivo completo de la API oficial de X cobraría esos mismos posts a $62.00 y se detendría en el mes en 3M de lecturas de posts.

Descarga un periodo por fecha

Para descargar parte de un historial, busca en la cuenta por fecha: POST /search-tweets (se abre en una pestaña nueva) con from:, since: y until: devuelve los posts de esa cuenta entre dos fechas, hasta 2006, 20 por solicitud con el mismo cursor.

Cuerpo de la solicitud
{
  "query": "from:northfield_climatelab since:2019-01-01 until:2020-01-01",
  "order": "latest"
}

Una ventana por año mantiene cada ejecución corta y fácil de reintentar. Agrega filter:media para conservar solo los posts con fotos o video, o -filter:replies para descartar respuestas; la guía de operadores de búsqueda de Twitter lista el resto. Buscar los posts de todas las cuentas sobre un tema hasta 2006 es otro trabajo, que se cubre en datos históricos de Twitter.

#Cuánto cuesta una descarga completa

Una descarga completa cuesta una solicitud por cada 20 posts: una cuenta con 12.4K posts toma 620 solicitudes, desde $0.87 en Sorsa API, mientras que la API oficial de X cobra esos mismos posts a $62.00 a $0.005 cada uno.

A cualquier tamaño, Sorsa API cuesta desde $0.07 por cada 1,000 posts frente a $5.00, y las 100 solicitudes gratis cubren cualquier cuenta de hasta 2,000 posts.

Posts en la cuentaSolicitudesSorsa API, desdeAPI oficial de X
3,200160$0.22$16.00
12.4K620$0.87$62.00
50K2,500$3.50$250.00
200K10K$14.00$1,000.00
  • 3,200

    Solicitudes
    160
    Sorsa API, desde
    $0.22
    API oficial de X
    $16.00
  • 12.4K

    Solicitudes
    620
    Sorsa API, desde
    $0.87
    API oficial de X
    $62.00
  • 50K

    Solicitudes
    2,500
    Sorsa API, desde
    $3.50
    API oficial de X
    $250.00
  • 200K

    Solicitudes
    10K
    Sorsa API, desde
    $14.00
    API oficial de X
    $1,000.00

Escribe el número de posts de cualquier perfil para calcular el costo de tu propia descarga.

El número que aparece bajo el nombre en cualquier perfil de X. O elige uno:

$62.00
en la API oficial de X
$5.00 por 1,000 publicaciones, con la búsqueda de archivo completo: su timeline de usuario se detiene en las 3,200 más recientes
desde $0.87
en Sorsa API
620 solicitudes de 20 publicaciones cada una, 6% del plan Starter (10K al mes)

Tus 100 solicitudes gratis cubren las primeras 2,000 publicaciones, el 16% de esta cuenta.

La parte gratuita y ambos precios se actualizan mientras escribes; las publicaciones por solicitud se mantienen en 20.

Pagas por solicitud, nunca por post: una página de 20 cuesta lo mismo que una última página de 3, y las solicitudes fallidas no cuestan nada. Las 10K solicitudes mensuales de Starter cubren 200K posts, y la tarifa por cada 1,000 solicitudes de cada plan está en la página de precios.

Las páginas de cada cuenta se ejecutan una tras otra, porque cada solicitud necesita el cursor de la anterior. Varias cuentas se descargan en paralelo, hasta 20 solicitudes por segundo por clave en todos los planes, incluidas las cuentas gratuitas.

#Qué contiene cada fila del archivo

Cada post vuelve como un objeto JSON con su texto, fecha, conteos, medios y autor, así que una fila de CSV no necesita una segunda solicitud. Los campos de abajo son los que escriben los scripts anteriores, tomados de la referencia de API en vivo.

CampoQué contieneEjemplo
idEl ID del post, como cadena; consérvalo como texto para que las hojas de cálculo no lo redondeen"2116531887928250368"
created_atCuándo se publicó, ISO 8601 en UTC"2026-10-31T14:05:00Z"
full_textEl texto completo, incluidos los posts largos"October was our warmest..."
likes_count, retweet_count, reply_count, quote_countConteos de interacción812
view_count, bookmark_countVistas y guardados96400
is_reply, in_reply_to_usernameSi el post responde a alguien, y a quiénfalse
quoted_status, retweeted_statusEl post citado o repostado, completoun objeto
entitiesFotos, videos y enlaces, cada uno con type y link"photo"
made_with_ai, paid_partnershipLas etiquetas de X sobre el postfalse
userEl perfil completo del autorun objeto
  • id

    Qué contiene
    El ID del post, como cadena; consérvalo como texto para que las hojas de cálculo no lo redondeen
    Ejemplo
    "2116531887928250368"
  • created_at

    Qué contiene
    Cuándo se publicó, ISO 8601 en UTC
    Ejemplo
    "2026-10-31T14:05:00Z"
  • full_text

    Qué contiene
    El texto completo, incluidos los posts largos
    Ejemplo
    "October was our warmest..."
  • likes_count, retweet_count, reply_count, quote_count

    Qué contiene
    Conteos de interacción
    Ejemplo
    812
  • view_count, bookmark_count

    Qué contiene
    Vistas y guardados
    Ejemplo
    96400
  • is_reply, in_reply_to_username

    Qué contiene
    Si el post responde a alguien, y a quién
    Ejemplo
    false
  • quoted_status, retweeted_status

    Qué contiene
    El post citado o repostado, completo
    Ejemplo
    un objeto
  • entities

    Qué contiene
    Fotos, videos y enlaces, cada uno con type y link
    Ejemplo
    "photo"
  • made_with_ai, paid_partnership

    Qué contiene
    Las etiquetas de X sobre el post
    Ejemplo
    false
  • user

    Qué contiene
    El perfil completo del autor
    Ejemplo
    un objeto

El CSV se abre tal cual en Excel y Google Sheets; el archivo de líneas JSON de la pestaña de Node.js sirve para notebooks y datasets de IA. Para mantener una hoja llena de forma programada, consulta cómo exportar datos de Twitter a Google Sheets.

Para tener en cuenta

Las descargas cubren solo posts públicos. Los posts de cuentas protegidas, los posts eliminados y las listas de quién dio me gusta a un post o a qué dio me gusta o guardó una cuenta son privados en X, así que ninguna API los devuelve. Un post eliminado después de tu descarga se queda en tu archivo.

#Cómo descargar todos los medios de una cuenta de X

Lee los posts de la cuenta con POST /user-tweets y guarda cada entidad cuyo type sea photo o video: cada una trae un link directo al archivo, así que el bucle que guarda el texto también puede guardar los medios.

Python
import os

import requests


def save_media(tweets, folder="media"):
    os.makedirs(folder, exist_ok=True)
    for t in tweets:
        for e in t.get("entities") or []:
            if e.get("type") not in ("photo", "video"):
                continue
            name = t["id"] + "-" + e["link"].split("/")[-1].split("?")[0]
            data = requests.get(e["link"], timeout=60).content
            with open(os.path.join(folder, name), "wb") as f:
                f.write(data)

Llámala con los tweets de cada página dentro del bucle de descarga. GET /info informa el media_count de la cuenta antes de empezar, así que sabes cuántos archivos esperar.

Cada entidad también trae un preview, una miniatura que puedes guardar en lugar del video completo cuando solo necesitas ver qué se publicó. Nombrar cada archivo con el ID de su post, como hace el fragmento, te permite unir después la carpeta de medios con el CSV, porque la columna media de cada fila lista los mismos enlaces. Para los medios de un solo post, pega su enlace en el Descargador de medios, gratuito; los trabajos de medios más grandes se cubren en la guía para descargar medios de Twitter por API.

Envía hasta 100 enlaces o IDs de posts a POST /tweet-info-bulk (se abre en una pestaña nueva) y todos los posts vuelven en una solicitud, desde $0.014 por cada 1,000 posts: 250 veces menos que los $5.00 de la API oficial de X.

Terminal
curl -X POST "https://api.sorsa.io/v3/tweet-info-bulk" \
  -H "ApiKey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tweet_links": [
        "https://x.com/northfield_climatelab/status/2116531887928250368",
        "2115035779691450372"]}'

Úsalo para posts reunidos a mano, las fuentes detrás de un informe o un hilo que vale la pena conservar. Un enlace puede ser una dirección completa de x.com o twitter.com o el ID a secas, y ambos pueden ir en la misma lista; mil posts guardados toman 10 solicitudes. Cada post llega con los mismos campos que una página de línea de tiempo, autor incluido.

Guarda un post el día que lo encuentres cuando te importe. Un enlace a un post que se eliminó o se volvió protegido simplemente no vuelve, el resto del lote llega como siempre, y un post eliminado en X no puede obtenerlo nadie después.

#Cómo descargar todos tus propios tweets

Para tu propia cuenta, solicita el archivo de X: es gratis y contiene todos los posts desde el primero, además de tus mensajes directos, medios, seguidores y Listas, como archivos HTML y JSON en un .zip. El Centro de ayuda de X (se abre en una pestaña nueva) da estos pasos:

  1. Abre tus datos de X. Ve a Configuración y privacidad, luego Tu cuenta, luego Tus datos de X.

  2. Verifica que eres tú. Escribe el código que X envía a tu correo o teléfono.

  3. Solicita los datos. En Descargar tus datos, presiona Solicitar datos junto a X.

  4. Descarga el .zip. X envía por correo un enlace, o manda una notificación push, cuando el archivo está listo; su página de ayuda dice que puede tardar unos días.

El archivo responde a "todo lo que he publicado". Cuando necesitas tus posts públicos como hoja de cálculo hoy, con vistas y guardados en columnas, ejecuta los pasos de la API de arriba con tu propio handle: los mismos 20 posts por solicitud, y sin esperar un correo.

#Descarga tu primera cuenta hoy

Todos los posts de cualquier cuenta pública están a un handle y un bucle de distancia. Sorsa API devuelve 20 posts por solicitud sin el tope de 3,200, desde $0.07 por cada 1,000 frente a $5.00 en la API oficial de X, y los primeros 2,000 posts son gratis. Empieza con la cuenta que necesitas ahora, luego agrega las siguientes en paralelo a 20 solicitudes por segundo; la guía sobre cómo extraer tweets, seguidores y perfiles de X cubre de la misma manera todos los demás tipos de descarga.

#Preguntas frecuentes

¿Se pueden descargar todos los tweets de la cuenta de otra persona?

Sí, de cualquier cuenta pública. El POST /user-tweets de Sorsa API toma el handle y devuelve todos los posts de la línea de tiempo, 20 por solicitud, sin necesitar permiso de la cuenta, porque los posts son públicos en X. Las cuentas protegidas muestran sus posts solo a los seguidores que aprueban, así que no se pueden descargar, y una solicitud que no devuelve nada para una de ellas no cuesta nada.

¿Hay una forma gratuita de descargar todos los tweets de un usuario?

Sí, tres. La herramienta gratuita Exportar tweets guarda los últimos 20 posts de una cuenta sin registro. Cada cuenta de Sorsa API empieza con 100 solicitudes gratis, suficientes para los primeros 2,000 posts de cualquier cuenta pública, sin tarjeta y sin vencimiento. Para tu propia cuenta, el archivo de X es gratuito y completo, aunque X dice que puede tardar unos días en llegar.

¿Qué API debo usar para descargar todos los tweets de un usuario?

Usa Sorsa API. Su POST /user-tweets devuelve 20 posts por solicitud sin el tope de 3,200, desde $0.07 por cada 1,000 posts, mientras que la API oficial de X cobra $5.00 por cada 1,000 y su línea de tiempo de usuario se detiene en los 3,200 posts más recientes. Sorsa API necesita una API key en lugar de una cuenta de desarrollador y OAuth, y responde a 20 solicitudes por segundo en todos los planes.

¿Se pueden descargar tweets de una cuenta privada?

No. Los posts de una cuenta protegida solo los ven los seguidores que ella aprueba, así que ninguna API los devuelve, la API oficial de X incluida. Sorsa API lee solo datos públicos y nunca pide el inicio de sesión de X de nadie, y una solicitud a una cuenta protegida que vuelve vacía no se cobra.

¿Puedo descargar los me gusta o los guardados de alguien?

No. X mantiene privada la lista de posts a los que una cuenta dio me gusta y sus guardados, así que ninguna API los devuelve. Lo que sí puedes descargar son los conteos de me gusta y de guardados de cada post, likes_count y bookmark_count, y, con GET /info, el total de posts a los que una cuenta ha dado me gusta, favourites_count.

¿La cuenta se enterará de que descargué sus tweets?

No. Leer posts públicos con Sorsa API no envía nada a la cuenta y no usa ninguna cuenta tuya de X: la solicitud va de tu clave a Sorsa API. Nada aparece en las notificaciones de la cuenta, y tu propia cuenta de X queda al margen.

#Cómo lo verificamos

Escribimos cada solicitud de esta guía a partir de la referencia de API en vivo de Sorsa API el 2 de noviembre de 2026, y comprobamos con ella cada endpoint, campo del cuerpo, tamaño de página y campo de respuesta. Las respuestas son ejemplos recortados con la forma que documenta esa referencia, para una cuenta ficticia; no las ejecutamos con una clave real para este artículo. El tope de 3,200 de X, sus precios y los pasos del archivo salen de docs.x.com y del Centro de ayuda de X, leídos ese mismo día, y cada costo es aritmética con los $1.40 por cada 1,000 solicitudes de Sorsa API y los $0.005 por post de X.

Por el equipo de Sorsa API. Creamos y operamos Sorsa API, la API y scraper de Twitter/X de solo lectura, en producción desde 2022 (antes TweetScout API) y con más de 6 mil millones de solicitudes procesadas. Acerca de Sorsa API

Qué cambió
  • Reescrito desde cero, con la respuesta primero. El tope de 3,200 rastreado hasta la propia documentación de X, una ruta sin código con el API Playground, un script reanudable en Python y Node.js, un estimador de costos para cuentas de cualquier tamaño, secciones sobre medios y sobre guardar posts por enlace, y cada precio verificado en docs.x.com.
  • Primera publicación.