Visualizador do Twitter: por que quase nenhum funciona para agentes de IA

Atualizado
Testamos com curl oito visualizadores de Twitter populares como um agent de AI faria. A maioria bloqueia scripts ou esconde dados. Veja o que funciona.
Em resumo: um visualizador do Twitter é uma página que mostra um perfil, um post ou a lista de tendências públicas do X sem precisar de conta no X. Existem dezenas, e para uma pessoa no navegador a maioria dá conta do recado. No dia 7 de outubro de 2026, buscamos oito dos mais conhecidos do jeito que um agente de IA faria: com
curle sem cookies. Dois devolveram um desafio da Cloudflare, duas instâncias do Nitter estavam fora do ar ou bloqueadas por motivos legais, três devolveram uma casca em JavaScript sem dado nenhum dentro, e um, o FxTwitter, devolveu JSON, mas só para posts e usuários individuais. Nenhuma das páginas de visualizador em si pôde ser lida por um script. Um visualizador do Twitter amigável para agentes coloca a requisição na URL, devolve JSON ou Markdown a partir dessa mesma URL, informa o limite de requisições nos headers e usa os mesmos nomes de campo de uma API medida. É assim que a série Visualizador do Twitter da UnifAPI foi construída, e todas as páginas são grátis, sem fazer login, sem precisar de conta e sem chave de API, com limite de 20 consultas a cada 10 minutos por visitante.
"Visualizador do Twitter" está entre as expressões mais buscadas em torno do X, e ela chega de muitas formas: "twitter viewer" em inglês, a grafia errada "twitter viwer", "ver perfil do twitter", "ver x sem conta", "site para ver twitter", a coreana "x 뷰어", a japonesa "twitterビューア". A intenção por trás de todas é a mesma: ver como está uma conta ou um post sem fazer login.
Quem digita essas buscas mudou. Uma parcela crescente das consultas nem é digitada. Elas vêm de um agente que recebeu a ordem de "dar uma olhada nessa conta", de um script que atualiza números de engajamento toda noite ou de um fluxo de pesquisa que se espalha por cinquenta handles. Esses chamadores não querem saber de banner bonito. Querem saber se a página pode ser endereçada, lida e considerada confiável por um programa. Este post é sobre essa lacuna, e sobre o que testamos antes de construir o nosso próprio visualizador.
O que um visualizador do Twitter faz e quem usa um
Um visualizador do Twitter lê os dados públicos do X e os exibe em uma página que você abre sem conta. Os visualizadores de perfil mostram a bio, a contagem de seguidores e os posts recentes. Os visualizadores de post mostram um post completo, com mídia e métricas. Os de tendências listam o que está em alta em uma localidade. Alguns sites juntam vários desses atrás de uma única caixa de busca.
O público tem duas metades, e elas precisam de coisas diferentes:
| Quem chama | O que precisa de um visualizador |
|---|---|
| Uma pessoa no navegador | Uma página rápida, um layout legível e um jeito de seguir os links até o original no X. |
| Um agente, script ou modelo | Uma URL que descreva a requisição por completo, um corpo legível por máquina e limites explícitos. |
A maioria dos visualizadores foi projetada só para a primeira metade. Em 2022 isso fazia sentido. Hoje é um problema, porque é da segunda metade que vem o tráfego recorrente, e porque é a segunda metade que transforma um visualizador em fonte de dados para um fluxo de trabalho inteiro.
Testamos oito sites para ver Twitter do jeito que um agente faria
O método é simples de propósito, porque é exatamente o que um agente faz na primeira tentativa. Para cada visualizador, pedimos a página de perfil público de @NASA (ou o equivalente mais próximo que o site oferece) com curl, user agent padrão, sem cookies, sem JavaScript. Registramos o status HTTP, se os dados do perfil vinham na primeira resposta, se existia alguma alternativa em JSON, Markdown ou RSS e se o site documenta um caminho para agentes. Onde o site bloqueou o user agent padrão, tentamos de novo com uma string de user agent do Chrome.
| Visualizador | O que o curl recebeu | Dados na primeira resposta | JSON / Markdown / RSS | Caminho documentado para agentes |
|---|---|---|---|---|
| Nitter (nitter.net) | Sem resposta | Não | RSS, quando alguma instância está no ar | Nenhum |
| xcancel.com (instância do Nitter) | HTTP 451, indisponível por motivos legais, RSS incluído | Não | Não | Nenhum |
| Sotwe | HTTP 403, desafio "Just a moment" da Cloudflare | Não | Não | Nenhum |
| Twstalker | HTTP 403, desafio "Just a moment" da Cloudflare | Não | Não | Nenhum |
| twitterviewer.net | HTTP 200, uma casca em JavaScript de 5 KB | Não | Não; o llms.txt do site diz que as páginas não são feeds | Um servidor MCP atrás de registro OAuth 2.1 |
| TwitterShots viewer | HTTP 200, página baseada em formulário; /twitter-viewer/NASA dá 404 | Não | Não | Um llms.txt, nenhum endpoint para máquinas |
| Snaplytics | HTTP 200 na landing page, o visualizador redireciona para um formulário | Não | Não | Nenhum |
| FxTwitter (api.fxtwitter.com) | HTTP 200, JSON | Sim | JSON para um post ou um usuário | A própria URL; sem headers de rate limit, sem busca nem tendências |
| O próprio x.com | HTTP 200, uma aplicação JavaScript de 147 KB | Não | Não | A API oficial, com chave e plano |
Três coisas chamam a atenção.
Primeiro, a era do Nitter acabou para quem automatiza. O Nitter parou de funcionar em janeiro de 2024, quando o X removeu as contas de convidado, voltou em 2025 rodando sobre contas reais e, em agosto de 2026, o projeto e suas maiores instâncias públicas receberam notificações extrajudiciais (cease-and-desist) da X Corp. No dia do teste, a maior instância devolvia HTTP 451 para qualquer caminho, incluindo o RSS. Um fluxo de trabalho montado sobre o RSS do Nitter não tem para onde ir.
Segundo, os dois visualizadores que ranqueiam bem nas buscas feitas por pessoas, Sotwe e Twstalker, estão atrás de um desafio anti-bot da Cloudflare para qualquer cliente que não seja navegador. É uma escolha razoável para um site cujo único público são pessoas, mas significa que um agente recebe um 403 e uma página HTML dizendo "Just a moment".
Terceiro, os sites que pensam em agentes deixam isso em um canto à parte. O twitterviewer.net publica um llms.txt que afirma com todas as letras que suas páginas de perfil e de tweet são interfaces de navegador, não feeds rastreáveis, e aponta os agentes para um servidor MCP que exige registro OAuth. O FxTwitter, que existe para consertar prévias de link, é o único que responde a uma URL simples com JSON, e cobre posts individuais e registros de usuário, não busca, respostas, grade de mídia, tendências nem seguidores.
Então o resumo honesto não é "nenhum visualizador atende agentes". É "nenhum visualizador atende agentes pela mesma URL que uma pessoa usa, e os que atendem de alguma forma cobrem uma fatia mínima do X".
Sete formas como os visualizadores do Twitter falham com agentes
A tabela acima é o dado de uma manhã. O padrão por trás dela se repete na categoria inteira, e vale nomear cada falha, porque cada uma tem uma correção diferente.
| # | Falha | Como aparece | Por que quebra a automação |
|---|---|---|---|
| 1 | Sem URL de link direto | O handle entra em um formulário; a URL do resultado é a mesma da página vazia. | O agente não consegue montar a requisição. Precisa controlar um navegador e preencher um formulário. |
| 2 | Só HTML | Não há JSON, Markdown nem alternativa em texto puro. | O modelo tem que raspar um layout que nunca foi feito para ser lido por um programa. |
| 3 | Renderizado por JavaScript | O primeiro byte é uma casca vazia; os dados chegam por um fetch no lado do cliente. | O curl não recebe nada. Navegação headless é lenta e frágil. |
| 4 | Barreira anti-bot | Um CAPTCHA ou um desafio em JavaScript aparece para qualquer cliente que não seja navegador. | Scripts são bloqueados de cara; agentes não conseguem resolver um desafio. |
| 5 | Limites de requisição silenciosos | Nada na resposta diz quantas requisições são permitidas nem quando a janela reinicia. | O agente descobre o limite ao ser banido, e aí não faz ideia de quando tentar de novo. |
| 6 | Nomes de campo instáveis | Os números ficam em tags <span> cujas classes mudam a cada redesign. | Um parser que funciona hoje falha no mês que vem, em silêncio. |
| 7 | Beco sem saída em escala | O visualizador não leva a nenhuma API documentada e medida com os mesmos campos. | As equipes acabam construindo um scraper em cima de uma página que foi feita para humanos. |
As falhas 1 a 3 explicam por que "twitter viewer API" e "twitter viewer json" viraram buscas por conta própria. As pessoas acham um visualizador que funciona para os olhos delas e depois descobrem que não há como chamá-lo.
Como é um visualizador do Twitter amigável para agentes
Inverta as sete falhas e você tem uma especificação curta. Um visualizador amigável para agentes deve:
- Colocar a requisição na URL.
?q=<handle>no visualizador de perfil,?q=<post URL or ID>no visualizador de post. A URL sozinha reproduz a visualização, então dá para registrar em log, cachear, compartilhar e repetir. - Devolver um formato de máquina a partir dessa mesma URL.
?format=jsonpara programas,?format=mdouAccept: text/markdownpara um modelo que vai ler o resultado como texto. Não um produto separado, não um fluxo de cadastro. - Entregar os dados na primeira requisição. Nenhuma casca vazia, nenhum segundo fetch para descobrir.
- Tratar clientes que não são navegador como clientes normais. Script e navegador recebem a mesma resposta. O controle de abuso roda na borda da rede e é calibrado por volume, não por tipo de cliente.
- Declarar seus limites.
X-RateLimit-Limit,X-RateLimit-RemainingeX-RateLimit-Resetem toda resposta. Um 429 trazRetry-Aftere diz onde o teto pode ser levantado. - Manter os nomes de campo estáveis e documentados.
profile.followerscontinua sendoprofile.followers. - Levar a algum lugar. Quando uma consulta vira quinhentas, os mesmos nomes de campo devem estar disponíveis em uma API medida com chave, para que o código não mude.
É assim que a série gratuita de visualizadores do X na UnifAPI foi construída. Cada página de visualizador é uma camada fina sobre um endpoint gratuito em /tools/x/, então o navegador e o agente leem exatamente o mesmo registro, e o registro tem o mesmo formato da API do X / Twitter paga.
Como os agentes encontram um visualizador do Twitter, para começo de conversa
Descoberta para agentes é um problema à parte, e não é a mesma coisa que ranquear para "visualizador do twitter".
Quando alguém pede a um assistente para "olhar os posts recentes da @NASA", o assistente normalmente tenta https://x.com/NASA primeiro e recebe uma aplicação JavaScript sem dado nenhum. O passo seguinte é uma busca na web, e as consultas que ele escreve não são as que uma pessoa digita. São descrições de problema. Na nossa experiência construindo e testando agentes sobre dados públicos, as consultas se parecem com:
view x profile without login jsonget tweet by url as json no api keyx.com returns empty page curl how to read profiletwitter trends api free no keynitter alternative api 2026fetch twitter replies for a tweet id
As páginas que vencem essas buscas têm alguns traços em comum. Colocam o padrão literal da URL no texto, não atrás de um botão. Mostram um exemplo com curl e uma resposta de amostra. Usam as palavras que o agente está varrendo: JSON, Markdown, sem chave de API, rate limit, Retry-After. Publicam um llms.txt e, de preferência, uma alternativa em Markdown de cada página, para que o modelo leia tudo em uma única requisição. E dizem o que a ferramenta não faz, porque um agente que conhece a fronteira para de gastar chamadas em contas protegidas.
Aplicamos isso às próprias páginas de visualizador. Todo visualizador do X na UnifAPI declara seu endpoint, seus parâmetros e seu limite no primeiro parágrafo, tem uma alternativa em Markdown e está listado no llms.txt do site. A ideia não é burlar nada; é responder à pergunta do agente no vocabulário do agente, na página em que ele cai.
Como ver perfil do X sem conta pela linha de comando
Todo visualizador da série tem uma forma de URL e uma forma de endpoint. As duas são gratuitas, as duas têm limite por visitante e as duas devolvem o mesmo corpo.
Um perfil público em JSON:
curl -s "https://unifapi.com/tools/x/profile?handle=nasa" | jq '.profile.followers, .engagementRate'
O mesmo perfil em Markdown, que é o que você quer quando o resultado vai direto para o contexto de um modelo:
curl -s -H "Accept: text/markdown" "https://unifapi.com/tools/x-profile-viewer?q=nasa"
Para ver um post do X pela URL:
curl -s "https://unifapi.com/tools/x/post?url=https://x.com/NASA/status/1234567890123456789"
As respostas abaixo dele, as mais curtidas primeiro, e depois a próxima página:
curl -s "https://unifapi.com/tools/x/replies?id=1234567890123456789&sort=top"
curl -s "https://unifapi.com/tools/x/replies?id=1234567890123456789&sort=top&cursor=<nextCursor>"
Tendências ao vivo de uma localidade, em Markdown:
curl -s "https://unifapi.com/tools/x/trends?location=japan&format=md"
Toda resposta traz os headers de rate limit, então um agente bem-comportado lê X-RateLimit-Remaining e dosa o próprio ritmo em vez de chutar:
HTTP/2 200
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 17
X-RateLimit-Reset: 1791356400
Content-Type: application/json
Quando a janela acaba, o corpo do 429 também é JSON, e ele nomeia o caminho de upgrade em vez de deixar quem chama procurando por um:
{
"error": {
"type": "rate_limited",
"message": "Free limit of 20 requests per 10 minutes reached. Retry after 412s, or use a UnifAPI workspace key (pay as you go) for uncapped access.",
"retryAfterSeconds": 412,
"upgrade": "https://unifapi.com/apis/twitter"
}
}
Referência de endpoints
Os nove visualizadores compartilham um único envelope. Listas voltam como { items, hasMore, nextCursor }; passe cursor=<nextCursor> para paginar. Todo erro é { error: { type, message } } com um de validation_error, not_found, rate_limited, upstream_error, upstream_unavailable.
| Endpoint | Obrigatório | Opcional | Retorna |
|---|---|---|---|
/tools/x/profile | handle (ou q, username) | posts (1–10), cursor | profile, engagementRate, página de posts |
/tools/x/post | id (ou url, q) | post com author, media, quoted, metrics | |
/tools/x/media | handle | cursor | profile, página de posts com mídia |
/tools/x/replies | id (ou url) | sort=top|recent, cursor | post, página de replies |
/tools/x/search | q | cursor | query, página de posts; os operadores de busca do X funcionam |
/tools/x/trends | location (slug ou WOEID), woeid | woeid, locationSlug, generatedAt, trends[] | |
/tools/x/communities | q | cursor | query, página de communities |
/tools/x/followers | handle | kind=followers|following, cursor | profile, kind, página de users |
Adicione format=md a qualquer um deles, ou envie Accept: text/markdown, para receber o mesmo conteúdo em Markdown. Toda página de visualizador aceita os mesmos parâmetros via ?q= mais format=, então /tools/x-profile-viewer?q=nasa&format=json e /tools/x/profile?handle=nasa são a mesma requisição.
A série completa
Um visualizador só raramente basta. Avaliar um criador exige o perfil, a aba de mídia e algumas threads de resposta. Acompanhar uma pauta exige busca mais tendências. A série cobre a superfície pública do X em nove páginas.
| Visualizador | Endpoint gratuito | Lê |
|---|---|---|
| Visualizador do Twitter | encaminha para os outros | Cole qualquer coisa; o hub abre a página certa. |
| Visualizador de perfil do Twitter | /tools/x/profile | Banner, bio, contagens, posts recentes, taxa de engajamento. |
| Visualizador de posts do Twitter | /tools/x/post | Um post com mídia, post citado e todas as métricas. |
| Visualizador de mídia do Twitter | /tools/x/media | As fotos e os vídeos de uma conta em grade. |
| Visualizador de respostas do Twitter | /tools/x/replies | A conversa abaixo de um post, as mais curtidas ou as mais recentes primeiro. |
| Busca avançada do Twitter | /tools/x/search | Posts que batem com uma consulta, com os operadores de busca do X. |
| Em alta no X (Twitter) agora | /tools/x/trends | O que está em alta no X hoje em dez localidades. |
| Buscador de Comunidades do X | /tools/x/communities | Comunidades públicas por tema, com contagem de membros. |
| Visualizador de seguidores do Twitter | /tools/x/followers | Quem segue uma conta, e quem ela segue. |
A página hub aceita um handle, o link de um post, uma hashtag ou uma busca em texto livre e encaminha tudo para o visualizador que consegue responder. Para um agente, isso significa um único ponto de entrada: mande a entrada para /tools/twitter-viewer?q=…&format=json e leia o resultado.
O que os visualizadores não fazem
Amigável para agentes não quer dizer ilimitado, nem quer dizer privado.
- Eles leem apenas dados públicos. Contas protegidas mostram o cabeçalho público e nada mais.
- Eles têm limite por visitante: 20 consultas a cada 10 minutos, aplicado na borda e impresso nos headers.
- Eles nunca fazem login no X. Nenhuma conta sua está envolvida, e nada é escrito, curtido, seguido ou enviado.
- O vídeo toca a partir da própria CDN do X. Nada é re-hospedado nem oferecido para download.
- Eles não substituem os termos do X. Use os registros como usaria qualquer página pública.
Essas fronteiras também são o que torna a saída segura de citar. Um agente pode apontar para um registro público e deixar o operador no controle do que acontece em seguida.
Quando um visualizador deixa de ser suficiente
Visualizadores gratuitos servem para olhar. No momento em que um fluxo de trabalho precisa de volume ou garantias, os mesmos registros ficam disponíveis pela API do X / Twitter da UnifAPI com uma chave de workspace. O preço é pay as you go, sem um nível gratuito para estourar e sem assinatura para dimensionar, e os nomes de campo batem com os dos visualizadores, então o prompt que funcionou contra /tools/x/profile funciona contra a API sem precisar ser reescrito.
Um caminho típico:
- Uma pessoa testa o Visualizador de perfil do Twitter em três handles.
- Um agente recebe a mesma URL com
?format=jsone a tarefa de pontuar cinquenta handles durante a noite. Ele bate no limite por visitante e lê o 429. - A equipe adiciona uma chave de workspace e move o loop para a API. O código de pontuação não muda.
Essa continuidade é o motivo de construir o visualizador e a API sobre a mesma camada de dados.
FAQ
O que é um visualizador do Twitter? Um site que exibe um perfil, um post ou a lista de tendências públicas do X sem exigir que você faça login no X. É o jeito mais comum de ver o X sem fazer login: ele lê só o que a conta tornou público. "X viewer", "visualizador do X" e "site para ver twitter" são a mesma coisa com outros nomes.
Qual é o melhor site para ver Twitter sem conta? Para uma pessoa, qualquer um dos sites acima que carregar para você resolve; a diferença fica mais nos anúncios e na velocidade. Para um script ou um agente de IA, a pergunta é outra: escolha um visualizador que responda a uma URL simples com JSON e informe o limite de requisições. No dia do teste, o FxTwitter fazia isso para posts e usuários individuais, e os visualizadores da UnifAPI fazem isso para perfis, posts, respostas, mídia, busca, tendências, Comunidades e seguidores.
Existe uma alternativa ao Nitter que ainda funcione para scripts? Não uma que seja substituição direta. As instâncias públicas do Nitter estão fora do ar ou bloqueadas, e nenhum fork usa as mesmas rotas. Para leitura, use um visualizador que devolva Markdown ou JSON a partir de uma URL. Para feeds, use uma API que devolva os mesmos posts em JSON e permita paginar com cursor.
Por que agentes de IA têm dificuldade com a maioria dos visualizadores do Twitter? A maioria coloca a requisição em um formulário em vez de na URL, devolve só HTML, renderiza os resultados com JavaScript, bloqueia clientes que não são navegador e nunca diz quais são seus limites de requisição. Um agente precisa do oposto em cada um desses pontos.
Dá para receber os resultados de um visualizador do Twitter em JSON?
Nos visualizadores da UnifAPI, sim. Adicione format=json a qualquer URL de visualizador ou chame diretamente o endpoint /tools/x/ correspondente. Adicione format=md ou envie Accept: text/markdown para Markdown.
O visualizador gratuito do X é gratuito mesmo? Qual é o limite? Sim. Cada visualização é uma consulta real e não custa nada. As visualizações gratuitas têm limite de 20 consultas a cada 10 minutos por visitante, os headers dizem quantas restam e quando a janela reinicia, e o acesso sem teto é pay as you go com uma chave de workspace da UnifAPI.
Dá para ver perfil do X sem conta se ele for privado ou protegido? Não. Uma conta protegida mostra só o cabeçalho público. Os visualizadores leem dados públicos e nunca usam um login do X.
O que ler a seguir
Visualizador do Twitter - a página hub; cole um handle, um link, uma hashtag ou uma busca.
Fluxo de trabalho de visualizador de perfil do Twitter - a checagem de cinco minutos para avaliar uma conta antes da abordagem.
Skills de dados públicos Agent First - como empacotar consultas a dados públicos para que um agente as use sem supervisão.
API do X / Twitter - a superfície medida para quando uma consulta vira muitas.