Telegram Channel Scraper: Messages, Views, Reactions & Media avatar

Telegram Channel Scraper: Messages, Views, Reactions & Media

Pricing

from $0.43 / 1,000 messages

Go to Apify Store
Telegram Channel Scraper: Messages, Views, Reactions & Media

Telegram Channel Scraper: Messages, Views, Reactions & Media

Scrape any public Telegram channel without login or API key: message text, date, views, reactions, photo and video links, polls, replies and forwards, plus channel stats with the exact subscriber count. Date range, keyword search and only-new-messages mode for schedules. $0.50 per 1,000 messages.

Pricing

from $0.43 / 1,000 messages

Rating

0.0

(0)

Developer

Saulius AutomatesIT

Saulius AutomatesIT

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Scrape any public Telegram channel without a Telegram account, API key or phone number. This Actor reads Telegram's own public web preview (t.me/s/<channel>) and returns every message as clean JSON, CSV or Excel.

Give it channel usernames (durov), @handles or t.me links. For each message you get:

  • Text with line breaks kept, plus the links, hashtags and @mentions in it.
  • Date (ISO, UTC), the post link, the author signature and whether it was edited.
  • Views and reactions (each emoji with its count, plus a total).
  • Media: photo links, video links with thumbnail and duration, albums, files, polls with percentages, voice notes, link previews.
  • Context: what it replies to and where it was forwarded from.

Add the channel record and you also get the channel title, description, verified badge, exact subscriber count (not the rounded "10.5M") and its photo, video, file and link counts.

Why use it

  • $0.50 per 1,000 messages. The best-known Telegram scrapers on the Store charge $1 to $5 per 1,000 messages. Paid Apify plans get the usual discounts on top.
  • No login, no ban risk. Nothing runs on your Telegram account, so there is no session to lose and no phone number to verify.
  • Only new messages. Turn on onlyNewMessages, schedule the run hourly or daily, and each run returns just what was posted since the last one. You pay only for new messages.
  • Date windows and keyword search. dateFrom: "7 days" stops paging as soon as it reaches older posts, so short windows are fast and cheap. searchQuery uses Telegram's own in-channel search.
  • Channels that cannot be read are free. Private channels, users, bots and unknown names are listed in the run summary and never charged.

What it's used for

  • News and market monitoring: crypto, trading signals, breaking news and OSINT channels into Google Sheets, Slack or your database on a schedule.
  • Brand and competitor tracking: search channels for your brand or product name and catch mentions as they happen.
  • Research and datasets: full channel histories with views and reactions for analysis, sentiment or AI training data.
  • Influencer and channel vetting: exact subscribers, views per post and engagement before you buy a placement.
  • AI agents and RAG: feed an agent the latest posts from a set of channels and let it summarise them.

Input

FieldWhat it doesDefault
channelsUsernames, @handles, t.me links or single post links, one per line
maxMessagesPerChannelNewest first; 0 = whole history (up to 100,000)100
dateFrom, dateTo2026-09-01 or relative (7 days, 24 hours)all time
searchQueryOnly messages matching a word, phrase or #hashtag
onlyNewMessagesReturn only messages newer than the last run's newestfalse
includeChannelInfoOne channel record per channeltrue
channelInfoOnlyOnly the channel records, no messagesfalse
concurrencyChannels read in parallel3

Example:

{
"channels": ["durov", "https://t.me/telegram", "@tginfo"],
"dateFrom": "30 days",
"maxMessagesPerChannel": 1000
}

Output

One item per message:

{
"type": "message",
"channel": "durov",
"channelTitle": "Pavel Durov",
"messageId": 548,
"url": "https://t.me/durov/548",
"date": "2026-09-11T16:04:02+00:00",
"edited": false,
"author": "Pavel Durov",
"text": "🤝 Telegram has become the sponsor of Codeforces, the largest competitive programming platform in the world...",
"views": 1950000,
"viewsText": "1.95M",
"reactions": [{ "emoji": "telegram-stars", "count": 21100 }, { "emoji": "custom:5399847211989246390", "count": 31000 }],
"reactionsTotal": 48510,
"mediaType": "text",
"photos": [],
"videos": [],
"linkPreview": { "url": "https://codeforces.com/blog/entry/156620", "siteName": "Codeforces", "title": "Telegram Returns as Title Sponsor of Codeforces!" },
"links": ["https://codeforces.com/blog/entry/156620"],
"hashtags": [],
"mentions": [],
"forwardedFrom": null,
"replyTo": null,
"scrapedAt": "2026-10-03T13:32:48.223Z"
}

And one channel record per channel (type: "channel"):

{
"type": "channel",
"title": "Pavel Durov",
"username": "durov",
"verified": true,
"description": "Founder of Telegram.",
"subscribers": 10530052,
"subscribersText": "10.5M",
"photoCount": 102,
"videoCount": 46,
"linkCount": 200,
"kind": "channel",
"url": "https://t.me/durov"
}

mediaType is one of text, photo, video, album, document, poll, voice, sticker, round_video or unsupported. Views above 1,000 are rounded by Telegram (viewsText has the original, for example 1.95M); reactions shown as custom:<id> are custom emoji. The run summary (messages per channel, channels without a public preview, failures) is saved as OUTPUT in the run's key-value store.

Pricing

Pay per result, no subscription:

EventPrice
Message$0.0005 per message ($0.50 per 1,000)
Channel record (only with includeChannelInfo)$0.001 per channel
Actor start$0.00005 per run

Channels without a public preview and filters that match nothing are free. Set Maximum cost per run in the run options and the run stops cleanly when it is reached.

Tutorial: Python, schedules and AI agents

You need an Apify API token (Apify Console > Settings > API & Integrations). Apify's free plan includes $5 of monthly credit, about 10,000 messages.

1. Python: the last 30 days of a channel

$pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("sauliusautomatesit/telegram-channel-scraper").call(run_input={
"channels": ["durov", "telegram"],
"dateFrom": "30 days",
"maxMessagesPerChannel": 0,
"includeChannelInfo": False,
})
posts = list(client.dataset(run.default_dataset_id).iterate_items())
top = sorted(posts, key=lambda p: p["views"] or 0, reverse=True)[:10]
for p in top:
print(p["views"], p["url"], (p["text"] or "")[:80])

run.default_dataset_id is for apify-client 3.x; on 2.x write run["defaultDatasetId"]. Pass max_total_charge_usd=1 to .call() to cap a run at $1.

2. Hourly monitoring with only new messages

Save an input like this as a Task and give it an hourly or daily schedule. Each run returns only posts published since the previous run; connect the Task to Slack, Google Sheets or a webhook in the Integrations tab.

{
"channels": ["channel_one", "channel_two", "channel_three"],
"onlyNewMessages": true,
"maxMessagesPerChannel": 500,
"includeChannelInfo": false
}

The last message seen per channel is kept in a key-value store named telegram-channel-scraper-state in your account. Delete a key there to start a channel over.

3. AI agents: one MCP URL, one tool

This URL gives any MCP client exactly one tool, this Actor:

https://mcp.apify.com/?tools=sauliusautomatesit/telegram-channel-scraper

Claude Code:

$claude mcp add --transport http telegram-channels "https://mcp.apify.com/?tools=sauliusautomatesit/telegram-channel-scraper"

Cursor, Claude Desktop, VS Code and other clients that take JSON:

{
"mcpServers": {
"telegram-channels": {
"url": "https://mcp.apify.com/?tools=sauliusautomatesit/telegram-channel-scraper",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Then ask: "What did @durov and @telegram post this week, and which post got the most views?"

Limits and notes

  • Only public channels with Telegram's web preview switched on can be read. Private channels and groups, invite links (t.me/+...), users and bots are skipped and listed in the summary.
  • Comments under posts (the discussion group) are not included.
  • Photo and video links point to Telegram's CDN and expire after some hours; download the files soon after the run if you need them.
  • Video links are present for videos Telegram plays in the web preview; very large videos show only the thumbnail.
  • Not affiliated with Telegram.