Telegram Channel Scraper: Posts, Views, Reactions & Media
Pricing
from $1.00 / 1,000 post scrapeds
Telegram Channel Scraper: Posts, Views, Reactions & Media
Scrape any public Telegram channel without an account, phone number or API keys. Get posts with full text, views, reactions, media URLs, links, hashtags, forwards and channel stats (subscribers, verified). Date range, keyword search, new-posts-only monitoring. Fast and cheap: $1 per 1,000 posts.
Pricing
from $1.00 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
JackKnifeAI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Telegram Channel Scraper: Posts, Views, Reactions & Media (No Login)
Scrape any public Telegram channel without a Telegram account, phone number, API ID or bot token. Get every post's full text, views, reactions, media URLs, links, hashtags, mentions and forwards, plus channel stats such as subscribers, verified status and media counts. You can filter by date, keyword and minimum views, search inside a channel, and run in monitoring mode so each run returns only new posts.
$1 per 1,000 posts, about 5x cheaper than most Telegram scrapers.
Use cases
- Crypto and trading signal research: collect posts, views and reactions from signal and news channels.
- Brand, news and OSINT monitoring: schedule hourly runs with
onlyNewPoststo get only fresh posts, then send them to Slack, Sheets or a webhook. - Influencer and channel analytics: compare subscribers, views per post and engagement across competitor channels.
- Datasets for NLP or AI: export clean post text with dates and engagement as JSON, CSV or Excel.
- Lead generation: extract the links, @mentions and hashtags that channels share.
Features
- ✅ No login, no phone number, no Telegram API keys
- ✅ Many channels per run, with full history paging (tested at 1,000+ posts per channel)
- ✅ Views, reactions with counts, paid stars, author signature and edited flag
- ✅ Photos, videos, video thumbnails, documents, polls and link previews
- ✅ Forwarded-from channel, reply-to links, hashtags, mentions and outbound links
- ✅ Search posts inside a channel (
searchQuery) - ✅ Filters: last N days, from date, keywords, minimum views, exclude forwards. Filtered-out posts are free.
- ✅ Monitoring mode (
onlyNewPosts) remembers the last post per channel between runs - ✅ A channel info row with subscribers, description, photo and media counts
Input
| Field | Description |
|---|---|
channels | Usernames or links: durov, @telegram, https://t.me/durov, https://t.me/s/durov |
maxPostsPerChannel | Newest first, default 100 |
searchQuery | Optional search within each channel |
postedWithinDays / dateFrom | Date limits |
keywords | Keep posts containing any of these words |
minViews | Keep posts with at least this many views |
excludeForwarded | Skip forwarded posts |
onlyNewPosts | Return only posts newer than the previous run |
stateStoreName | Name of the key-value store used for monitoring state. Use a different name for each separate monitor. |
includeChannelInfo | Add one channel row per channel (default true) |
proxyConfiguration | Optional Apify proxy |
Example: last 7 days from several channels, popular posts only (10k+ views)
{"channels": ["durov", "telegram", "https://t.me/bbcrussian"],"postedWithinDays": 7,"minViews": 10000,"maxPostsPerChannel": 500}
Example: hourly monitor for new posts mentioning bitcoin
{"channels": ["durov", "telegram"],"keywords": ["bitcoin", "btc"],"onlyNewPosts": true,"stateStoreName": "my-btc-monitor"}
Output
Post row (type: "post"):
{"type": "post","channel": "durov","postId": 551,"url": "https://t.me/durov/551","date": "2026-10-10T14:22:43+00:00","text": "💸 If your wallet doesn’t look like this, don’t even bother sending me money for my birthday! 🎂","textLength": 95,"views": 2030000,"reactionsTotal": 61150,"reactions": [{"emoji": null, "customEmojiId": "5936157098181135162", "count": 38200}],"paidStars": 60300,"author": "Pavel Durov","mediaType": "video","photos": [],"videos": ["https://cdn4.telesco.pe/file/...mp4"],"documents": [],"links": [],"hashtags": [],"mentions": [],"isForwarded": false,"forwardedFrom": null,"replyToUrl": null,"channelTitle": "Pavel Durov","channelSubscribers": 10100000,"scrapedAt": "2026-11-04T04:39:04+00:00"}
Channel row (type: "channel"):
{"type": "channel","username": "durov","url": "https://t.me/durov","title": "Pavel Durov","verified": true,"description": "Founder of Telegram.","subscribers": 10100000,"photos": 102,"videos": 47,"links": 200}
A private, deleted or non-existent channel produces a free type: "error" row, and the run continues.
The Posts and Channels tabs show tables. You can export JSON, CSV, Excel or HTML, or connect the API, Make, Zapier, n8n, Google Sheets or webhooks.
Pricing (pay per event)
- $0.001 per post, which is $1 per 1,000 posts
- $0.002 per channel info row
- Posts removed by your filters are free.
- Set a maximum cost per run and the actor stops cleanly when it's reached.
Limits
- Works only with public channels that have a web preview at
t.me/s/<name>. Private groups, invite links (t.me/+...) and chats aren't supported. - Media URLs are Telegram CDN links that expire after a while. Download the files soon after scraping if you need them.
- Comment threads aren't included.
FAQ
Do I need a Telegram account or API keys? No. The actor reads Telegram's public web preview.
How do I get only new posts every hour? Turn on onlyNewPosts and schedule the actor in Apify Schedules. Each run returns only posts published since the last run.
Can I use it through the API? Yes. Call POST https://api.apify.com/v2/acts/classier_wholemeal~telegram-channel-scraper/run-sync-get-dataset-items with the JSON input.