Telegram has become one of the most important channels for real-time information in finance, crypto, news, and niche communities. Hundreds of thousands of public channels broadcast content ranging from market signals and breaking news to research summaries and community discussions.
For analysts, researchers, and product teams that need to monitor this content programmatically, Telegram’s official Bot API is limited: it requires a bot to be added to groups, can’t access message history retroactively, and doesn’t expose view counts or analytics data for channels it’s not subscribed to.
The Telegram Bot API only surfaces messages from channels where the bot is a member, which requires channel admin approval and doesn’t apply to the majority of public channels. The MTProto API (Telegram’s native protocol) requires a registered phone number, session management, and careful rate limiting to avoid account restrictions.
The view count problem: Telegram view counts are only available shortly after a message is published — they are not stored permanently in most API contexts. Capturing engagement metrics at scale requires polling channels continuously rather than fetching historical data, which significantly complicates batch extraction pipelines.
Beyond the API mechanics, channel discovery is non-trivial. There is no official directory of public channels, so building a channel list for a given niche requires cross-referencing multiple sources.
We built and maintain a Telegram Scraper on Apify that handles MTProto session management and rate limiting for public channels. You provide channel URLs or usernames; it returns structured message data.
{
"channelUrls": [
"https://t.me/somePublicChannel",
"https://t.me/anotherChannel"
],
"maxMessages": 500,
"startDate": "2026-04-01"
}
{
"messageId": 18423,
"text": "Breaking: Q1 earnings beat expectations by 12%...",
"date": "2026-04-08T14:32:00Z",
"views": 84201,
"forwards": 1203,
"reactions": 892,
"channelName": "somePublicChannel",
"channelUrl": "https://t.me/somePublicChannel",
"hasMedia": false
}
| Field | Type | Description |
|---|---|---|
messageId | integer | Telegram message ID |
text | string | Message text content |
date | string | ISO 8601 publish timestamp |
views | integer | View count at time of scrape |
forwards | integer | Number of forwards |
reactions | integer | Total reaction count |
channelName | string | Channel username |
hasMedia | boolean | Whether message contains media |
Output is available as JSON, CSV, or XLSX. Runs can be scheduled to monitor channels on a recurring basis and detect new messages automatically.
The actor uses Pay Per Event pricing at $0.003 per message.
| Volume | Cost |
|---|---|
| 500 messages | $1.50 |
| 1,000 messages | $3.00 |
| 5 channels × 100 messages/day × 30 days | $45/month |
Apify has a free tier for testing. Sign up here if you do not have an account.