Telegram Channel Scraper - Posts, Views, Reactions & Media
Pricing
$1.50 / 1,000 posts
Telegram Channel Scraper - Posts, Views, Reactions & Media
Scrape public Telegram channels without login or API keys: post text, date, views, reactions, photos, videos, files, forwards, replies, link previews, plus channel subscribers and description.
Pricing
$1.50 / 1,000 posts
Rating
0.0
(0)
Developer
Cobi Hilliard
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Telegram Channel Scraper: posts, views, reactions, media and channel info
Scrape any public Telegram channel without a Telegram account, phone number, bot token or API key. For every post you get the text (plain and HTML), date, view count, reactions, photos, videos, files, polls, forwarded-from source, reply-to, link previews and an edited flag. Add channel records with subscriber count, description, photo and verified badge. Filter by date and keywords, including a search through the channel's whole history.
What data you get
Posts (type: "post")
- Channel username and title, post ID, post URL and publish date (ISO 8601)
- Text as plain text and as HTML (bold, links, quotes kept), plus extracted links, #hashtags and @mentions
- Views and every reaction with its count (unicode emoji, custom emoji ID or paid Telegram Stars), plus a total
- Media type (
text,photo,video,album,document,voice,roundVideo,sticker,poll,location) and every photo URL in an album, video file and thumbnail URLs with duration, file names and sizes - Polls with question, type, options and percentages
- Link preview: URL, site name, title, description and image
- Forwarded-from source (name, username and link to the original post), reply-to post ID, author and snippet
- Edited flag and author signature
- The keyword that matched, when you use keyword filtering
Channels (type: "channel")
- Username, title, URL, description (text and HTML), verified, scam and fake flags
- Subscribers and photo, video, file and link counts
- Channel photo URL, latest post ID and date
Sample result
{"type": "post","channelUsername": "telegram","channelTitle": "Telegram News","postId": 460,"url": "https://t.me/telegram/460","date": "2026-08-26T19:12:34+00:00","text": "For all the info from today's update and a look back at 13 years of Telegram features — check out our blog:\nhttps://telegram.org/blog/welcome-messages-buttons-TG-13 …","textHtml": "For all the info from today's update and a look back at <b>13 years of Telegram features</b> …","views": 2040000,"isEdited": false,"isForwarded": false,"forwardedFrom": null,"replyTo": null,"mediaType": "text","photos": [],"videos": [],"linkPreview": {"url": "https://telegram.org/blog/welcome-messages-buttons-TG-13","siteName": "Telegram","title": "Welcome Messages, Buttons in Messages and Signed Gifts","imageUrl": "https://cdn4.telesco.pe/file/FKjV…jpg"},"reactions": [],"links": ["https://telegram.org/blog/welcome-messages-buttons-TG-13", "https://t.me/telegram/455"],"hashtags": [],"mentions": []}
{"type": "channel","username": "durov","url": "https://t.me/durov","title": "Pavel Durov","description": "Founder of Telegram.","isVerified": true,"subscribers": 10300000,"photosCount": 102,"videosCount": 47,"linksCount": 200,"photoUrl": "https://cdn4.telesco.pe/file/YPQb…jpg","lastPostId": 552,"lastPostDate": "2026-10-11T14:52:40+00:00"}
Reactions look like { "emoji": "👍", "customEmojiId": null, "isPaid": false, "count": 369 }. A forwarded post has
"forwardedFrom": { "name": "Telegram Contests", "username": "contest", "url": "https://t.me/contest/433" }.
How to use
| Field | What it does |
|---|---|
channels | Channel usernames or links: durov, @durov, https://t.me/durov, https://t.me/s/durov |
maxPostsPerChannel | Newest posts to save from each channel (default 100). Older history is paged automatically |
onlyPostsNewerThan | Only posts after a date (2026-01-31) or within a period (7 days, 12 hours, 3 months). Paging stops at the cutoff, so you only pay for what you keep |
keywords | Only posts that mention at least one of these words or phrases |
useTelegramSearch | On (default): keywords go through Telegram's in-channel search, which reaches matches anywhere in the history. Off: exact, case-insensitive substring match on the newest posts |
scrapePosts | Turn off for channel records only |
includeChannelInfo | Add one channel record per channel (default on) |
resolveForwardedFrom | Fetch the original source of forwarded posts (one extra request per forward, default on) |
maxItems | Stop after this many results in total (default 50) |
Example inputs:
{ "channels": ["durov", "telegram"], "maxPostsPerChannel": 200, "maxItems": 500 }
{ "channels": ["https://t.me/bbcnews", "nytimes"], "onlyPostsNewerThan": "7 days", "maxItems": 1000 }
{ "channels": ["durov", "designers"], "keywords": ["contest", "AI"], "includeChannelInfo": false }
{ "channels": ["durov", "telegram", "nytimes"], "scrapePosts": false }
Pricing
$1.50 per 1,000 results, charged only for items saved to your dataset (posts and channel records). 10,000 posts
cost about $15. Use onlyPostsNewerThan and maxItems to cap the spend.
Use cases
- Monitor news, crypto, finance and brand channels for new posts, schedule it daily
- Measure engagement: views and reactions per post, best posting times, top content
- Track mentions of your brand, product or token with keyword search across channel history
- Build datasets for sentiment analysis, AI training, RAG and summarisation
- Compare channels by subscribers and activity for influencer and competitor research
FAQ
Is it legal? The scraper reads only Telegram's public web preview at t.me/s/<channel>, the same pages any
visitor sees in a browser without logging in. It does not log in, use the Telegram API or access private channels,
groups or member lists. You are responsible for how you use the data, including personal data and copyright.
Which channels work? Public channels with a username and the web preview enabled. Private channels, groups, users and bots, and channels that disabled the preview, are skipped with a warning.
Why are view and reaction counts rounded? Telegram shows them abbreviated (3.6M, 9.99K). They are converted
to numbers, so large counts are accurate to about three digits.
Why is forwardedFrom.name empty? The original author hid the forward source in their privacy settings. The
post is still flagged isForwarded: true.
Why is a video URL null? Telegram does not serve large videos on the web preview. You still get the thumbnail,
duration and isTooBigForPreview: true. Media URLs are temporary CDN links; download files soon after the run.
How far back can it go? To the first post of the channel. Each page is 20 posts and pages are fetched at a gentle pace, so 1,000 posts take a few minutes.
Keyword search found a post without the exact word? Telegram's own search decides what matches and can be broader than an exact substring. Turn off
useTelegramSearch for strict substring matching on the newest posts.
Integrations and API
Run it on a schedule with Apify Schedules and send new posts to Google Sheets, Slack, Make, Zapier or a webhook with
Apify integrations. Call it from any language with the Apify API or client libraries (apify-client for
JavaScript and Python), or connect it to an AI agent through the Apify MCP server.