Telegram Channel Scraper - Messages, Views & Reactions
Pricing
from $0.50 / 1,000 messages
Telegram Channel Scraper - Messages, Views & Reactions
Telegram scraper for public channels: messages, views, reactions, links, media, forwards, replies and exact subscriber counts. No login, no bot token, no Telegram API key. Monitor mode returns only new posts. Pay per message, no start fee.
Pricing
from $0.50 / 1,000 messages
Rating
0.0
(0)
Developer
Phantom Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Telegram Channel Scraper — messages, views, reactions & subscribers (no API key)
Telegram scraper for public channels. Export messages, views, reactions, links, photos/videos, forwards, replies, author signatures and exact subscriber counts from any public Telegram channel — no login, no phone number, no bot token, no Telegram API key. Turn on monitor mode and every scheduled run returns only the new posts, so you never pay twice for the same message.
- ✅ Works with any public channel:
durov,@durov,https://t.me/durov,https://t.me/s/durov - ✅ Monitor mode (only new messages since the last run) for alerts and dashboards
- ✅ Keyword filter: Telegram's own in-channel search (fast) or an exact text filter (thorough)
- ✅ Date range: absolute dates or relative ("7 days", "24 hours")
- ✅ Exact subscriber count (10157932, not "10.2M")
- ✅ Clean, flat JSON — export to CSV, Excel, Google Sheets, or call it as a Telegram API alternative from your code
- ✅ $0.50 per 1,000 messages, no start fee — empty monitor runs cost $0
What can this Telegram channel scraper do?
| Use case | How |
|---|---|
| Crypto & token monitoring | Watch project, exchange and "alpha" channels hourly; filter by ticker ($BTC, binance, contract address) and push new posts to Slack, Discord or a webhook with an Apify integration. |
| Brand monitoring & PR | Track mentions of your brand or competitors in news and community channels; measure views and reactions per post. |
| OSINT & research | Archive what public channels publish (text, links, media URLs, forwards) with timestamps, for investigations, journalism and academic research. |
| Market research & content analysis | Compare channel growth (subscribers), engagement (views, reactions) and posting frequency; find the posts that perform best. |
| Archiving & backups | Keep a JSON/CSV archive of your own or any public channel; schedule it daily and keep only new posts. |
| AI / LLM pipelines | Feed clean channel text into RAG, summarisation or sentiment pipelines. |
Input
| Field | What it does |
|---|---|
channels | Usernames or links of public channels. |
maxMessagesPerChannel | Newest messages per channel (default 50). 0 = only the channel info row. |
dateFrom / dateTo | 2026-10-01, an ISO date-time, or relative values like 7 days, 24 hours. |
onlyNewMessages | Monitor mode: remembers the last message per channel and returns only newer ones. |
monitorStateKey | Name of the monitor (use one per schedule/client). |
keywords | Keep only messages containing any of these words. |
keywordMode | telegramSearch (Telegram's in-channel search, fast, whole words) or localFilter (exact substring, reads page by page). |
includeChannelInfo | One row per channel: title, description, subscribers, verified, photo, media counters. |
exactSubscriberCount | Exact subscribers from the channel page (one extra request). |
proxyConfiguration | Apify Proxy (datacenter is enough). |
Example: last 100 posts from three channels
{"channels": ["durov", "https://t.me/telegram", "@AJENews_Official"],"maxMessagesPerChannel": 100}
Example: hourly crypto monitor (only new posts that mention Binance or ETF)
{"channels": ["cointelegraph", "whale_alert_io"],"onlyNewMessages": true,"monitorStateKey": "crypto-hourly","keywords": ["binance", "etf"],"keywordMode": "localFilter","includeChannelInfo": false,"maxMessagesPerChannel": 200}
Schedule it in Apify Console → Schedules and connect a Slack/Discord/webhook integration: each run only delivers (and only charges) the posts you have not seen yet.
Example: archive a date range
{"channels": ["telegram"],"dateFrom": "2026-01-01","dateTo": "2026-06-30","maxMessagesPerChannel": 100000,"maxPagesPerChannel": 5000}
Output
Every row has a type: message, channel or error (errors are free). Real sample (shortened):
{"type": "message","channel": "durov","message_id": 552,"url": "https://t.me/durov/552","date": "2026-10-11T14:52:40Z","text": "✨ Designers × AI\n\n🆕 The mockup era is over...","views": 1850000,"reactions": [{"emoji": "⭐", "custom_emoji_id": null, "paid_stars": true, "count": 7740},{"emoji": null, "custom_emoji_id": "5936157098181135162", "paid_stars": false, "count": 17500}],"forwarded_from": {"name": null, "url": null, "channel": null, "message_id": null, "hidden": true},"reply_to": null,"links": ["https://t.me/designers"],"link_preview": null,"media": [{"type": "video", "url": null, "thumbnail_url": "https://cdn4.telesco.pe/file/...jpg", "duration": "1:15", "too_big_for_web": true}],"poll": null,"album_message_ids": [],"author_signature": "Pavel Durov","edited": false,"hashtags": [],"mentions": [],"matched_keyword": null,"scraped_at": "2026-11-02T13:17:31Z"}
{"type": "channel","channel": "durov","url": "https://t.me/durov","title": "Pavel Durov","description": "Founder of Telegram.","subscribers": 10157892,"subscribers_exact": true,"verified": true,"photo_url": "https://cdn4.telesco.pe/file/...jpg","counters": {"subscribers": 10200000, "photos": 102, "videos": 47, "links": 200},"has_public_preview": true}
Message fields: channel, message_id, url, date (UTC), text, views, reactions (emoji or custom-emoji id, count, paid Stars), forwarded_from, reply_to (id, author, text preview), links, link_preview, media (photo, video, gif, round_video, voice, audio, document, sticker, location, poll — with URL/thumbnail when Telegram exposes it), poll (question, options, %), album_message_ids, author_signature, edited, hashtags, mentions, matched_keyword, scraped_at.
Pricing
Pay per event — you only pay for data you get:
| Event | Price |
|---|---|
| Message | $0.0005 ($0.50 per 1,000 messages) |
| Channel info row | $0.001 |
| Run start | free |
| Error rows | free |
Examples: 1,000 messages ≈ $0.50. An hourly monitor of 5 channels that finds ~15 new posts per hour costs ≈ $5.40/month; runs with nothing new cost $0. Set "Max cost per run" in the run options to cap any run.
FAQ
Do I need a Telegram account, API ID/hash or bot token? No. The scraper reads the public web preview that Telegram itself publishes at https://t.me/s/<channel> and the public channel page https://t.me/<channel>.
Can it scrape private channels, groups or users? No. Only public channels with a username and the web preview enabled. Private invite links (t.me/+...), private groups and user chats need an account and are out of scope; you get a free error row explaining why.
Why is a video url sometimes null? Telegram's web preview does not serve large videos ("Media is too big"). You still get the thumbnail, duration and the message link.
Why do some reactions have custom_emoji_id instead of an emoji? Premium custom emoji are images on Telegram's side; we return their id so you can still count and group them.
How far back can it go? As far as the channel's public history goes. Use dateFrom or raise maxPagesPerChannel for full archives (about 20 messages per page).
How does monitor mode work? After each run the newest message id of every channel is saved in a named key-value store (telegram-channel-scraper-monitor, key = your monitor name). The next run stops as soon as it reaches that id. If a run is capped by maxMessagesPerChannel, older unseen posts of that run are skipped — you never pay twice for the same message.
Telegram search vs exact filter? telegramSearch uses the search box of the public channel page: very fast on huge channels, but it matches words the way the Telegram app does. localFilter reads every page and matches substrings anywhere in the text or link preview (best for tickers, URLs, partial words).
Is it legal? It only reads information that channel owners chose to publish openly on the web, without logging in or bypassing any protection. You are responsible for how you use the data (e.g. GDPR when processing personal data such as author signatures).
Is this an official Telegram API? No, it is an independent tool that reads public pages; it is a simple no-code alternative to the Telegram API for public channel data.