Twitter/X Scraper - Tweets, Profiles & Trends avatar

Twitter/X Scraper - Tweets, Profiles & Trends

Pricing

from $2.00 / 1,000 tweet scrapeds

Go to Apify Store
Twitter/X Scraper - Tweets, Profiles & Trends

Twitter/X Scraper - Tweets, Profiles & Trends

Scrape Twitter/X: tweets, user profiles, followers, hashtags, and trending topics.

Pricing

from $2.00 / 1,000 tweet scrapeds

Rating

5.0

(3)

Developer

viralanalyzer

viralanalyzer

Maintained by Community

Actor stats

1

Bookmarked

88

Total users

13

Monthly active users

12 days ago

Last modified

Share

Twitter/X Scraper 🐦

🔗 View on Apify Store | 🇺🇸 English | 🇧🇷 Português

Scrape tweets, profiles, and engagement metrics from Twitter/X. Bring your own X API v2 Bearer Token for reliable access (recommended — X blocks anonymous timeline access), or use the anonymous fallback with configurable proxies.


🇺🇸 English

What does it do?

This actor extracts public tweets and engagement metrics from any Twitter/X profile or search query. Get real data for social media analysis, brand monitoring, and competitive intelligence.

Features

  • Profile scraping — Get latest tweets from any public profile
  • Search scraping — Find tweets matching any keyword or hashtag
  • Full metrics — Views, likes, retweets, replies, quotes, bookmarks
  • Media extraction — Images and video thumbnails attached to tweets
  • Thread detection — Identifies if a tweet is part of a thread
  • Author info — Username, display name, follower count, verification status
  • Date filtering — Restrict results to a specific date range
  • Reply/Retweet filters — Include or exclude replies and retweets

Capabilities & Limits

What this actor can and cannot accept as a seed, based on the real input schema:

Discover bySupportedNotes
Handle / username✅ Yesprofiles array (without @)
Hashtag⚠️ PartialNo dedicated field — pass it inside searchQuery (e.g. #tech); search mode needs the X API Bearer Token
Keyword / search⚠️ PartialsearchQuery works only with an X API v2 Bearer Token (X removed anonymous search); recent tweets only
URL❌ NoNo tweet/profile URL input field in the schema
Subreddit❌ N/ANot a Reddit actor

Output includes: tweet text ✅, views ✅, likes ✅, retweets ✅, replies count ✅, quotes ✅, bookmarks ✅, hashtags ✅, media ✅, author (username, displayName, followers, verified) ✅, created_at (ISO 8601) ✅, language ✅, is_thread / is_reply / is_retweet ✅. Reply / comment TEXT ❌ — only the reply count is returned, not the text of individual replies.

Input

FieldTypeDefaultDescription
profilesstring[]["elikifreitasdev"]Twitter/X usernames (without @)
searchQuerystringSearch term (alternative to profiles)
maxTweetsinteger20Max tweets per profile/search (1-100)
includeRepliesbooleanfalseInclude reply tweets
includeRetweetsbooleanfalseInclude retweets
dateFromstringStart date filter (YYYY-MM-DD)
dateTostringEnd date filter (YYYY-MM-DD)

Output Example

{
"tweet_id": "1891234567890123456",
"url": "https://x.com/elikifreitasdev/status/1891234567890123456",
"text": "🚀 Launched the new version! Performance 3x better #tech #automation",
"author": {
"username": "elikifreitasdev",
"displayName": "Eliki Freitas | Dev",
"followers": 12500,
"verified": false
},
"created_at": "2026-01-20T14:30:00.000Z",
"views": 45200,
"likes": 892,
"retweets": 156,
"replies": 43,
"quotes": 12,
"bookmarks": 234,
"hashtags": ["tech", "automation"],
"media": [
{
"type": "image",
"url": "https://pbs.twimg.com/media/example.jpg",
"thumbnail": "https://pbs.twimg.com/media/example.jpg:small"
}
],
"is_thread": false,
"is_reply": false,
"is_retweet": false,
"language": "en"
}

Use Cases

  1. Brand Monitoring — Track mentions and sentiment about your brand
  2. Competitor Analysis — Monitor competitor tweet performance
  3. Influencer Research — Evaluate engagement rates before partnerships
  4. Trend Detection — Discover viral topics and hashtags
  5. Content Strategy — Analyze what tweet formats get the most engagement

FAQ

Does it require a Twitter API key? Recommended. X blocks anonymous (guest) access to timelines, so for reliable results provide your own twitterBearerToken (X API v2 — your own plan/quota at https://developer.x.com). Search/keyword mode (searchQuery) requires the Bearer Token (X removed anonymous search). Without a token, the actor tries anonymous strategies (subject to blocking) and, if nothing is extracted, returns a diagnostic guide without charging PPE.

Can it scrape protected/private accounts? No. Only public profiles and public tweets are accessible.

What about rate limits? The actor handles rate limiting automatically with built-in delays and retries.

How many tweets can I get per run? Up to 100 tweets per profile or search query per run.


🇧🇷 Português

O que faz?

Este actor extrai tweets públicos e métricas de engajamento de qualquer perfil ou busca no Twitter/X. Dados reais para análise de redes sociais, monitoramento de marca e inteligência competitiva.

Funcionalidades

  • Scraping de perfil — Últimos tweets de qualquer perfil público
  • Scraping de busca — Encontre tweets por palavra-chave ou hashtag
  • Métricas completas — Visualizações, curtidas, retweets, respostas, citações, bookmarks
  • Extração de mídia — Imagens e thumbnails de vídeo
  • Detecção de thread — Identifica se o tweet faz parte de uma thread
  • Info do autor — Username, nome, seguidores, verificação
  • Filtro por data — Restrinja resultados a um período específico
  • Filtros de resposta/retweet — Inclua ou exclua respostas e retweets

Capacidades e Limites

O que este actor aceita ou não como semente, conforme o input schema real:

Descobre porSuportadoObservações
Handle / username✅ SimArray profiles (sem @)
Hashtag⚠️ ParcialSem campo dedicado — passe dentro de searchQuery (ex.: #tech); o modo de busca exige o Bearer Token da API do X
Palavra-chave / busca⚠️ ParcialsearchQuery funciona apenas com Bearer Token da API X v2 (o X removeu a busca anônima); somente tweets recentes
URL❌ NãoNão há campo de URL de tweet/perfil no schema
Subreddit❌ N/ANão é um actor de Reddit

A saída inclui: texto do tweet ✅, visualizações ✅, curtidas ✅, retweets ✅, contagem de respostas ✅, citações ✅, bookmarks ✅, hashtags ✅, mídia ✅, autor (username, displayName, seguidores, verificado) ✅, created_at (ISO 8601) ✅, idioma ✅, is_thread / is_reply / is_retweet ✅. TEXTO das respostas/comentários ❌ — só a contagem de respostas é retornada, não o texto de cada resposta.

Entrada

CampoTipoPadrãoDescrição
profilesstring[]["elikifreitasdev"]Usernames do Twitter/X (sem @)
searchQuerystringTermo de busca (alternativa aos perfis)
maxTweetsinteger20Máx tweets por perfil/busca (1-100)
includeRepliesbooleanfalseIncluir tweets de resposta
includeRetweetsbooleanfalseIncluir retweets
dateFromstringFiltro data início (YYYY-MM-DD)
dateTostringFiltro data fim (YYYY-MM-DD)

Exemplo de Saída

{
"tweet_id": "1891234567890123456",
"url": "https://x.com/elikifreitasdev/status/1891234567890123456",
"text": "🚀 Lançamos a nova versão! Performance 3x melhor #tech #automation",
"author": {
"username": "elikifreitasdev",
"displayName": "Eliki Freitas | Dev",
"followers": 12500,
"verified": false
},
"created_at": "2026-01-20T14:30:00.000Z",
"views": 45200,
"likes": 892,
"retweets": 156,
"replies": 43,
"quotes": 12,
"bookmarks": 234,
"hashtags": ["tech", "automation"],
"media": [
{
"type": "image",
"url": "https://pbs.twimg.com/media/example.jpg",
"thumbnail": "https://pbs.twimg.com/media/example.jpg:small"
}
],
"is_thread": false,
"is_reply": false,
"is_retweet": false,
"language": "pt"
}

Casos de Uso

  1. Monitoramento de Marca — Acompanhe menções e sentimento sobre sua marca
  2. Análise de Concorrência — Monitore performance de tweets de concorrentes
  3. Pesquisa de Influenciadores — Avalie taxas de engajamento antes de parcerias
  4. Detecção de Tendências — Descubra tópicos virais e hashtags
  5. Estratégia de Conteúdo — Analise quais formatos de tweet geram mais engajamento

FAQ

Precisa de chave de API do Twitter? Recomendado. O X bloqueia acesso anônimo a timelines; informe seu twitterBearerToken (X API v2, plano/quota próprios — https://developer.x.com) para extração confiável. Sem token, o actor tenta estratégias anônimas (sujeitas a bloqueio) e, se nada for extraído, devolve um guia de diagnóstico sem cobrar PPE.

Pode scraper contas protegidas/privadas? Não. Apenas perfis públicos e tweets públicos são acessíveis.

E sobre limites de requisição? O actor gerencia rate limiting automaticamente com delays e retentativas.

Quantos tweets posso obter por execução? Até 100 tweets por perfil ou busca por execução.


💰 Pricing

This actor uses Pay Per Event (PPE) pricing:

MetricCost
tweet-scraped$0.03 per tweet

Example: Scraping 1,000 tweets costs $30.00.


✅ Available / Disponível — cross-actor upgrades

The items below were PLANNED in earlier versions and are now implemented and live in this actor. They are additive and backward-compatible: when the new input fields are omitted and normalizeOutput is false, the output is byte-for-byte identical to before — paying users are unaffected.

Os itens abaixo eram PLANEJADOS em versões anteriores e agora estão implementados e disponíveis neste actor. São aditivos e retrocompatíveis: quando os novos campos de input são omitidos e normalizeOutput é false, a saída é byte-a-byte idêntica à anterior — usuários pagantes não são afetados.

EN

  • Unified input vocabulary (#1) ✅ — maxResults (alias of maxTweets), seeds + seedType (handle | url | keyword) are accepted as a cross-actor unified seed list. The existing profiles / searchQuery / maxTweets fields keep working exactly as before; the new ones are optional aliases.
  • Normalized _normalized output block (#2) ✅ — set the optional input normalizeOutput: true to attach a cross-platform block to each item: { platform, url, author, text, views, likes, comments, shares, publishedAtISO, lang, hashtags[], engagementVelocity }, alongside the existing raw fields. For Twitter/X, comments maps from replies, shares from retweets + quotes, views from impressions. Default false.
  • ISO date + engagementVelocity (#6) ✅ — inside _normalized, publishedAtISO is the tweet date in ISO-8601 UTC, and engagementVelocity = (likes + comments + shares) / hours_since_published (or null when no date is available).
  • Quality flag _dataQuality (#7) ✅ — successful items carry _dataQuality: "full" (when normalizeOutput is on); the recoverable no-results setup guide carries _dataQuality: "diagnostic" and is not charged via PPE.

PT

  • Vocabulário de input unificado (#1) ✅ — maxResults (alias de maxTweets), seeds + seedType (handle | url | keyword) são aceitos como lista de sementes unificada entre actors. Os campos profiles / searchQuery / maxTweets continuam funcionando exatamente como antes; os novos são aliases opcionais.
  • Bloco de saída normalizado _normalized (#2) ✅ — defina o input opcional normalizeOutput: true para anexar a cada item um bloco cross-plataforma: { platform, url, author, text, views, likes, comments, shares, publishedAtISO, lang, hashtags[], engagementVelocity }, ao lado dos campos crus. No Twitter/X, comments vem de replies, shares de retweets + quotes, views das impressões. Padrão false.
  • Data ISO + engagementVelocity (#6) ✅ — dentro de _normalized, publishedAtISO é a data do tweet em ISO-8601 UTC, e engagementVelocity = (likes + comments + shares) / horas_desde_publicação (ou null quando não há data).
  • Flag de qualidade _dataQuality (#7) ✅ — itens bem-sucedidos carregam _dataQuality: "full" (quando normalizeOutput está ligado); o guia de diagnóstico recuperável (sem resultados) carrega _dataQuality: "diagnostic" e não é cobrado via PPE.

🛣️ Roadmap / Próximas melhorias (planned)

⚠️ The items below are PLANNED, not yet available. They are not current features — do not rely on them yet. Source: internal social-scrapers improvements handoff (2026-06-19).

⚠️ Os itens abaixo são PLANEJADOS, ainda não disponíveis. Não são funcionalidades atuais — não dependa deles ainda. Fonte: handoff interno de melhorias dos scrapers sociais (2026-06-19).

EN

  • Structured _blockReason code (part of #7) — on a confirmed block, emit a machine-readable reason (403 | 429 | captcha) on the diagnostic item. Not yet implemented to avoid changing the current anti-bot/diagnostic gate; today blocks are surfaced as a labeled _dataQuality: "diagnostic" guide only.

PT

  • Código _blockReason estruturado (parte do #7) — em bloqueio confirmado, emitir um motivo legível por máquina (403 | 429 | captcha) no item de diagnóstico. Ainda não implementado para não alterar o gate anti-bot/diagnóstico atual; hoje os bloqueios são expostos apenas como guia rotulado _dataQuality: "diagnostic".

📝 Changelog

  • v1.0.0 (2026-02-12) — Initial release: profile scraping, search, full engagement metrics, thread detection, media extraction