Telegram Channel Scraper
Pricing
from $0.90 / 1,000 results
Telegram Channel Scraper
Scrapes public Telegram channels: posts with text, media, views, reactions and link previews, plus channel stats — no login or API key required.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Anyx Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share

Telegram Channel Scraper
Turn any public Telegram channel into a clean dataset of posts, media, views, and reactions — no login, no API key.
The Telegram Channel Scraper reads the public web preview of Telegram channels and extracts every post: text (plain and HTML), publish date, view count, reactions, images, videos, documents, polls, link previews, forwards and replies. It also captures the channel itself — title, description, photo, verified badge and subscriber count. Built for social-listening and OSINT teams, researchers, marketers, news monitors, and anyone tracking what a channel publishes without wiring up the Telegram API.
⚡ Quick start
{"startUrls": [{ "url": "https://t.me/s/telegram" },{ "url": "https://t.me/telegram/435" }],"channels": ["durov"],"maxItems": 5}
🧩 Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | one of startUrls/channels | — | Telegram URLs to scrape. A channel (https://t.me/telegram or https://t.me/s/telegram) returns the channel info plus its newest posts, walking back through older pages; a post (https://t.me/telegram/435) returns that single post. |
channels | array | one of startUrls/channels | — | Channel usernames to scrape in addition to Start URLs, with or without @. |
maxItems | integer | no | 5 | Maximum dataset items per start URL or channel. The channel-info row counts as one item when enabled. |
includeChannelInfo | boolean | no | true | Push one channel item (title, description, photo, subscribers, media counters) before the channel's posts. |
proxyConfiguration | object | no | { "useApifyProxy": false } | Apify proxy settings. Telegram's public preview works without a proxy. |
Only channels with a public web preview can be scraped. Private channels, groups, and user accounts have no preview and are skipped with a warning.
📤 Output
The dataset mixes two item types, distinguished by itemType: one channel row per channel (when enabled), followed by its post rows, newest first.
Fields — post
| Field | Type | Description |
|---|---|---|
itemType | string | Always post. |
id | number | Message id inside the channel. |
url | string | Public post URL, e.g. https://t.me/telegram/435. |
channelUsername | string | Channel username without @. |
channelTitle | string | null | Channel display name. |
channelUrl | string | Channel URL. |
author | string | null | Signed author name, when the channel shows post signatures. |
text | string | null | Message text as plain text, line breaks preserved. |
textHtml | string | null | Message text with Telegram's formatting (bold, links, emoji). |
date | string | null | Publish time, ISO-8601 (UTC). |
views | number | null | View count. |
reactions | array | { emoji, emojiId, paid, count } per reaction. emoji is the Unicode glyph; custom emoji expose emojiId; Telegram Stars reactions have paid: true. |
links | string[] | Outbound links found in the message text. |
images | string[] | Photo URLs. |
videos | array | { url, thumbnail, duration } per video. |
documents | array | { title, extra } per attached file. |
poll | object | null | { question, options: [{ text, percent }] }. |
linkPreview | object | null | { url, siteName, title, description, image } of the link preview card. |
forwardedFrom | object | null | { name, url } of the original channel for forwarded posts. |
replyTo | object | null | { url, author, text } of the quoted post for replies. |
Fields — channel
| Field | Type | Description |
|---|---|---|
itemType | string | Always channel. |
username | string | Channel username without @. |
url | string | Channel URL. |
title | string | null | Channel display name. |
description | string | null | Channel description. |
photo | string | null | Channel photo URL. |
verified | boolean | Whether the channel carries Telegram's verified badge. |
subscribers | number | null | Subscriber count. |
photos | number | null | Number of photos posted. |
videos | number | null | Number of videos posted. |
files | number | null | Number of files posted. |
links | number | null | Number of links posted. |
💡 Use cases
- Social listening & brand monitoring — track what channels in your niche publish and how audiences react.
- News and OSINT monitoring — archive breaking-news, government, and community channels with timestamps and view counts.
- Content research — find the best-performing post formats in a vertical by views and reactions.
- Lead and partner discovery — pull subscriber counts and descriptions for channel prospecting.
- Datasets for analysis — feed post text and engagement into sentiment, trend, or ML pipelines.
❓ FAQ
- Do I need a Telegram account or API key? No. The scraper reads the public web preview that Telegram serves for every public channel.
- Why does a channel return no posts? Only channels with a public preview are supported. Private channels, groups, bots and personal accounts have no preview and are skipped with a warning in the log.
- How far back can it go? As far as the channel history reaches — set
maxItemsto control how many pages of 20 posts are walked. - Are comments included? No. Comments live in a separate discussion group and are not part of the channel preview.
- Can I scrape a single post? Yes — pass
https://t.me/<channel>/<postId>as a start URL. - Do I need a proxy? Not usually. If you see empty pages under heavy usage, enable Apify Proxy in
proxyConfiguration.
🔗 More scrapers by Anyx
🤝 Anyx Solutions
We build custom scrapers and data-extraction pipelines.
- Email: tantosthor@gmail.com