Ir al contenido

Cómo obtener datos históricos de Twitter desde 2006

Los datos históricos de Twitter llegan hasta el primer tweet, del 21 de marzo de 2006: cada post público que sigue en línea se puede obtener por palabra clave, cuenta y rango de fechas con una API de búsqueda en el archivo completo, mientras que los posts eliminados y los protegidos ya no están.

Respuesta corta: Nadie vende todo el archivo como un solo archivo: buscas la parte que necesitas por palabra clave y fecha. La API oficial de X cobra esa búsqueda a $5.00 por 1,000 posts, con un tope de 3M al mes. Para un backfill, usa Sorsa API, una API y scraper de Twitter (X): desde $0.07 por 1,000 tweets con POST /search-tweets, y 100 solicitudes gratis para empezar.

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

#Hasta dónde llegan los datos históricos de Twitter

Los datos históricos de Twitter empiezan el 21 de marzo de 2006, el día del primer tweet, y cada post público que sigue en línea desde entonces se puede encontrar buscándolo. Nadie entrega el archivo completo como un archivo, así que obtienes la parte que necesitas: por consulta, por cuenta o por ID de tweet.

Tres tipos de posts están fuera del alcance de toda API y toda herramienta: los tweets que sus autores eliminaron, los posts de cuentas protegidas y los posts de cuentas suspendidas. Un conjunto de datos recopilado en 2019 y recopilado de nuevo hoy sale más pequeño exactamente por eso.

Para unas pocas consultas a mano, la herramienta gratuita Búsqueda avanzada de Twitter corre los mismos operadores de fecha en el navegador. Todo lo que vayas a contar, graficar o usar para entrenar un modelo necesita una API.

Qué devuelve hoy un tweet de 2014

Un tweet histórico vuelve con su texto y su fecha exactamente como se publicó, pero con los contadores de hoy y el perfil del autor tal como es hoy, en cualquier API.

Parte del tweetLo que obtienes de un tweet publicado en 2014
Texto, fecha, ID, enlaces y mediosComo se publicó en 2014
Cantidad de likes, reposts, respuestas y citasLos totales de hoy, no las cantidades de 2014
Autor: handle, bio, cantidad de seguidoresEl perfil del autor hoy, incluido un handle que haya cambiado de nombre
  • Texto, fecha, ID, enlaces y medios

    Lo que obtienes de un tweet publicado en 2014
    Como se publicó en 2014
  • Cantidad de likes, reposts, respuestas y citas

    Lo que obtienes de un tweet publicado en 2014
    Los totales de hoy, no las cantidades de 2014
  • Autor: handle, bio, cantidad de seguidores

    Lo que obtienes de un tweet publicado en 2014
    El perfil del autor hoy, incluido un handle que haya cambiado de nombre

Así, un estudio de cómo se difundió un hashtag en 2014 puede contar sus tweets por día con exactitud. No puede leer las cantidades de seguidores de 2014 del archivo, porque un tweet nunca las guardó. Si en el futuro necesitas cifras de un momento dado, recopila los tweets a medida que aparecen y guarda tú mismo las cantidades.

#Tres formas de obtener tweets históricos

Para tweets históricos, usa Sorsa API: una clave API llega a cada tweet público desde 2006 a 20 solicitudes por segundo en todos los planes, desde $0.07 por 1,000 en búsqueda. El endpoint depende de con qué empiezas, un tema y fechas, una cuenta o una lista de ID de tweets, y cada tweet llega con el perfil completo de su autor.

Busca un tema, lee la línea de tiempo de una cuenta, consulta ID de un conjunto de datos publicado. La vía por ID es la que menos cuesta por tweet.

La búsqueda cubre la mayor parte de la investigación: un hashtag durante una elección, las menciones de una marca en 2019, un cashtag a lo largo de cinco años. La vía por cuenta lee una línea de tiempo del post más reciente al más antiguo. La vía por ID reconstruye un conjunto de datos que alguien ya publicó, y es la que menos cuesta por tweet porque una solicitud lleva 100 tweets.

#Cómo buscar tweets históricos con la API

Buscar en el archivo con Sorsa API toma cuatro pasos y una clave, y ninguno pide una cuenta de X, una revisión de app ni OAuth. El mismo endpoint corre también búsquedas en vivo, que cubre nuestra guía de la API de búsqueda de Twitter.

  1. Consigue una clave. Regístrate y copia tu clave API del dashboard. Las 100 solicitudes gratis ya están en ella.

  2. Escribe la consulta. Pon primero las palabras y luego la ventana: since:2014-04-01 incluye ese día y until:2014-05-01 se detiene antes de él, ambos en UTC. Acótala con from:, lang:, min_faves: o -filter:retweets; cada operador está en nuestra lista de operadores de búsqueda de Twitter.

  3. Envía la primera solicitud. Haz POST de la consulta a POST /search-tweets (se abre en una pestaña nueva) con "order": "latest", para que las páginas recorran la ventana en orden temporal.

    Terminal
    curl -X POST "https://api.sorsa.io/v3/search-tweets" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "query": "\"rainfall survey\" since:2014-04-01 until:2014-05-01",
        "order": "latest"
      }'
    
    Response200 OK
    {
      "tweets": [
        {
          "id": "456721912166192197",
          "full_text": "Day 3 of the rainfall survey: 41 mm in the valley.",
          "created_at": "2014-04-17T09:12:44Z",
          "lang": "en",
          "likes_count": 38,
          "retweet_count": 12,
          "reply_count": 4,
          "quote_count": 1,
          "is_reply": false,
          "user": {
            "id": "583920117",
            "username": "mira_archive_notes",
            "display_name": "Mira Field Notes",
            "followers_count": 2214,
            "created_at": "2012-06-02T18:40:11Z"
          }
        }
      ],
      "next_cursor": "DAADDAABCgABGEZx0iWAJ8kKAAIYRm0eqZvwRg"
    }
    
  4. Recorre la ventana página por página. Envía next_cursor de vuelta en el cuerpo con la misma consulta, y detente cuando una respuesta llegue sin él. Las páginas contienen unos 20 tweets y su tamaño varía, así que una página corta nunca significa que la ventana terminó.

Una respuesta 403 significa que falta la clave, es incorrecta o se quedó sin solicitudes; una 429 significa más de 20 solicitudes en un segundo, así que espera un segundo y envíala de nuevo.

Para tener en cuenta

Usa "order": "latest" para un backfill: recorre una ventana de fechas en orden temporal, que es como funciona una recopilación completa. "popular" pone primero los tweets con más engagement, y sirve para encontrar los mejores posts de un periodo, no para contar todos los posts de él.

#Cómo hacer un backfill de años de tweets sin huecos

Un backfill de varios años corre mejor como muchas ventanas de fechas pequeñas, un mes o una semana cada una, recorridas hasta el final y guardadas una por una. Una ventana que falla se vuelve a correr sola, cada ventana se puede verificar por su cantidad, y como until: excluye su propio día, las ventanas consecutivas nunca guardan un tweet dos veces.

Un mes a la vez: cada ventana se recorre hasta su último cursor y se guarda, así que una caída cuesta un mes, no todo el trabajo.

El script de abajo recorre un rango de fechas mes a mes y pagina cada ventana con next_cursor. Escribe un archivo JSON Lines por mes y omite los meses que ya están en disco, así que puedes detenerlo y volver a iniciarlo en cualquier punto.

import json
import os
import time
from datetime import date

import requests

URL = "https://api.sorsa.io/v3/search-tweets"
HEADERS = {"ApiKey": "YOUR_API_KEY"}


def months(start, end):
    """Yield (since, until) pairs, one calendar month each."""
    d = start
    while d < end:
        nxt = date(d.year + d.month // 12, d.month % 12 + 1, 1)
        yield d, min(nxt, end)
        d = nxt


def backfill(words, start, end, folder="archive"):
    os.makedirs(folder, exist_ok=True)
    for since, until in months(start, end):
        path = f"{folder}/{since:%Y-%m}.jsonl"
        if os.path.exists(path):
            continue  # this month is already saved
        body = {"query": f"{words} since:{since} until:{until}",
                "order": "latest"}
        rows = []
        while True:
            r = requests.post(URL, headers=HEADERS, json=body)
            if r.status_code == 429:
                time.sleep(1)  # over 20 requests a second
                continue
            r.raise_for_status()
            page = r.json()
            rows += page.get("tweets", [])
            if not page.get("next_cursor"):
                break
            body["next_cursor"] = page["next_cursor"]
        with open(path, "w", encoding="utf-8") as f:
            for t in rows:
                f.write(json.dumps(t) + "\n")
        print(since, len(rows), "tweets")


backfill('"rainfall survey" lang:en', date(2015, 1, 1), date(2021, 1, 1))

Los temas muy activos, como un cashtag o un evento mundial, conviene cortarlos en días u horas; un hashtag tranquilo cabe en un mes. Para ventanas más finas que un día, los operadores de X también aceptan segundos Unix: since_time:1397692800 until_time:1397779200 es el 17 de abril de 2014, en UTC.

#Cuánto cuesta un backfill histórico

Un backfill histórico en Sorsa API cuesta desde $0.07 por 1,000 tweets en búsqueda y desde $0.014 por 1,000 por ID de tweet. Así, 1M de tweets históricos cuestan desde $70, o desde $14 cuando ya tienes los ID. La API oficial de X cobra $5,000 por el mismo millón de posts.

Tweets históricos

Partes de

1M de tweets históricos encontrados por búsqueda, con sus autores

$5,000

API oficial de X

$0.005 por publicación

hasta $15,000 con autores desde el 22 de nov

desde $70

Sorsa API

desde $0.07 por 1,000 resultados

autores incluidos

Aprox. 42 minutos con Sorsa API a 20 solicitudes por segundo. El tope de 3M de publicaciones al mes de la API oficial de X permite hacer este trabajo en un solo ciclo de facturación.

Elige un tamaño y un punto de partida para comparar ambas APIs y ver cuánto tarda Sorsa API a 20 solicitudes por segundo.

En cualquier tamaño, un backfill por búsqueda cuesta alrededor de 1/70 del precio de la API oficial de X, y uno por ID alrededor de 1/350.

Tweets históricosSorsa API, por búsquedaSorsa API, por ID de tweetAPI oficial de X, solo postsCiclos de facturación de X con el tope de 3M
100Kdesde $7desde $1.40$5001
1Mdesde $70desde $14$5,0001
10Mdesde $700desde $140$50,0004
100Mdesde $7,000desde $1,400$500,00034, o Enterprise
  • 100K

    Sorsa API, por búsqueda
    desde $7
    Sorsa API, por ID de tweet
    desde $1.40
    API oficial de X, solo posts
    $500
    Ciclos de facturación de X con el tope de 3M
    1
  • 1M

    Sorsa API, por búsqueda
    desde $70
    Sorsa API, por ID de tweet
    desde $14
    API oficial de X, solo posts
    $5,000
    Ciclos de facturación de X con el tope de 3M
    1
  • 10M

    Sorsa API, por búsqueda
    desde $700
    Sorsa API, por ID de tweet
    desde $140
    API oficial de X, solo posts
    $50,000
    Ciclos de facturación de X con el tope de 3M
    4
  • 100M

    Sorsa API, por búsqueda
    desde $7,000
    Sorsa API, por ID de tweet
    desde $1,400
    API oficial de X, solo posts
    $500,000
    Ciclos de facturación de X con el tope de 3M
    34, o Enterprise

Los precios "desde" usan la tarifa más baja por solicitud de Sorsa API; en el plan Pro, los resultados de búsqueda cuestan unos $0.10 por 1,000 y los tweets por ID unos $0.02. Las solicitudes fallidas nunca se cobran, y el perfil del autor dentro de cada tweet no cuesta nada extra.

Para tener en cuenta

Desde el 22 de noviembre de 2026, la API oficial de X cobra cada objeto que devuelve una expansión a su tarifa estándar, como anunció el 23 de octubre (se abre en una pestaña nueva) el equipo de desarrolladores de X. Un post leído con su autor pasa entonces a costar $0.015 en lugar de $0.005. Un conjunto de datos histórico casi siempre necesita a sus autores, así que planea hasta $15.00 por 1,000 posts ahí.

La API oficial de X también detiene el pago por uso en 3M de lecturas de posts por ciclo de facturación. Un backfill de 10M de tweets toma cuatro ciclos de facturación, y la única forma de pasar el tope es un contrato Enterprise desde unos $42,000 al mes. Cada otra tarifa oficial está en nuestro desglose de precios de la API de X.

#Tweets históricos en la API oficial de X

La API oficial de X sirve tweets históricos con la búsqueda en el archivo completo, GET /2/tweets/search/all, que llega hasta marzo de 2006 y devuelve hasta 500 posts por solicitud. Está abierta a clientes de pago por uso y Enterprise, según la documentación de búsqueda de X (se abre en una pestaña nueva). Antes de la primera llamada necesitas una cuenta de desarrollador aprobada, un proyecto y una app en el Developer Console, y las claves y tokens de la app. Cada lectura se descuenta de créditos que compras por adelantado a $0.005 por post, según la lista de precios de X (se abre en una pestaña nueva). Las fechas van en start_time y end_time como marcas de tiempo ISO 8601.

Medida con lo que necesita un backfill, Sorsa API gana en precio, datos del autor, volumen y configuración, y llega al mismo inicio de marzo de 2006.

APIPrecio por 1,000 tweetsPerfil del autorVolumen al mesConfiguración
Sorsa APIdesde $0.07 por búsqueda, desde $0.014 por IDEn cada tweet, sin cargo extraSin tope de posts, 20 solicitudes por segundoUna clave API
API oficial de X$5.00$10.00 por 1,000 autores desde el 22 de nov. de 20263M de posts, luego EnterpriseCuenta de desarrollador, app, token OAuth, créditos prepagados
  • Sorsa API

    Precio por 1,000 tweets
    desde $0.07 por búsqueda, desde $0.014 por ID
    Perfil del autor
    En cada tweet, sin cargo extra
    Volumen al mes
    Sin tope de posts, 20 solicitudes por segundo
    Configuración
    Una clave API
  • API oficial de X

    Precio por 1,000 tweets
    $5.00
    Perfil del autor
    $10.00 por 1,000 autores desde el 22 de nov. de 2026
    Volumen al mes
    3M de posts, luego Enterprise
    Configuración
    Cuenta de desarrollador, app, token OAuth, créditos prepagados

Escribir es donde la API oficial de X sigue en juego: Sorsa API es de solo lectura por diseño, así que nunca publica y nunca toca tu cuenta de X. Para publicar, combínala con la API oficial de X; para leer, una clave basta, como explica la guía de la API de Twitter sin cuenta de desarrollador.

#Quién podía buscar en el archivo de Twitter, de 2006 a 2026

Durante la mayor parte de la historia de Twitter, el archivo completo estuvo detrás de contratos empresariales. Los investigadores tuvieron acceso gratis durante unos dos años, y desde febrero de 2026 cualquier desarrollador puede comprarlo a X post por post.

Veinte años de acceso al archivo en seis fechas. El acceso gratis para investigadores duró de 2021 a 2023.

La vía Academic Research, abierta el 26 de enero de 2021, dio a los investigadores aprobados búsqueda gratis en el archivo completo. Cuando Twitter anunció sus niveles de pago (se abre en una pestaña nueva) el 30 de marzo de 2023, retiró los niveles de acceso heredados. A los académicos se les remitió a los planes generales mientras la empresa buscaba "nuevas formas de seguir atendiendo a esta comunidad". El acceso académico dejó de funcionar ese verano, y no ha vuelto ningún nivel académico. Los investigadores pueden solicitar el acceso de investigación académica de Sorsa API desde un correo institucional. Cada concesión se adapta al estudio, desde solicitudes al volumen que necesita hasta un descuento profundo.

#El historial de una cuenta, o una lista publicada de ID de tweets

Para obtener todo lo que publicó una cuenta, llama a POST /user-tweets (se abre en una pestaña nueva) con su username, user_id o enlace de perfil y recorre next_cursor del post más reciente al más antiguo. Para un tramo de años, busca from: el handle con since: y until: en su lugar. La guía para descargar todos los tweets de un usuario recorre la exportación a CSV.

La rehidratación consiste en obtener los tweets completos detrás de una lista de ID de tweets, la forma en que se comparte la mayoría de los conjuntos de datos de investigación. POST /tweet-info-bulk (se abre en una pestaña nueva) recibe hasta 100 ID o enlaces por solicitud y devuelve cada tweet con su autor, desde $0.014 por 1,000, así que un conjunto de datos de 1M de ID cuesta desde $14. Los ID de tweets eliminados o protegidos desde su publicación vuelven sin resultado, así que un conjunto rehidratado siempre es un poco más pequeño que el original. Convertir el resto en datos de entrenamiento se cubre en cómo crear un conjunto de datos de Twitter para machine learning.

#Empieza tu backfill con 100 solicitudes gratis

Para datos históricos de Twitter, empieza con Sorsa API: cada tweet público desde 2006 con una clave API, a 20 solicitudes por segundo en todos los planes. La búsqueda cuesta desde $0.07 por 1,000 tweets, y las consultas por ID desde $0.014 por 1,000. Las 100 solicitudes gratis devuelven unos 2,000 tweets de cualquier ventana de fechas, sin tarjeta y sin vencimiento. Obtén un mes de tu tema, revísalo y luego planea el rango completo.

#Preguntas frecuentes

¿Cuál es la mejor API para datos históricos de Twitter?

Usa Sorsa API para datos históricos de Twitter: busca cada tweet público desde 2006 desde $0.07 por 1,000 resultados, frente a $5.00 en la API oficial de X. Acepta los propios operadores de búsqueda de X y devuelve a cada autor dentro del tweet sin cargo extra. No tiene tope mensual de 3M, no necesita cuenta de desarrollador y corre a 20 solicitudes por segundo en todos los planes.

¿Hay una forma gratis de obtener tweets históricos?

Sí, para trabajos pequeños. La búsqueda avanzada de X muestra tweets antiguos una pantalla a la vez a un usuario con sesión iniciada. La herramienta gratuita Buscar tweets por fecha lista lo que una cuenta publicó en un día dado. Para datos que puedas exportar, las 100 solicitudes gratis de Sorsa API devuelven unos 2,000 tweets históricos por búsqueda o 10K por ID, sin tarjeta.

¿Se pueden obtener tweets eliminados del archivo de Twitter?

No. Un tweet que su autor eliminó sale del índice de búsqueda de X, así que ninguna API lo devuelve: ni Sorsa API ni la API oficial de X. Los posts de cuentas protegidas o suspendidas están fuera de alcance de la misma manera. Un tweet eliminado sobrevive solo donde alguien guardó su texto completo antes de que lo quitaran, como una captura de un archivo web.

¿Cómo funcionan since: y until: en la búsqueda de Twitter?

since:2014-04-01 devuelve tweets desde esa fecha en adelante y until:2014-05-01 se detiene antes de esa fecha, ambos contados en UTC, así que el par cubre todo abril de 2014. Combínalos con palabras, from: o lang: en una sola consulta. Para ventanas de horas, since_time: y until_time: aceptan segundos Unix. POST /search-tweets de Sorsa API acepta los cuatro operadores.

¿Puedo descargar todo el archivo de Twitter?

No. Nadie vende todo el archivo de tweets públicos como una sola descarga, y X solo te deja descargar el archivo de tu propia cuenta, desde Configuración y privacidad. Los investigadores obtienen en cambio la parte que necesitan. Sorsa API busca cualquier palabra clave, hashtag o cuenta desde 2006 por fecha, desde $0.07 por 1,000 tweets, y reconstruye listas de ID publicadas desde $0.014 por 1,000.

#Cómo lo verificamos

El 2 de noviembre de 2026 leímos la lista de precios de pago por uso de X, su documentación de búsqueda, su aviso del 23 de octubre de 2026 sobre el cobro de expansiones y su anuncio del 30 de marzo de 2023 de los niveles de pago. Cada precio, límite y fecha de la API oficial de X de esta página sale de ellos. Ese mismo día comprobamos cada endpoint, parámetro y tamaño de página de Sorsa API con nuestra referencia de API en vivo y la documentación de operadores de búsqueda. La solicitud y la respuesta se construyen a partir de esa referencia con una cuenta de demostración, y los costos y tiempos son aritmética a partir de las tarifas publicadas.

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. Los precios de la API oficial de X, el tope de 3M y el cobro de autores del 22 de noviembre de 2026 se volvieron a verificar en las páginas de X. Nuevo: tres vías para llegar a tweets históricos, un script de backfill mes a mes en Python y Node.js, una calculadora de costo y tiempo, lo que devuelve hoy un tweet histórico y una cronología con fechas del acceso al archivo.
  • Primera publicación.