Telegram Channel Scraper avatar

Telegram Channel Scraper

Pricing

Pay per usage

Go to Apify Store
Telegram Channel Scraper

Telegram Channel Scraper

Pricing

Pay per usage

Rating

0.0

(0)

Developer

viralanalyzer

viralanalyzer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 minutes ago

Last modified

Categories

Share

📡 Telegram Channel Scraper — Posts, Views, Subscribers & Engagement Analytics

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

Extract posts, view counts, subscriber numbers, and engagement metrics from public Telegram channels. Uses t.me/s/ public preview pages — pure HTTP with Cheerio parsing, no Telegram API key or bot token needed.

✨ Features

  • Multi-channel scraping — Analyze up to 50 public Telegram channels per run
  • Post extraction — Full text, views, date, media type, forwarded source
  • Subscriber count — Channel subscriber/member numbers
  • Channel analytics summary — Average views, median views, max views, engagement rate, media ratio
  • Media detection — Classifies photo, video, document, sticker, and poll content
  • Forwarded post attribution — Identifies the original channel for forwarded posts
  • Pagination — Automatically loads older posts via before= parameter
  • Flexible input — Accepts usernames, @handles, or full t.me URLs
  • Anti-placeholder guardrails — Every result validated against placeholder patterns
  • Pure HTTP — Uses got-scraping + Cheerio, no browser needed

📥 Input

ParameterTypeRequiredDefaultDescription
channelsstring[]YesTelegram channel usernames or URLs. Accepts "durov", "@durov", "https://t.me/durov", or "https://t.me/s/durov" (1-50 channels)
maxPostsPerChannelintegerNo50Maximum number of posts to extract per channel (1-500)
proxyConfigurationobjectNoProxy settings. May be needed if Telegram blocks your IP

Input Example

{
"channels": [
"durov",
"https://t.me/telegram",
"@bbcnews"
],
"maxPostsPerChannel": 100
}

📤 Output

Each run produces two types of results: channel_summary (one per channel) and post (one per post).

Post Fields

FieldTypeDescription
typestringAlways "post"
postIdnumberTelegram post ID (numeric)
postUrlstringDirect link to the post (https://t.me/username/postId)
textstringFull post text content
viewsnumberView count (parsed from K/M suffixes)
viewsTextstringRaw view text as displayed (e.g., "12.5K")
mediaTypestringContent type: none, photo, video, document, sticker, or poll
mediaUrlstringMedia URL (available for photos)
hasReplybooleanWhether the post has a reply
forwardedFromstringOriginal channel name if forwarded, empty otherwise
publishedAtstringPost publication date (ISO 8601)
channelNamestringChannel display name
channelUsernamestringChannel username
channelSubscribersnumberChannel subscriber count
platformstringAlways "telegram"
scrapedAtstringISO 8601 scrape timestamp

Channel Summary Fields

FieldTypeDescription
typestringAlways "channel_summary"
channelNamestringChannel display name
channelUsernamestringChannel username
channelSubscribersnumberTotal subscriber count
channelDescriptionstringChannel bio/description
channelPhotoUrlstringChannel profile photo URL
postCountnumberNumber of posts analyzed
avgViewsnumberAverage views per post
medianViewsnumberMedian views per post
maxViewsnumberHighest view count among analyzed posts
engagementRatenumberAverage views / subscribers ratio (0-1 scale)
postsWithMedianumberCount of posts containing media
postsForwardednumberCount of posts forwarded from other channels
topPostTextstringText of the most-viewed post (first 200 chars)
topPostViewsnumberView count of the most-viewed post
platformstringAlways "telegram"
scrapedAtstringISO 8601 scrape timestamp

Output Example

{
"type": "post",
"postId": 1042,
"postUrl": "https://t.me/durov/1042",
"text": "Telegram now has 950 million monthly active users. We hope to pass the one billion mark soon.",
"views": 4832100,
"viewsText": "4.8M",
"mediaType": "photo",
"mediaUrl": "https://cdn4.telegram-cdn.org/file/abc123.jpg",
"hasReply": false,
"forwardedFrom": "",
"publishedAt": "2026-02-15T18:30:00+00:00",
"channelName": "Pavel Durov",
"channelUsername": "durov",
"channelSubscribers": 12450000,
"platform": "telegram",
"scrapedAt": "2026-03-06T12:00:00.000Z"
}

📋 Use Cases

  • Channel Analytics — Measure engagement rates, view trends, and content performance
  • Competitor Monitoring — Track competitor Telegram channels and their posting strategies
  • Content Research — Discover viral posts and high-performing content formats
  • Media Monitoring — Track news channels and detect breaking stories
  • Influencer Analysis — Evaluate channel reach, engagement, and audience size
  • Market Intelligence — Monitor industry channels for trends and announcements

❓ FAQ

Q: Can I scrape private Telegram channels? A: No. This actor only works with public channels that have a public preview at t.me/s/. Private channels and groups are not accessible without authentication.

Q: Why are some view counts showing as 0? A: View counts are extracted from the HTML and parsed from human-readable formats (e.g., "4.8M", "12.5K"). Very new posts or channels with hidden view counts may return 0. The raw viewsText field is also included for reference.

Q: What is the engagement rate and how is it calculated? A: The engagement rate in the channel summary is calculated as average views divided by subscriber count. A rate of 0.3 means posts are seen by 30% of subscribers on average.

Q: How far back can I scrape posts? A: The actor paginates through the public preview pages using the before= parameter. You can go back up to 500 posts per channel. The actual depth depends on the channel's history and Telegram's preview page availability.

Q: Do I need a Telegram API key or bot token? A: No. The actor uses the public t.me/s/ preview pages which are accessible via standard HTTP requests. No API credentials are needed.

💰 Pricing

This actor uses Pay Per Event (PPE) pricing:

MetricCost
post-scraped$0.03 per post

Example: scraping 3 channels x 50 posts each = 153 items (150 posts + 3 summaries) = $4.59

📝 Changelog

v1.0 (Current)

  • Public channel post extraction via t.me/s/ preview pages
  • Subscriber count and channel metadata extraction
  • Post pagination via before= parameter
  • Media type detection (photo, video, document, sticker, poll)
  • Forwarded post attribution
  • Channel summary with engagement analytics (avg/median/max views, engagement rate)
  • Flexible input: accepts usernames, @handles, and full URLs
  • Anti-placeholder guardrails for data integrity
  • Rate limit handling with automatic retries
  • PPE billing integration

📡 Telegram Channel Scraper — Posts, Visualizações, Inscritos & Analytics de Engajamento

🔗 Ver na Apify Store | 🇺🇸 English | 🇧🇷 Português

Extraia posts, contagem de visualizações, número de inscritos e métricas de engajamento de canais públicos do Telegram. Usa as páginas de preview públicas t.me/s/ — HTTP puro com parsing Cheerio, sem chave de API ou bot token do Telegram.

✨ Funcionalidades

  • Scraping multi-canal — Analise até 50 canais públicos do Telegram por execução
  • Extração de posts — Texto completo, visualizações, data, tipo de mídia, fonte encaminhada
  • Contagem de inscritos — Número de inscritos/membros do canal
  • Resumo analítico do canal — Média de views, mediana, máximo, taxa de engajamento, proporção de mídia
  • Detecção de mídia — Classifica conteúdo de foto, vídeo, documento, sticker e enquete
  • Atribuição de posts encaminhados — Identifica o canal original para posts encaminhados
  • Paginação — Carrega posts mais antigos automaticamente via parâmetro before=
  • Entrada flexível — Aceita usernames, @handles ou URLs completas do t.me
  • Guardrails anti-placeholder — Todo resultado validado contra padrões falsos
  • HTTP puro — Usa got-scraping + Cheerio, sem browser

📥 Entrada

ParâmetroTipoObrigatórioPadrãoDescrição
channelsstring[]SimUsernames ou URLs de canais do Telegram. Aceita "durov", "@durov", "https://t.me/durov" ou "https://t.me/s/durov" (1-50 canais)
maxPostsPerChannelinteiroNão50Número máximo de posts por canal (1-500)
proxyConfigurationobjetoNãoConfiguração de proxy. Pode ser necessário se o Telegram bloquear seu IP

Exemplo de Entrada

{
"channels": [
"durov",
"https://t.me/telegram",
"@bbcnews"
],
"maxPostsPerChannel": 100
}

📤 Saída

Cada execução produz dois tipos de resultado: channel_summary (um por canal) e post (um por post).

Campos do Post

CampoTipoDescrição
typestringSempre "post"
postIdnúmeroID do post no Telegram (numérico)
postUrlstringLink direto para o post (https://t.me/username/postId)
textstringConteúdo textual completo do post
viewsnúmeroContagem de visualizações (parseado de sufixos K/M)
viewsTextstringTexto bruto de views como exibido (ex: "12.5K")
mediaTypestringTipo de conteúdo: none, photo, video, document, sticker ou poll
mediaUrlstringURL da mídia (disponível para fotos)
hasReplybooleanSe o post tem resposta
forwardedFromstringNome do canal original se encaminhado, vazio caso contrário
publishedAtstringData de publicação do post (ISO 8601)
channelNamestringNome de exibição do canal
channelUsernamestringUsername do canal
channelSubscribersnúmeroContagem de inscritos do canal
platformstringSempre "telegram"
scrapedAtstringTimestamp ISO 8601 da coleta

Campos do Resumo do Canal

CampoTipoDescrição
typestringSempre "channel_summary"
channelNamestringNome de exibição do canal
channelUsernamestringUsername do canal
channelSubscribersnúmeroTotal de inscritos
channelDescriptionstringBio/descrição do canal
channelPhotoUrlstringURL da foto de perfil do canal
postCountnúmeroNúmero de posts analisados
avgViewsnúmeroMédia de visualizações por post
medianViewsnúmeroMediana de visualizações por post
maxViewsnúmeroMaior contagem de views entre os posts analisados
engagementRatenúmeroRazão média de views / inscritos (escala 0-1)
postsWithMedianúmeroQuantidade de posts contendo mídia
postsForwardednúmeroQuantidade de posts encaminhados de outros canais
topPostTextstringTexto do post mais visualizado (primeiros 200 caracteres)
topPostViewsnúmeroViews do post mais visualizado
platformstringSempre "telegram"
scrapedAtstringTimestamp ISO 8601 da coleta

Exemplo de Saída

{
"type": "post",
"postId": 1042,
"postUrl": "https://t.me/durov/1042",
"text": "Telegram now has 950 million monthly active users. We hope to pass the one billion mark soon.",
"views": 4832100,
"viewsText": "4.8M",
"mediaType": "photo",
"mediaUrl": "https://cdn4.telegram-cdn.org/file/abc123.jpg",
"hasReply": false,
"forwardedFrom": "",
"publishedAt": "2026-02-15T18:30:00+00:00",
"channelName": "Pavel Durov",
"channelUsername": "durov",
"channelSubscribers": 12450000,
"platform": "telegram",
"scrapedAt": "2026-03-06T12:00:00.000Z"
}

📋 Casos de Uso

  • Analytics de Canal — Meça taxas de engajamento, tendências de views e performance de conteúdo
  • Monitoramento de Concorrentes — Acompanhe canais de concorrentes e estratégias de postagem
  • Pesquisa de Conteúdo — Descubra posts virais e formatos de conteúdo de alta performance
  • Monitoramento de Mídia — Acompanhe canais de notícias e detecte matérias em destaque
  • Análise de Influenciadores — Avalie alcance, engajamento e tamanho da audiência
  • Inteligência de Mercado — Monitore canais do setor para tendências e anúncios

❓ Perguntas Frequentes

P: Posso extrair dados de canais privados do Telegram? R: Não. Este actor funciona apenas com canais públicos que possuem preview público em t.me/s/. Canais e grupos privados não são acessíveis sem autenticação.

P: Por que algumas contagens de visualização aparecem como 0? R: As contagens de views são extraídas do HTML e parseadas de formatos legíveis (ex: "4.8M", "12.5K"). Posts muito recentes ou canais com views ocultas podem retornar 0. O campo bruto viewsText também é incluído para referência.

P: O que é a taxa de engajamento e como é calculada? R: A taxa de engajamento no resumo do canal é calculada como média de visualizações dividida pela contagem de inscritos. Uma taxa de 0.3 significa que os posts são vistos por 30% dos inscritos em média.

P: Até onde posso voltar nos posts de um canal? R: O actor pagina pelas páginas de preview públicas usando o parâmetro before=. Você pode voltar até 500 posts por canal. A profundidade real depende do histórico do canal e da disponibilidade da página de preview do Telegram.

P: Preciso de uma chave de API ou bot token do Telegram? R: Não. O actor usa as páginas de preview públicas t.me/s/ que são acessíveis via requisições HTTP padrão. Nenhuma credencial de API é necessária.

💰 Preços

Este actor usa precificação Pay Per Event (PPE):

MétricaCusto
post-scraped$0.03 por post

Exemplo: extrair 3 canais x 50 posts cada = 153 itens (150 posts + 3 resumos) = $4.59

🔗 Actors Relacionados

📝 Changelog

v1.0 (Atual)

  • Extração de posts de canais públicos via preview t.me/s/
  • Contagem de inscritos e metadados do canal
  • Paginação de posts via parâmetro before=
  • Detecção de tipo de mídia (foto, vídeo, documento, sticker, enquete)
  • Atribuição de posts encaminhados
  • Resumo do canal com analytics de engajamento (média/mediana/max views, taxa de engajamento)
  • Entrada flexível: aceita usernames, @handles e URLs completas
  • Guardrails anti-placeholder para integridade de dados
  • Tratamento de rate limit com retentativas automáticas
  • Integração com cobrança PPE