Telegram Scraper: Channel Messages, Reactions, Media & Search
Pricing
from $1.00 / 1,000 results
Telegram Scraper: Channel Messages, Reactions, Media & Search
Scrape any public Telegram channel: messages, views, reactions, media, links and channel stats. Search by keyword, filter by date. No API key, account or phone number needed.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
1
Bookmarked
55
Total users
2
Monthly active users
13 days ago
Last modified
Categories
Share
Telegram scraper: channel messages, reactions, media, search & monitoring
Scrape any public Telegram channel without an account. Get every message with its text, view count, real emoji reactions, media links, and channel stats. Filter by keyword or date, or pull a channel's entire archive.
$1 per 1,000 messages. No Telegram account, no phone number, no API key, no proxy setup.
Point it at durov, @durov, or https://t.me/durov. All three work.
What makes this Telegram scraper different
- No credentials, ever: no phone number, no login code, no bot token, nothing to install.
- Real emoji reactions: you get
🔥and❤, with a numeric count you can sort and sum. - Keyword search that goes deep: Telegram's own in-channel search stops at 22 results. This one reads back through history until it finds what you asked for.
- Full archives: set max messages to
0and pull a channel back to its very first post. - Bulk by default: pass dozens of channels in one run, and the message limit applies per channel.
- Nothing to configure: no browser, no proxy, no rate-limit tuning.
- Bad input never costs you: a private, deleted, or misspelled channel is skipped and never billed.
Two scraping modes
💬 Messages mode
The main mode. Paste one or more channel names and get one row per message, 19 fields each:
- Content: full text, direct message link, message ID, edit flag, timestamp
- Engagement: view count, plus every reaction with its emoji and count as a number
- Media: photos, videos, round video notes, stickers, and documents, with direct file links, video thumbnails, and durations
- Link previews: the site name, title, description, and image of any embedded link
- Extracted: every URL,
#hashtag, and@mentionpulled out of the text into its own array - Threads: what a message replied to, and which channel it was forwarded from
- Channel context: name,
@username, and subscriber count on every single row
Add a search query to keep only messages containing a keyword. Add a start date and end date to keep only a window. Combine them freely.
📡 Channel info mode
Just the channel, no messages. One row per channel with name, @username, subscriber count as both a display string and a number, description, avatar, verified badge, and the channel's own photo / video / link totals. Useful for qualifying a list of channels cheaply before you scrape any of them.
Top use cases
- Media monitoring: track breaking news channels and get a row the moment a post lands.
- Crypto and trading signals: pull calls, sentiment, and reaction counts from signal channels.
- Brand monitoring: search a channel's history for your product name.
- Competitor tracking: watch a rival's channel and see which posts actually get engagement.
- OSINT and research: archive public channels before posts disappear.
- Content analytics: find out which post format wins on views and reactions.
- Dataset building: multilingual real-world text with engagement labels for model training.
- Lead generation: harvest
@mentionsand links from niche industry channels.
How much does Telegram Channel Scraper cost?
You pay per message returned. $1 per 1,000 messages, plus a $0.00005 run-start fee, which is five thousandths of one cent.
| What you scrape | Messages | Cost |
|---|---|---|
| Latest 50 posts from one channel | 50 | $0.05 |
| 20 channels, 100 posts each | 2,000 | $2.00 |
| One channel's full 5,000-post archive | 5,000 | $5.00 |
| Channel info for 100 channels | 100 | $0.10 |
Apify's free plan gives you $5 in credits a month, about 5,000 messages. The $29/month Starter plan covers about 29,000 messages.
Runs that return nothing cost nothing.
Input examples
Messages mode: latest posts from one channel
{"mode": "messages","channelUsernames": ["cointelegraph"],"maxMessages": 100,"includeMedia": true}
Messages mode: many channels in one run
{"mode": "messages","channelUsernames": ["durov","@telegram","https://t.me/cointelegraph","bbcrussian"],"maxMessages": 50}
Messages mode: keyword search across a channel's history
{"mode": "messages","channelUsernames": ["cointelegraph"],"searchQuery": "bitcoin","maxMessages": 200,"maxMessagesScanned": 5000}
Messages mode: a specific date range
{"mode": "messages","channelUsernames": ["durov"],"startDate": "2025-01-01","endDate": "2025-12-31","maxMessages": 500}
Messages mode: the complete archive
{"mode": "messages","channelUsernames": ["durov"],"maxMessages": 0}
Messages mode: text only, no media links
{"mode": "messages","channelUsernames": ["varlamov"],"maxMessages": 200,"includeMedia": false}
Channel info mode: qualify a list of channels
{"mode": "channel-info","channelUsernames": ["durov", "telegram", "bbcrussian"]}
Output examples
Real rows from live runs.
Messages mode, one row per message:
{"messageId": 71814,"messageUrl": "https://t.me/cointelegraph/71814","text": "🔥 BREAKING: $13T Charles Schwab to add Solana, Avalanche, and Chainlink trading to Schwab Crypto accounts in the coming months.\n\nNews | Markets | YouTube","timestamp": "2026-08-27T13:49:16+00:00","views": 6530,"isEdited": false,"authorName": null,"reactions": [{ "emoji": "🔥", "count": "41", "countValue": 41 },{ "emoji": "🤡", "count": "6", "countValue": 6 },{ "emoji": "❤", "count": "4", "countValue": 4 },{ "emoji": "😱", "count": "2", "countValue": 2 },{ "emoji": "🤣", "count": "2", "countValue": 2 },{ "emoji": "👎", "count": "1", "countValue": 1 }],"media": [{"type": "photo","url": "https://cdn5.telesco.pe/file/...","thumbnailUrl": null,"duration": null}],"linkPreview": null,"replyTo": null,"forwardFrom": null,"links": ["https://cointelegraph.com/","https://cointelegraph.com/category/markets","https://www.youtube.com/@cointelegraph"],"hashtags": [],"mentions": [],"channelName": "Cointelegraph","channelUsername": "cointelegraph","channelSubscribers": "339K","channelSubscribersValue": 339000}
A message with a link preview, showing the linkPreview shape:
{"linkPreview": {"url": "https://cointelegraph.com/","siteName": "Cointelegraph","title": "Cointelegraph Bitcoin & Ethereum Blockchain News","description": "The most recent news about crypto industry at Cointelegraph.","imageUrl": "https://cdn4.telesco.pe/file/..."}}
A forwarded message, showing forwardFrom and an extracted @mention:
{"messageId": 14722,"messageUrl": "https://t.me/tproger/14722","timestamp": "2026-08-26T14:53:36+00:00","views": 5770,"forwardFrom": "Нейроканал","mentions": ["@neuro_channel"],"hashtags": [],"channelName": "Типичный программист","channelUsername": "tproger","channelSubscribers": "78.7K","channelSubscribersValue": 78700}
A tagged post, showing hashtags pulled out of the text:
{"messageId": 31643,"messageUrl": "https://t.me/MFARussia/31643","timestamp": "2026-08-27T06:01:28+00:00","views": 2100,"hashtags": ["#KievRegimeCrimes"],"mentions": [],"forwardFrom": null,"channelName": "Russian MFA 🇷🇺","channelUsername": "mfarussia","channelSubscribers": "54.4K","channelSubscribersValue": 54400}
A video message, showing thumbnail and duration:
{"media": [{"type": "video","url": "https://cdn1.telesco.pe/file/...","thumbnailUrl": "https://cdn1.telesco.pe/file/...","duration": "0:13"}]}
Channel info mode, one row per channel:
{"name": "Pavel Durov","username": "durov","subscribers": "11M","subscribersValue": 11000000,"description": "Founder of Telegram.","avatarUrl": "https://cdn4.telesco.pe/file/...","isVerified": true,"photosCount": "102","videosCount": "45","linksCount": "197"}
Download as JSON, CSV, or Excel, or pull it straight from the API.
Limitations
Worth knowing before you buy.
- Public channels only. A channel whose owner turned off the web preview, or a private channel or group, returns nothing. The run still finishes cleanly and you are not charged for it. Some large news channels do this.
- Keyword search reads back a set number of messages, 5,000 by default. If a match is older than that, raise the scan limit. The run tells you when it stopped early and why.
- Custom channel emoji come back as an ID, like
emoji:5465587407350942612, not a character. Telegram publishes no character for them. Standard reactions return the real emoji. - A few videos have no downloadable file. Telegram marks some as unsupported on the preview page, so you get the thumbnail and duration but no video link.
- Media links expire. Download files promptly rather than storing the URLs.
- No comments, no member lists, no private groups. Those need a Telegram account, and this actor deliberately does not use one.
Frequently asked questions
Do I need a Telegram account, phone number, or API key?
No. Nothing. Paste a channel name and run. This is the whole point of the actor: most Telegram scrapers make you verify a phone number or hand over your account credentials, which puts your account at risk. This one only reads public pages.
How do I find a channel's username?
Open the channel in Telegram and look at its link. In https://t.me/durov, the username is durov. You can paste the full link, the @durov handle, or just durov.
Can I monitor a channel for new posts?
Yes. Schedule the actor to run every hour with a small maxMessages, and each run returns the newest posts. Send the results to Slack, a Google Sheet, or a webhook.
Why did my search return fewer results than I expected?
Search reads back through a channel's history up to the scan limit, 5,000 messages by default. If matches are older, raise maxMessagesScanned or set it to 0 to search the whole channel. When a run stops at the limit it says so in the run status.
What happens if a channel is private or the name is misspelled?
It is skipped and you are not charged for it. The run finishes successfully and tells you which channels it could not reach, so one bad name in a batch of fifty never breaks the run or costs you money.
Is it legal to scrape Telegram?
Scraping public data is generally allowed in the US and most of the EU, as long as you don't collect personal data covered by GDPR or CCPA without a lawful basis. This actor only touches publicly accessible pages, but how you use the output is on you.
Apify's full breakdown: Is web scraping legal?.
How much does Telegram Channel Scraper cost?
Pay per result: $1 per 1,000 messages, plus a $0.00005 run-start fee. The Apify free plan's $5 monthly credit covers about 5,000 messages; the $29/month Starter plan covers about 29,000. No subscription lock-in, pause whenever.
Can I integrate it with other tools?
Push results into Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Apify treats every actor as a webhook source, so anything that consumes webhooks or pulls from an API works.
Full list: Apify integrations.
Can I use it with the Apify API?
Yes. Every run is available via the Apify REST API:
curl -X POST "https://api.apify.com/v2/acts/sourabhbgp~telegram-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "messages", "channelUsernames": ["durov"], "maxMessages": 100}'
Docs: Apify API reference.
Can I use it through an MCP Server?
Yes. Apify ships an MCP server that exposes every actor as a tool, so Claude Desktop, Cursor, and any other MCP-capable client can call this scraper. Setup: Apify MCP docs.
Your feedback
Bug, missing field, or odd behavior? Drop a note in the Issues tab. Reports go to a human and fixes usually ship the same week.
Legal
This actor is not affiliated with, endorsed by, or sponsored by Telegram Messenger Inc. Only data from publicly accessible pages is extracted. Respect Telegram's Terms of Service and use the data responsibly.