Telegram Channel Scraper
Pricing
Pay per usage
Telegram Channel Scraper
Pricing
Pay per usage
Rating
0.0
(0)
Developer

viralanalyzer
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
channels | string[] | Yes | — | Telegram channel usernames or URLs. Accepts "durov", "@durov", "https://t.me/durov", or "https://t.me/s/durov" (1-50 channels) |
maxPostsPerChannel | integer | No | 50 | Maximum number of posts to extract per channel (1-500) |
proxyConfiguration | object | No | — | Proxy 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
| Field | Type | Description |
|---|---|---|
type | string | Always "post" |
postId | number | Telegram post ID (numeric) |
postUrl | string | Direct link to the post (https://t.me/username/postId) |
text | string | Full post text content |
views | number | View count (parsed from K/M suffixes) |
viewsText | string | Raw view text as displayed (e.g., "12.5K") |
mediaType | string | Content type: none, photo, video, document, sticker, or poll |
mediaUrl | string | Media URL (available for photos) |
hasReply | boolean | Whether the post has a reply |
forwardedFrom | string | Original channel name if forwarded, empty otherwise |
publishedAt | string | Post publication date (ISO 8601) |
channelName | string | Channel display name |
channelUsername | string | Channel username |
channelSubscribers | number | Channel subscriber count |
platform | string | Always "telegram" |
scrapedAt | string | ISO 8601 scrape timestamp |
Channel Summary Fields
| Field | Type | Description |
|---|---|---|
type | string | Always "channel_summary" |
channelName | string | Channel display name |
channelUsername | string | Channel username |
channelSubscribers | number | Total subscriber count |
channelDescription | string | Channel bio/description |
channelPhotoUrl | string | Channel profile photo URL |
postCount | number | Number of posts analyzed |
avgViews | number | Average views per post |
medianViews | number | Median views per post |
maxViews | number | Highest view count among analyzed posts |
engagementRate | number | Average views / subscribers ratio (0-1 scale) |
postsWithMedia | number | Count of posts containing media |
postsForwarded | number | Count of posts forwarded from other channels |
topPostText | string | Text of the most-viewed post (first 200 chars) |
topPostViews | number | View count of the most-viewed post |
platform | string | Always "telegram" |
scrapedAt | string | ISO 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:
| Metric | Cost |
|---|---|
| post-scraped | $0.03 per post |
Example: scraping 3 channels x 50 posts each = 153 items (150 posts + 3 summaries) = $4.59
🔗 Related Actors
- YouTube Fast Scraper — YouTube video metrics
- TikTok Viral Scanner — TikTok profile data
- Instagram Reels Scraper — Instagram metrics
- Twitter/X Scraper — Twitter post extraction
📝 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âmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
channels | string[] | Sim | — | Usernames ou URLs de canais do Telegram. Aceita "durov", "@durov", "https://t.me/durov" ou "https://t.me/s/durov" (1-50 canais) |
maxPostsPerChannel | inteiro | Não | 50 | Número máximo de posts por canal (1-500) |
proxyConfiguration | objeto | Não | — | Configuraçã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
| Campo | Tipo | Descrição |
|---|---|---|
type | string | Sempre "post" |
postId | número | ID do post no Telegram (numérico) |
postUrl | string | Link direto para o post (https://t.me/username/postId) |
text | string | Conteúdo textual completo do post |
views | número | Contagem de visualizações (parseado de sufixos K/M) |
viewsText | string | Texto bruto de views como exibido (ex: "12.5K") |
mediaType | string | Tipo de conteúdo: none, photo, video, document, sticker ou poll |
mediaUrl | string | URL da mídia (disponível para fotos) |
hasReply | boolean | Se o post tem resposta |
forwardedFrom | string | Nome do canal original se encaminhado, vazio caso contrário |
publishedAt | string | Data de publicação do post (ISO 8601) |
channelName | string | Nome de exibição do canal |
channelUsername | string | Username do canal |
channelSubscribers | número | Contagem de inscritos do canal |
platform | string | Sempre "telegram" |
scrapedAt | string | Timestamp ISO 8601 da coleta |
Campos do Resumo do Canal
| Campo | Tipo | Descrição |
|---|---|---|
type | string | Sempre "channel_summary" |
channelName | string | Nome de exibição do canal |
channelUsername | string | Username do canal |
channelSubscribers | número | Total de inscritos |
channelDescription | string | Bio/descrição do canal |
channelPhotoUrl | string | URL da foto de perfil do canal |
postCount | número | Número de posts analisados |
avgViews | número | Média de visualizações por post |
medianViews | número | Mediana de visualizações por post |
maxViews | número | Maior contagem de views entre os posts analisados |
engagementRate | número | Razão média de views / inscritos (escala 0-1) |
postsWithMedia | número | Quantidade de posts contendo mídia |
postsForwarded | número | Quantidade de posts encaminhados de outros canais |
topPostText | string | Texto do post mais visualizado (primeiros 200 caracteres) |
topPostViews | número | Views do post mais visualizado |
platform | string | Sempre "telegram" |
scrapedAt | string | Timestamp 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étrica | Custo |
|---|---|
| post-scraped | $0.03 por post |
Exemplo: extrair 3 canais x 50 posts cada = 153 itens (150 posts + 3 resumos) = $4.59
🔗 Actors Relacionados
- YouTube Fast Scraper — Métricas do YouTube
- TikTok Viral Scanner — Dados do TikTok
- Instagram Reels Scraper — Métricas do Instagram
- Twitter/X Scraper — Extração de posts do Twitter
📝 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