Por Sorsa Editorial
Atualizado em julho de 2026: adiciona a oferta inicial de 100 requisições grátis, reafirma o preço da Sorsa em base por 1.000 e reflete as tarifas de pagamento por uso da API oficial do X após a mudança de 20 de abril de 2026.
Em resumo: Um scraper de imagens do Twitter extrai arquivos de mídia, fotos, vídeos e GIFs, de posts públicos do X. O caminho prático em 2026 é uma API que retorna as URLs de mídia de cada tweet em uma resposta estruturada, que você então baixa. Ferramentas de navegador lidam com um post por vez; uma API lida com perfis inteiros, buscas e trabalhos em massa.
A maioria dos guias de scraping de imagens do Twitter te aponta para um de dois becos sem saída: um botão de navegador que pega um único post, ou um script Python que quebra na próxima vez que o X muda seu frontend. Nenhum escala, e a API oficial do X agora cobra por recurso buscado, então puxar mídia de milhares de posts fica caro rápido.
A Sorsa API, um provedor alternativo de API do Twitter (X), toma uma rota diferente. Ela retorna a mídia de cada tweet dentro de um array entities estruturado, então uma única requisição pode fazer emergir cada URL de foto e vídeo de uma consulta de busca ou de uma linha do tempo de perfil, e você baixa os arquivos na sua própria programação. A cobrança é fixa por requisição (1 chamada = 1 requisição), então a coleta de mídia sai a partir de US$ 0,02 por 1.000 tweets em base de lote, com os perfis de autor vindo dentro de cada resposta de tweet sem cobrança extra. O rate limit é um fixo de 20 requisições por segundo em todo plano, a autenticação é uma única chave de API em um cabeçalho em vez de OAuth, e as primeiras 100 requisições são grátis sem cartão. Em trabalho de leitura intensa de mídia, isso sai até 50x mais barato do que a API oficial.
Este guia cobre o que um scraper de mídia de fato retorna, o caminho de API funcional com código executável, por que os métodos caseiros populares falham em 2026 e o cálculo de custo real.
Conteúdo
- O que um scraper de imagens do Twitter faz
- Como baixar mídia do Twitter: os métodos
- Como obter mídia do Twitter via API
- Construindo o seu próprio scraper, e por que ele quebra
- Limites, custo e casos de borda
- Como isso fica na prática
- Primeiros passos
- Perguntas frequentes
O que um scraper de imagens do Twitter faz {#what-a-twitter-image-scraper-does}
Um scraper de imagens do Twitter coleta mídia anexada a posts públicos do X, incluindo fotos, vídeos e GIFs animados, junto com os metadados em torno de cada post. Na prática, ele faz dois trabalhos distintos: encontra as URLs de mídia (de um tweet, um perfil, uma hashtag ou uma busca) e depois baixa os arquivos subjacentes dessas URLs.
Essa divisão em dois passos importa, e a maioria das ferramentas a embaralha. A camada de dados retorna links e detalhes do post em um formato estruturado como JSON. A camada de download busca os bytes de fato dos servidores de mídia do X. Uma boa API te dá a primeira de forma limpa; a segunda é um download HTTP simples que você controla.
O X armazena três tipos de mídia que você pode coletar de posts públicos. Fotos são imagens estáticas servidas do CDN pbs.twimg.com. Vídeos são arquivos MP4. GIFs animados não são realmente GIFs no X: a plataforma os converte em clipes MP4 curtos e silenciosos, então eles voltam como entidades de vídeo em vez de um tipo separado. Cada item de mídia também carrega uma URL de prévia ou de miniatura, útil quando você quer uma referência leve em vez do arquivo completo.
A informação que vem com cada post muitas vezes é tão valiosa quanto a própria imagem: o perfil do autor, o texto do post, o timestamp e os contadores de engajamento (curtidas, reposts, respostas, visualizações). Análise de sentimento visual, monitoramento de marca e montagem de dataset todos dependem de parear a mídia com esse contexto, não apenas jogar arquivos em uma pasta.
Como baixar mídia do Twitter: os métodos {#how-to-download-twitter-media-the-methods}
Existem quatro classes de método para tirar mídia do X, e elas se organizam de forma limpa por escala e por quem faz o trabalho. Baixadores de post único servem para um tweet; APIs servem para perfis, buscas e trabalhos recorrentes.
| Método | Melhor para | Escala | Autenticação necessária | Saída |
|---|---|---|---|---|
| Baixador de navegador (cole um link) | Um post, uso ocasional | Um tweet | Nenhuma | Só arquivos |
| Extensão de navegador | Coleta casual, manual | Pequena | Nenhuma | Só arquivos |
| Script de código aberto (gallery-dl, yt-dlp) | Usuários técnicos, arquivamento | Média, frágil | Seu cookie de login | Arquivos + alguns metadados |
| API gerenciada | Perfis, busca, massa, automação | Alta, estável | Uma chave de API | JSON estruturado + URLs de mídia |
A versão em prosa dessa tabela: se você precisa de uma imagem uma vez, uma ferramenta de colar-um-link serve. No momento em que você precisa de cada imagem de uma conta, de toda a mídia de uma hashtag ou de um trabalho que roda todo dia sem quebrar, você precisa de dados estruturados e paginação, que é o que uma API fornece. Uma opção no-code gratuita para testar os dados sem escrever código é a ferramenta de baixar mídia, que puxa as fotos e vídeos de um único tweet pela mesma API que o resto deste guia usa.
Para o quadro completo de métodos de scraping além de mídia especificamente, um guia mais amplo sobre como fazer scraping do Twitter e uma comparação de scrapers do Twitter cobrem os tradeoffs em profundidade.
Como obter mídia do Twitter via API {#how-to-get-twitter-media-via-api}
Obter mídia por uma API leva cinco passos: pegue uma chave, chame um endpoint que retorna tweets, leia o array entities de cada tweet, baixe cada link e pagine para ir além do limite da linha do tempo. A API te entrega URLs e metadados; o download é uma requisição HTTP padrão que você mesmo faz.
Cada objeto de tweet retornado pela API carrega um array entities. Cada entrada tem um type (photo, video ou url), um link (a URL da mídia) e um preview (a miniatura). Essa estrutura é o jogo inteiro:
{
"id": "1782368585664626774",
"full_text": "Launch photos from this morning",
"created_at": "2026-05-01T10:30:00Z",
"entities": [
{
"type": "photo",
"link": "https://pbs.twimg.com/media/Gx1example.jpg",
"preview": "https://pbs.twimg.com/media/Gx1example.jpg?name=small"
}
],
"user": { "username": "nasa", "followers_count": 90000000 }
}
Um tweet
Chame o endpoint de tweet único, e depois itere as entities para baixar cada arquivo. A chave de API vai no cabeçalho ApiKey:
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://api.sorsa.io/v3"
tweet = requests.post(
f"{BASE}/tweet-info",
headers={"ApiKey": API_KEY},
json={"tweet_link": "https://x.com/nasa/status/1782368585664626774"},
).json()
for item in tweet.get("entities", []):
if item["type"] in ("photo", "video"):
url = item["link"]
data = requests.get(url).content
name = url.split("/")[-1].split("?")[0]
with open(name, "wb") as f:
f.write(data)
Para fotos em resolução completa, peça o tamanho original. O X serve uma versão redimensionada por padrão e expõe aliases de tamanho nas URLs do pbs.twimg.com: thumb (150x150), small (680x680), medium (1200x1200, o padrão), large (2048x2048) e orig (4096x4096), como documentado na comunidade de Desenvolvedores do X. Anexe ?name=orig a uma URL de foto para puxar a maior versão armazenada.
Um perfil inteiro
Para coletar cada imagem e clipe de uma conta, pagine pelo endpoint de tweets de usuário com next_cursor até o cursor acabar. Cada página retorna até 20 tweets:
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": API_KEY}
def media_urls(username):
cursor = None
while True:
body = {"username": username}
if cursor:
body["next_cursor"] = cursor
page = requests.post(f"{BASE}/user-tweets", headers=HEADERS, json=body).json()
for tweet in page.get("tweets", []):
for item in tweet.get("entities", []):
if item["type"] in ("photo", "video"):
yield item["link"]
cursor = page.get("next_cursor")
if not cursor:
break
for url in media_urls("nasa"):
print(url)
Uma hashtag ou busca
Para puxar mídia de um tópico em vez de uma conta, busque tweets pela API com uma consulta e restrinja a posts que carregam mídia usando operadores padrão do X como filter:images ou filter:videos:
body = {"query": "#sunset filter:images", "order": "latest"}
results = requests.post(f"{BASE}/search-tweets", headers=HEADERS, json=body).json()
Os mesmos operadores que funcionam na busca avançada do X funcionam aqui. Uma folha de cola completa de operadores de busca do Twitter cobre intervalos de data, filtros de idioma e mais.
Em massa por ID
Quando você já tem uma lista de IDs de tweet, o endpoint de lote aceita até 100 deles em uma requisição e retorna todos com dados completos de mídia e de autor. Uma chamada em lote conta como uma requisição contra a sua cota, que é onde a vantagem de custo se compõe.
Construindo o seu próprio scraper, e por que ele quebra {#building-your-own-scraper-and-why-it-breaks}
Um scraper caseiro é viável para trabalhos pequenos e avulsos, mas em 2026 os dois caminhos caseiros populares batem cada um em uma parede dura: a abordagem de tutorial da API oficial está efetivamente morta, e os scrapers baseados em cookie arriscam a sua conta e param em 3.200 tweets.
A primeira parede é o tutorial clássico. Muitos guias mais antigos ainda te dizem para instalar o Tweepy, criar uma conta de Desenvolvedor do Twitter e puxar a linha do tempo de um usuário com quatro chaves OAuth. Esse caminho gratuito não existe mais da forma que esses guias descrevem. O X removeu o acesso gratuito à API em 2023, e a API atual cobra por recurso, então o "script Tweepy grátis" que a maioria dos artigos ensina ou falha ou silenciosamente vira uma conta medida.
A segunda parede é o scraper moderno. A ferramenta de código aberto padrão hoje é o gallery-dl, e ela funciona, com duas pegadinhas sérias. Ela agora exige que você extraia o cookie auth-token de uma conta do X logada e o forneça à ferramenta, o que viola os termos do X e coloca aquela conta em risco real de suspensão. E ela herda o limite de linha do tempo do X: a visão padrão de linha do tempo é limitada a cerca de 3.200 tweets por conta, então a mídia mais antiga simplesmente não pode ser alcançada dessa forma. Entre as contas contra as quais rodamos trabalhos de mídia, essas são as duas falhas que aparecem toda vez: uma sessão que morre e uma parede em 3.200 posts.
Um caminho de API contorna ambas. Não há cookie de login para vazar, porque o acesso é uma chave do lado do servidor, não a sua sessão pessoal. E o endpoint de linha do tempo de perfil pagina além da visão de linha do tempo, então você pode percorrer um perfil de volta rumo ao seu primeiro post em vez de parar em 3.200. Se a sua necessidade real é um histórico completo de conta em vez da mídia dela especificamente, puxar um histórico completo de tweets cobre esse fluxo de ponta a ponta.
Limites, custo e casos de borda {#limits-cost-and-edge-cases}
A diferença de custo entre fazer scraping de mídia você mesmo pela API oficial e usar uma API de tarifa fixa é grande, porque os dois provedores cobram em unidades diferentes. O X cobra por recurso buscado; uma API de tarifa fixa cobra por requisição, e uma única requisição pode carregar até 100 tweets com a mídia e os perfis de autor deles.
Aqui vai o lado a lado, usando as tarifas atuais da atualização de preço do X de 20 de abril de 2026:
| API oficial do X (pagamento por uso) | Sorsa API | |
|---|---|---|
| Unidade de cobrança | Por recurso buscado | Por requisição (fixa) |
| 100 tweets com mídia + autor | ~US$ 1,50 (100 posts a US$ 0,005 + 100 leituras de autor a US$ 0,010), mais leituras de mídia a US$ 0,005 cada | US$ 0,00199, uma requisição em lote (Pro) |
| URL de mídia na resposta | Cobrada (Media: Read, US$ 0,005 cada) | Incluída no objeto do tweet |
| Perfil do autor na resposta | Cobrado à parte (US$ 0,010 cada) | Incluído de graça |
| Autenticação | OAuth 2.0 + Bearer Token | Cabeçalho de chave de API única |
| Rate limit | Varia por endpoint | Fixo de 20 req/s, todo plano |
| Teto mensal de leitura | 2 milhões de leituras de post | Cota do plano (10 mil a 500 mil requisições) |
| Ações de escrita (postar, DM, seguir) | Postagem e DMs; seguir/curtir/quote são só Enterprise | Nenhuma, somente leitura |
O recado em texto simples: ler 100 tweets com a mídia e os dados de autor deles sai cerca de US$ 1,50 ou mais no modelo por recurso da API oficial, contra uma única requisição de tarifa fixa na Sorsa. Se o seu fluxo envolve postar, apagar ou enviar DMs, esse é o território da API oficial, e a comparação ali é irrelevante. Para ler e baixar mídia pública a um preço fixo e previsível, é exatamente para isso que a Sorsa é feita. A página de preço dos planos detalha isso mais a fundo.
Alguns casos de borda decidem se qualquer disso funciona:
Contas privadas estão fora de alcance. Contas protegidas restringem seus posts a seguidores aprovados. Nenhuma API, scraper ou ferramenta de download consegue alcançar a mídia de uma conta protegida a menos que você seja um seguidor autenticado. Isto vale para a API oficial do X, para a Sorsa e para todo outro método igualmente.
Rate limits e retries. A Sorsa retorna 429 Too Many Requests se você exceder 20 requisições por segundo; a correção é esperar um segundo e tentar de novo, sem penalidade. Os endpoints de lote reduzem quantas requisições você precisa logo de início.
Links diretos de arquivo. O passo de download é um HTTP GET simples contra a URL no campo link. Fotos resolvem para pbs.twimg.com; arquivos de vídeo são maiores, então faça streaming deles para o disco em vez de carregá-los na memória para trabalhos grandes.
Legalidade, brevemente. Coletar dados públicos é amplamente tratado como permitido, mas os termos do X restringem scraping, e a mídia baixada permanece com o direito autoral do seu criador. Analisar imagens públicas é uma postura diferente de republicá-las, e os termos da plataforma ainda se aplicam. Isto é informação geral, não aconselhamento jurídico; confira o seu caso de uso específico com um advogado.
Como isso fica na prática {#what-this-looks-like-in-practice}
Uma equipe de análise de marca de cerca de seis pessoas chegou a isto depois de um ciclo familiar. Elas estavam arquivando imagens de campanha e clipes curtos do fluxo de menções de uma marca para revisão de sentimento visual, um fluxo de social listening rodando em um pipeline de gallery-dl atrás de uma conta logada. A sessão vivia morrendo no meio da execução, e nos @s mais movimentados elas viviam batendo na parede de 3.200 posts, então o arquivo estava sempre incompleto e alguém estava sempre babá do trabalho.
Mover a coleta para uma API de tarifa fixa removeu os dois problemas. Elas puxaram URLs de mídia da busca e de linhas do tempo de perfil em lotes, baixaram os arquivos na própria programação e pararam de manter sessões de cookie por completo. A conta de dados virou um único número mensal fixo, bem abaixo do que o preço por recurso teria custado naquele volume. Para trabalho de leitura intensa de mídia como este, o modelo fixo sai até 50x mais barato. O ponto ilustrativo vale para qualquer um na mesma situação: o gargalo nunca foi o download, foi a camada de dados frágil que o alimentava.
Primeiros passos {#getting-started}
A forma mais rápida de ver os dados é a ferramenta gratuita de Baixar Mídia linkada antes: cole um link de tweet e ela retorna as fotos e vídeos, sem código. Para construir, pegue uma chave (as primeiras 100 requisições são grátis, sem cartão, e não há revisão de app nem fila de aprovação, então a configuração leva cerca de três minutos), e a primeira chamada é o endpoint de tweet único mostrado acima. Daí, troque pelo endpoint de perfil ou de busca dependendo do trabalho.
Os números que vale lembrar: mídia a partir de US$ 0,02 por 1.000 tweets em base de lote (US$ 0,049 / US$ 0,02 / US$ 0,018 por 1.000 nos planos Starter, Pro e Enterprise), as primeiras 100 requisições grátis sem cartão, um fixo de 20 requisições por segundo em todo plano, URLs de mídia e perfis de autor incluídos em cada resposta de tweet, e endpoints de lote que empacotam até 100 tweets em uma requisição. Os detalhes completos de plano ficam na página de preços linkada acima, e o guia de referência da API documenta cada campo mostrado neste guia.
Perguntas frequentes {#frequently-asked-questions}
Dá para fazer scraping de imagens do Twitter (X)?
Sim. Imagens, vídeos e GIFs públicos no X podem ser coletados por uma ferramenta de navegador, um script de código aberto ou uma API. Uma API é a opção escalável: ela retorna as URLs de mídia e os metadados de cada tweet em JSON estruturado, e você baixa os arquivos dessas URLs. Contas privadas e protegidas não podem ser acessadas por nenhum método a menos que você seja um seguidor aprovado.
É legal fazer scraping de imagens do Twitter?
Coletar dados disponíveis publicamente é amplamente tratado como permitido em muitas jurisdições, mas os termos de serviço do X restringem scraping, e qualquer mídia que você baixa permanece com o direito autoral de quem a postou. Analisar imagens públicas para pesquisa difere de republicá-las comercialmente. Isto é informação geral em vez de aconselhamento jurídico, então confirme o seu caso de uso específico com um advogado qualificado.
Como baixar todas as imagens de uma conta do Twitter?
Pagine pelos tweets da conta e leia as entidades de mídia de cada um, e depois baixe cada URL de foto e vídeo. Uma ferramenta de navegador para em um post, e a maioria dos scrapers de código aberto para no limite de linha do tempo de 3.200 tweets. Um endpoint de API paginado percorre o perfil além desse limite rumo aos primeiros posts da conta, então o arquivo pode ser completo.
Dá para baixar vídeos e GIFs do Twitter também?
Sim. Vídeos e GIFs vêm pelas mesmas entidades de mídia que as fotos. No X, GIFs animados são armazenados como clipes MP4 curtos e silenciosos, então eles voltam como entidades de vídeo em vez de um tipo de GIF separado. Com a Sorsa, cada resposta de tweet inclui suas URLs de mídia, então uma requisição pode retornar fotos, vídeos e GIF-MP4s juntos, e você baixa cada arquivo do seu link.
Quanto custa fazer scraping de mídia do Twitter?
Depende do modelo de cobrança. A API oficial do X cobra por recurso buscado: cerca de US$ 0,005 por post e US$ 0,010 por perfil de autor, mais leituras de mídia. A Sorsa cobra por requisição a uma tarifa fixa, que dá mídia a partir de US$ 0,02 por 1.000 tweets em base de lote, com URLs de mídia e perfis de autor incluídos em cada resposta. As primeiras 100 requisições são grátis, sem cartão. Para coleta de mídia pesada por leitura, o modelo fixo roda até 50x mais barato.
Dá para fazer scraping de mídia de contas privadas do Twitter?
Não. Contas protegidas limitam seus posts a seguidores aprovados, e nenhuma API, scraper ou ferramenta de download consegue recuperar a mídia delas sem uma sessão de seguidor autenticado. Essa restrição se aplica de forma idêntica à API oficial do X, à Sorsa e a todo outro método. Apenas contas públicas e posts públicos podem ser coletados.
Revisado por Keksich, fundador da Sorsa, profissional de marketing e pesquisador da API do X.
Este guia se apoia em trabalho prático operando a Sorsa API, na documentação ao vivo da API e em verificação contra fontes primárias durante a edição de julho de 2026. Os aliases de tamanho de imagem do X foram confirmados contra a comunidade de Desenvolvedores do X; as tarifas por recurso da API oficial do X refletem a atualização de preço de 20 de abril de 2026; o limite de linha do tempo e o comportamento do cookie de autenticação do gallery-dl foram checados contra discussões atuais de projetos de código aberto. Detalhes de preço e de endpoint foram verificados contra a própria documentação de preço e de referência de API da Sorsa. Verificado pela última vez em 8 de julho de 2026.