Baixar todos os tweets de um usuário no X
Para baixar todos os tweets de uma conta do X, percorra a timeline página por página e salve cada uma em CSV; o endpoint de timeline do próprio X para nos 3.200 posts mais recentes, então um histórico completo exige um endpoint sem esse limite.
Resposta curta: O arquivo do X entrega de graça o histórico completo da sua própria conta, embora o X diga que pode levar alguns dias. Para a conta de qualquer outra pessoa, a timeline de usuário da API oficial do X para nos 3.200 posts mais recentes. Para todos os posts, use o POST /user-tweets da Sorsa API: 20 posts por requisição, sem limite, a partir de US$ 0,07 por 1.000; suas 100 requisições grátis cobrem os primeiros 2.000.
- Endpoint
POST /user-tweets- Tamanho da página
- 20 posts por requisição
- Preço
- a partir de US$ 0,07 por 1.000 posts
#Qual caminho você deve usar?
Dois fatos escolhem o caminho: de quem são os tweets de que você precisa e quantos são. O histórico completo da sua própria conta vem do arquivo do X, de graça. Os posts de qualquer outra pessoa vêm de uma exportação que percorre a timeline pública dela, e até onde ela alcança depende do endpoint por trás.
Para os posts mais recentes de uma conta, a ferramenta Exportar tweets gratuita salva 20 por vez em CSV, Excel ou JSON, com visualizações, curtidas, itens salvos e os rótulos do X em 25 colunas. Não pede cadastro nem extensão; digite um handle abaixo para experimentar.
O formulário abre a ferramenta gratuita Export Tweets com a conta preenchida.
Todos os posts que uma conta já escreveu são um trabalho maior, e cinco números decidem se um caminho consegue fazê-lo:
- Até onde ele alcança. O endpoint de timeline de usuário do próprio X devolve apenas os 3.200 posts mais recentes.
- O preço por 1.000 posts. A API oficial do X cobra US$ 0,005 por post, então 1.000 posts custam US$ 5,00.
- O que ele exige de você. A API oficial do X quer uma conta de desenvolvedor, um app e créditos pré-pagos.
- A velocidade. Um histórico longo leva centenas ou milhares de requisições, então as requisições por segundo importam.
- O que ele coloca em risco. Ferramentas que leem pela sua sessão logada no X podem fazer essa conta ser sinalizada por atividade automatizada, e é por isso que algumas delas aconselham exportar a partir de uma conta reserva.
#Baixe todos os posts com a Sorsa API
Para o histórico inteiro de qualquer conta pública, use a Sorsa API, uma API e scraper do Twitter (X): o POST /user-tweets percorre a timeline inteira sem o limite de 3.200, 20 posts por requisição, a partir de US$ 0,07 por 1.000 posts contra US$ 5,00 na API oficial do X.
Ela atende aos outros três números também. A Sorsa API precisa de uma chave de API em vez de uma conta de desenvolvedor, responde a 20 requisições por segundo em todos os planos, contas gratuitas incluídas, e nunca pede seu login do X nem cookies, então nenhuma conta sua do X está envolvida em um download.
Quatro caminhos passam pela Sorsa API com a mesma chave e as mesmas 100 requisições grátis; a ferramenta gratuita não precisa de chave nenhuma, e o arquivo do X cobre apenas a conta com a qual você entra.
| Caminho | Use para | O que você recebe | Custo |
|---|---|---|---|
| Sorsa API no API Playground | Todos os posts de uma conta, sem código | Páginas de 20 posts em CSV, Excel ou JSON | Primeiros 2.000 posts grátis, depois a partir de US$ 0,07 por 1.000 |
Sorsa API, POST /user-tweets | Todos os posts, em código ou de forma agendada | A timeline inteira, 20 posts por requisição | Primeiros 2.000 posts grátis, depois a partir de US$ 0,07 por 1.000 |
Sorsa API, POST /search-tweets | Um período de uma conta | Posts entre duas datas, até 2006 | A partir de US$ 0,07 por 1.000 |
Sorsa API, POST /tweet-info-bulk | Posts de que você já tem os links | Até 100 posts por requisição | A partir de US$ 0,014 por 1.000 |
| Ferramenta Exportar tweets | Os 20 posts mais recentes, uma vez | Um arquivo com 20 posts | Grátis |
| Arquivo dos seus dados no X | Tudo da sua própria conta | Um .zip de HTML e JSON, DMs incluídas | Grátis; o X diz que pode levar alguns dias |
Sorsa API no API Playground
- Use para
- Todos os posts de uma conta, sem código
- O que você recebe
- Páginas de 20 posts em CSV, Excel ou JSON
- Custo
- Primeiros 2.000 posts grátis, depois a partir de US$ 0,07 por 1.000
Sorsa API,
POST /user-tweets- Use para
- Todos os posts, em código ou de forma agendada
- O que você recebe
- A timeline inteira, 20 posts por requisição
- Custo
- Primeiros 2.000 posts grátis, depois a partir de US$ 0,07 por 1.000
Sorsa API,
POST /search-tweets- Use para
- Um período de uma conta
- O que você recebe
- Posts entre duas datas, até 2006
- Custo
- A partir de US$ 0,07 por 1.000
Sorsa API,
POST /tweet-info-bulk- Use para
- Posts de que você já tem os links
- O que você recebe
- Até 100 posts por requisição
- Custo
- A partir de US$ 0,014 por 1.000
Ferramenta Exportar tweets
- Use para
- Os 20 posts mais recentes, uma vez
- O que você recebe
- Um arquivo com 20 posts
- Custo
- Grátis
Arquivo dos seus dados no X
- Use para
- Tudo da sua própria conta
- O que você recebe
- Um .zip de HTML e JSON, DMs incluídas
- Custo
- Grátis; o X diz que pode levar alguns dias
#Baixe todos os tweets sem escrever código
O API Playground envia requisições da Sorsa API a partir de um formulário: escolha User Tweets, digite o handle, execute e exporte os posts em CSV, Excel ou JSON. Serve para um download avulso em que um script seria exagero.
-
Crie uma conta gratuita. Cadastre-se e copie sua chave de API no painel. As primeiras 100 requisições são grátis, sem cartão.
-
Abra o playground. Vá ao API playground e cole a chave no alto da página.
-
Escolha User Tweets. Digite o handle da conta sem o @.
-
Defina o número de páginas. Cada página é uma requisição de 20 posts, então 100 páginas trazem 2.000 posts. O Playground mostra o custo antes de qualquer coisa rodar.
-
Execute e exporte. Mude o resultado para CSV, Excel ou JSON e salve o arquivo.
Para uma conta com anos de histórico, divida o trabalho por data: rode o Search Tweets no mesmo Playground com from: e um intervalo de datas, um ano por execução, como mostra abaixo a seção sobre o limite de 3.200.
#Como baixar todos os tweets pela API, passo a passo
Em código, o download inteiro é um loop em torno do POST /user-tweets da Sorsa API: uma chave no header ApiKey, 20 posts por requisição e um cursor que pagina até o primeiro post da conta. Um cursor é um marcador que a API devolve com cada página; enviá-lo na requisição seguinte devolve a página depois dele.
-
Pegue uma chave. Cadastre-se e copie a chave do painel. Não há conta de desenvolvedor para abrir, nem OAuth, nem aprovação.
-
Confira o tamanho do trabalho. O
GET /info(abre em uma nova aba) devolve o perfil comtweets_count; divida por 20 para obter o número de requisições.Terminal curl -G "https://api.sorsa.io/v3/info" \ -H "ApiKey: YOUR_API_KEY" \ --data-urlencode "username=northfield_climatelab" -
Peça a primeira página. Envie o handle ao
POST /user-tweets(abre em uma nova aba) como JSON. Um ID de usuário ou um link de perfil funciona no lugar do 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" } -
Siga o cursor. Coloque cada
next_cursorno corpo da requisição seguinte. Uma resposta sem cursor é a última página: a timeline está completa.Salve o cursor depois de cada página, e um download interrompido retoma de onde parou em vez de recomeçar. -
Grave as linhas conforme chegam. O script abaixo acrescenta cada página a um CSV, mantém os links de mídia em uma coluna própria e salva o cursor depois de cada página, de modo que uma execução interrompida retoma de onde parou.
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")
Respostas e reposts
Por padrão, o POST /user-tweets devolve os posts da própria conta. Acrescente "with_replies": true ao corpo para incluir as respostas dela, ou defina "type" como "replies" ou "retweets" para baixar só esses. Um repost traz o post original completo em retweeted_status.
Uma resposta 403 significa que a chave está ausente, errada ou sem requisições; um 429 significa mais de 20 requisições em um segundo, então os scripts esperam um segundo e tentam de novo. Requisições com falha nunca são cobradas, e o guia da API do Twitter em Python trata de novas tentativas e paginação para todos os outros endpoints.
#Como obter mais de 3.200 tweets de um usuário
Use um endpoint sem o limite: o teto de 3.200 pertence à timeline de usuário da API oficial do X, que devolve apenas os 3.200 posts mais recentes de uma conta, enquanto o POST /user-tweets da Sorsa API continua paginando até o primeiro post.
A documentação de timelines (abre em uma nova aba) do próprio X dá o número: "Up to 3,200 most recent Posts" (até os 3.200 posts mais recentes). A mesma documentação lista a busca em todo o arquivo (abre em uma nova aba) até março de 2006 para clientes de pagamento por uso, a US$ 0,005 por post, atrás de uma conta de desenvolvedor e de um app. Portanto, o limite é uma propriedade de um endpoint, não dos dados do X, e os guias que chamam 3.200 de muralha para toda ferramenta estão descrevendo esse endpoint.
A Sorsa API vende esse histórico inteiro pela mesma tarifa da página mais recente: uma conta com 12,4 mil posts são 620 requisições, a partir de US$ 0,87. A busca em todo o arquivo da API oficial do X cobraria os mesmos posts em US$ 62,00 e pararia no mês em 3 milhões de leituras de posts.
Baixe um período por data
Para baixar parte de um histórico, busque a conta por data: o POST /search-tweets (abre em uma nova aba) com from:, since: e until: devolve os posts dessa conta entre duas datas, até 2006, 20 por requisição, com o mesmo cursor.
{
"query": "from:northfield_climatelab since:2019-01-01 until:2020-01-01",
"order": "latest"
}
Uma janela por ano mantém cada execução curta e fácil de repetir. Acrescente filter:media para manter só os posts com fotos ou vídeo, ou -filter:replies para descartar respostas; o guia de operadores de busca do Twitter lista o resto. Buscar os posts de todas as contas sobre um tópico desde 2006 é outro trabalho, tratado em dados históricos do Twitter.
#Quanto custa um download completo
Um download completo custa uma requisição por 20 posts: uma conta com 12,4 mil posts leva 620 requisições, a partir de US$ 0,87 na Sorsa API, enquanto a API oficial do X cobra os mesmos posts em US$ 62,00, a US$ 0,005 cada.
Em qualquer tamanho a Sorsa API custa a partir de US$ 0,07 por 1.000 posts contra US$ 5,00, e as 100 requisições grátis cobrem qualquer conta de até 2.000 posts.
| Posts na conta | Requisições | Sorsa API, a partir de | API oficial do X |
|---|---|---|---|
| 3.200 | 160 | US$ 0,22 | US$ 16,00 |
| 12,4 mil | 620 | US$ 0,87 | US$ 62,00 |
| 50 mil | 2.500 | US$ 3,50 | US$ 250,00 |
| 200 mil | 10 mil | US$ 14,00 | US$ 1.000,00 |
3.200
- Requisições
- 160
- Sorsa API, a partir de
- US$ 0,22
- API oficial do X
- US$ 16,00
12,4 mil
- Requisições
- 620
- Sorsa API, a partir de
- US$ 0,87
- API oficial do X
- US$ 62,00
50 mil
- Requisições
- 2.500
- Sorsa API, a partir de
- US$ 3,50
- API oficial do X
- US$ 250,00
200 mil
- Requisições
- 10 mil
- Sorsa API, a partir de
- US$ 14,00
- API oficial do X
- US$ 1.000,00
Digite a contagem de posts de qualquer perfil para calcular o preço do seu próprio download.
A contagem abaixo do nome em qualquer perfil do X. Ou escolha um:
Suas 100 requisições grátis cobrem os primeiros 2,000 posts, 16% desta conta.
A parte grátis e os dois preços se atualizam enquanto você digita; os posts por requisição ficam em 20.
Você paga por requisição, nunca por post: uma página de 20 custa o mesmo que uma última página de 3, e requisições com falha não custam nada. As 10 mil requisições mensais do Starter cobrem 200 mil posts, e a tarifa de cada plano por 1.000 requisições está na página de preços.
As páginas de cada conta rodam uma após a outra, porque cada requisição precisa do cursor da anterior. Várias contas baixam lado a lado, até 20 requisições por segundo por chave em todos os planos, contas gratuitas incluídas.
#O que cada linha do arquivo guarda
Cada post volta como um objeto JSON com texto, data, contagens, mídia e autor, então uma linha de CSV não precisa de uma segunda requisição. Os campos abaixo são os que os scripts acima gravam, tirados da referência de API ao vivo.
| Campo | O que guarda | Exemplo |
|---|---|---|
id | O ID do post, como string; mantenha-o como texto para que as planilhas não o arredondem | "2116531887928250368" |
created_at | Quando foi publicado, ISO 8601 em UTC | "2026-10-31T14:05:00Z" |
full_text | O texto completo, posts longos incluídos | "October was our warmest..." |
likes_count, retweet_count, reply_count, quote_count | Contagens de engajamento | 812 |
view_count, bookmark_count | Visualizações e itens salvos | 96400 |
is_reply, in_reply_to_username | Se o post responde a alguém, e a quem | false |
quoted_status, retweeted_status | O post citado ou repostado, completo | um objeto |
entities | Fotos, vídeos e links, cada um com type e link | "photo" |
made_with_ai, paid_partnership | Os rótulos do X sobre o post | false |
user | O perfil completo do autor | um objeto |
id- O que guarda
- O ID do post, como string; mantenha-o como texto para que as planilhas não o arredondem
- Exemplo
"2116531887928250368"
created_at- O que guarda
- Quando foi publicado, ISO 8601 em UTC
- Exemplo
"2026-10-31T14:05:00Z"
full_text- O que guarda
- O texto completo, posts longos incluídos
- Exemplo
"October was our warmest..."
likes_count,retweet_count,reply_count,quote_count- O que guarda
- Contagens de engajamento
- Exemplo
812
view_count,bookmark_count- O que guarda
- Visualizações e itens salvos
- Exemplo
96400
is_reply,in_reply_to_username- O que guarda
- Se o post responde a alguém, e a quem
- Exemplo
false
quoted_status,retweeted_status- O que guarda
- O post citado ou repostado, completo
- Exemplo
- um objeto
entities- O que guarda
- Fotos, vídeos e links, cada um com
typeelink - Exemplo
"photo"
made_with_ai,paid_partnership- O que guarda
- Os rótulos do X sobre o post
- Exemplo
false
user- O que guarda
- O perfil completo do autor
- Exemplo
- um objeto
O CSV abre no Excel e no Google Sheets do jeito que está; o arquivo de linhas JSON da aba Node.js serve para notebooks e datasets de IA. Para manter uma planilha preenchida de forma agendada, veja como exportar dados do Twitter para o Google Sheets.
Bom saber
Os downloads cobrem apenas posts públicos. Posts de contas protegidas, posts apagados e as listas de quem curtiu um post ou do que uma conta curtiu ou salvou são privados no X, então nenhuma API os devolve. Um post apagado depois do seu download continua no seu arquivo.
#Como baixar toda a mídia de uma conta do X
Leia os posts da conta com o POST /user-tweets e salve toda entidade cujo type seja photo ou video: cada uma traz um link direto para o arquivo, então o loop que salva o texto também pode salvar a mídia.
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)
Chame-a com os tweets de cada página dentro do loop de download. O GET /info informa o media_count da conta antes de você começar, então você sabe quantos arquivos esperar.
Cada entidade também traz um preview, uma miniatura que você pode salvar em vez do vídeo completo quando só precisa ver o que foi publicado. Nomear cada arquivo com o ID do seu post, como faz o trecho, permite juntar depois a pasta de mídia ao CSV, porque a coluna media de cada linha lista os mesmos links. Para a mídia de um único post, cole o link dele no Baixador de mídia gratuito; trabalhos de mídia maiores são tratados no guia para baixar mídia do Twitter por API.
#Salve uma lista de tweets por link
Envie até 100 links ou IDs de posts ao POST /tweet-info-bulk (abre em uma nova aba) e todos os posts voltam em uma requisição, a partir de US$ 0,014 por 1.000 posts: 250x menos que os US$ 5,00 da API oficial do X.
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"]}'
Use para posts coletados à mão, as fontes por trás de um relatório ou uma thread que vale guardar. Um link pode ser um endereço completo de x.com ou twitter.com ou o ID puro, e os dois podem estar na mesma lista; mil posts salvos levam 10 requisições. Cada post chega com os mesmos campos de uma página de timeline, autor incluído.
Salve um post no dia em que o encontrar, se ele importar para você. O link de um post apagado ou que ficou protegido simplesmente não volta, o resto do lote chega normalmente, e um post apagado no X não pode ser buscado depois por ninguém.
#Como baixar todos os seus próprios tweets
Para a sua própria conta, peça o arquivo do X: é grátis e guarda todos os posts desde o primeiro, mais suas DMs, mídia, seguidores e Listas, como arquivos HTML e JSON em um .zip. A Central de Ajuda do X (abre em uma nova aba) dá estes passos:
-
Abra seus dados do X. Vá em Configurações e privacidade, depois Conta, depois Seus dados do X.
-
Confirme que é você. Digite o código que o X envia ao seu e-mail ou telefone.
-
Solicite os dados. Em Baixar seus dados, pressione Solicitar dados ao lado de X.
-
Baixe o .zip. O X envia um link por e-mail, ou uma notificação push, quando o arquivo está pronto; a página de ajuda dele diz que pode levar alguns dias.
O arquivo responde a "tudo o que eu já publiquei". Quando você precisa dos seus posts públicos como planilha hoje, com visualizações e itens salvos em colunas, rode os passos da API acima no seu próprio handle: as mesmas 20 posts por requisição, e sem esperar por um e-mail.
#Baixe a sua primeira conta hoje
Todos os posts de qualquer conta pública estão a um handle e um loop de distância. A Sorsa API devolve 20 posts por requisição sem o limite de 3.200, a partir de US$ 0,07 por 1.000 contra US$ 5,00 na API oficial do X, e os primeiros 2.000 posts são grátis. Comece pela conta de que você precisa agora e depois acrescente as próximas lado a lado, a 20 requisições por segundo; o guia sobre como extrair tweets, seguidores e perfis do X trata de todos os outros tipos de download da mesma forma.
#FAQ
Dá para baixar todos os tweets da conta de outra pessoa?
Sim, de qualquer conta pública. O POST /user-tweets da Sorsa API recebe o handle e devolve todos os posts da timeline, 20 por requisição, sem precisar de permissão da conta, porque os posts são públicos no X. Contas protegidas mostram seus posts apenas aos seguidores que aprovam, então não podem ser baixadas, e uma requisição que não devolve nada para uma delas não custa nada.
Existe uma forma gratuita de baixar todos os tweets de um usuário?
Sim, três. A ferramenta gratuita Exportar tweets salva os 20 posts mais recentes de uma conta sem cadastro. Toda conta da Sorsa API começa com 100 requisições grátis, o bastante para os primeiros 2.000 posts de qualquer conta pública, sem cartão e sem validade. Para a sua própria conta, o arquivo do X é grátis e completo, embora o X diga que pode levar alguns dias para chegar.
Qual API devo usar para baixar todos os tweets de um usuário?
Use a Sorsa API. O POST /user-tweets dela devolve 20 posts por requisição sem o limite de 3.200, a partir de US$ 0,07 por 1.000 posts, enquanto a API oficial do X cobra US$ 5,00 por 1.000 e a timeline de usuário dela para nos 3.200 posts mais recentes. A Sorsa API precisa de uma chave de API em vez de conta de desenvolvedor e OAuth, e responde a 20 requisições por segundo em todos os planos.
Dá para baixar tweets de uma conta privada?
Não. Os posts de uma conta protegida só são visíveis aos seguidores que ela aprova, então nenhuma API os devolve, a API oficial do X inclusive. A Sorsa API lê apenas dados públicos e nunca pede o login do X de ninguém, e uma requisição a uma conta protegida que volta vazia não é cobrada.
Posso baixar as curtidas ou os itens salvos de alguém?
Não. O X mantém privada a lista de posts que uma conta curtiu, e os itens salvos dela, então nenhuma API os devolve. O que você pode baixar são as contagens de curtidas e de itens salvos de cada post, likes_count e bookmark_count e, pelo GET /info, o total de posts que uma conta curtiu, favourites_count.
A conta vai saber que baixei os tweets dela?
Não. Ler posts públicos pela Sorsa API não envia nada à conta e não usa nenhuma conta sua do X: a requisição vai da sua chave para a Sorsa API. Nada aparece nas notificações da conta, e a sua própria conta do X fica fora disso.
#Como verificamos
Escrevemos cada requisição deste guia a partir da referência de API ao vivo da Sorsa API em 2 de novembro de 2026, e conferimos com ela cada endpoint, campo de corpo, tamanho de página e campo de resposta. As respostas são exemplos reduzidos no formato que essa referência documenta, para uma conta fictícia; não as executamos com uma chave real para este artigo. O limite de 3.200 do X, os preços dele e os passos do arquivo vêm do docs.x.com e da Central de Ajuda do X, lidos no mesmo dia, e todo custo é aritmética sobre os US$ 1,40 por 1.000 requisições da Sorsa API e os US$ 0,005 por post do X.
Sources
- X API: Timelines (user posts, up to 3,200 most recent) (abre em uma nova aba)
- X API: Search (full archive back to March 2006) (abre em uma nova aba)
- X API: pay-per-use pricing (abre em uma nova aba)
- X Help Center: How to download your X archive (abre em uma nova aba)
- Sorsa API reference: User Tweets (abre em uma nova aba)
- Sorsa API docs: Historical data (abre em uma nova aba)