Telegram Channel Scraper - Messages, Views & Reactions
Pricing
from $0.50 / 1,000 messages
Telegram Channel Scraper - Messages, Views & Reactions
Export any public Telegram channel: message text, timestamps, view counts, reactions broken out per emoji, forwarded-from attribution, media types, link previews and outbound links. No API key, no phone number, no account. Date range and per-channel caps included.
Pricing
from $0.50 / 1,000 messages
Rating
0.0
(0)
Developer
ApifyActors
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Telegram Channel Scraper — messages, views and reactions, no API key
Export the full history of any public Telegram channel. No API key, no phone number, no
account, no Telethon session — point it at @handle and get rows.
What you get
Text, timestamp, view count, reactions broken out per emoji, forwarded-from attribution with its link, media types, link-preview metadata, outbound links, and a reply flag. Channel title, description and subscriber count come attached to every row at no extra charge — several actors in this category bill a separate "channel info" event for exactly that.
Input
| Field | What it does |
|---|---|
channels | @handle, bare handle, t.me/handle or https://t.me/s/handle |
maxMessagesPerChannel | 0 for the whole history, or a cap to control spend |
onlyMessagesNewerThan | ISO date. Paging stops as soon as the channel passes it |
onlyMessagesOlderThan | ISO date upper bound, for a closed range |
useProxy | Off by default — Telegram serves this without one |
delayBetweenPagesSecs | Pacing for very long histories |
{"channels": ["@durov", "telegram"],"maxMessagesPerChannel": 500,"onlyMessagesNewerThan": "2026-09-01"}
Output
One row per message:
{"channel": "durov","message_id": 528,"url": "https://t.me/durov/528","datetime": "2026-09-18T14:22:07+00:00","text": "Telegram now supports…","views": "1.25M","reactions": { "👍": "106", "❤": "3", "stars": "14.3K" },"reactions_total": 233765,"forwarded_from": null,"forwarded_from_link": null,"media": ["video"],"is_reply": false,"link_preview_site": "Telegram","link_preview_title": "Welcome Messages, Buttons in Messages and Signed Gifts","link_preview_desc": "Introducing Welcome Messages…","link_preview_url": "https://telegram.org/blog/welcome-messages-buttons-TG-13","links": ["https://telegram.org/blog/welcome-messages-buttons-TG-13"],"channel_title": "Durov's Channel","channel_description": "Thoughts from the Telegram founder.","subscribers": "9.48M","scraped_date": "2026-09-24T09:02:11Z"}
reactions keeps Telegram's own labels: the emoji itself where there is one, stars for
paid reactions, and custom:<id> for premium custom emoji. reactions_total is the sum,
already expanded from Telegram's shorthand — 14.3K counts as 14,300.
Pricing
$0.50 per 1,000 messages, plus Apify's standard $0.00005 actor start. Channel metadata is free, date filtering is free, and channels that fail are not charged.
Notes and limits
- Public channels only. Private channels, invite-only channels and groups have no public preview; they come back as an error row rather than an empty dataset, and cost nothing.
- Two things this surface genuinely does not carry: comment counts and forward/share
counts. They exist only through an authenticated Telegram client, which is what actors
that ask for your
api_id/api_hashare doing. If you need those numbers, this is the wrong tool and the README of a Telethon-based actor is the right one. - An album counts as one message, not one per image. That matches how Telegram itself numbers it and how analysts count posts.
- Very long histories are paged in blocks of roughly twenty messages, so a full 10,000-message archive is a few hundred requests. Use the date bound where you can.
FAQ
Do I need api_id / api_hash / a phone number? No. That is the point.
Can it read a group? No — groups have no public preview surface.
Can it search across all of Telegram by keyword? No. It reads channels you name.
Is the view count real? It is the number Telegram publishes on the message, including its
shorthand for large values; views keeps the original string so nothing is invented.