Telegram OSINT Scraper - Public Channel Messages & Views
Pricing
from $2.00 / 1,000 results
Telegram OSINT Scraper - Public Channel Messages & Views
Telegram OSINT scraper for any public channel via the t.me web preview - no API key, bot token, phone or login. Export Telegram channel messages and history: text, date, views, author, media type, links to CSV, JSON or Excel. Multiple channels, paginates history. Monitor crypto, news.
Pricing
from $2.00 / 1,000 results
Rating
5.0
(1)
Developer
Flash Scrape
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Telegram Channel Scraper — public channel messages, no API key or bot token
Pull messages from any public Telegram channel into a clean, structured dataset — no API key, no bot token, no phone number, no login. This actor reads the official Telegram web preview (t.me/s/<channel>), the same public page anyone can open in a browser, and turns each post into a row: message text, date, view count, author/signature, media type, and every link. It scrapes channel messages only — not group members (see What it does not do).
Copy-paste input — this is the whole configuration:
{"channels": ["telegram", "durov"],"maxItemsPerChannel": 50}
You get back one row per message with 10 columns (channel, message_id, message_url, text, date, views, author, media_type, has_links, links), exportable to CSV, JSON or Excel. Pricing is per message returned — $2 per 1,000 messages at the current rate (see cost).
What does it do?
Give it a list of public channel usernames or t.me links and how many recent messages you want per channel. The actor fetches each channel's public preview page, parses every post, and paginates backwards through the channel history to reach older messages until it hits your limit or the start of the channel. The result is a tidy, deduped, most-recent-first table — ready for a spreadsheet, a BI tool, or an LLM pipeline.
It reads public broadcast channels only — the kind that already show a public web preview. It does not log in, does not use a bot token, and cannot access private or invite-only channels or group chats. Because it uses plain HTTP against the public page, it runs fine on datacenter IPs with no proxy required.
Why use it / who's it for
- Crypto & DeFi researchers monitoring announcement, signal, and project channels — track calls, listings, and sentiment over time without babysitting the app.
- News & journalism teams archiving official channels from agencies, governments, and outlets that publish first (or only) on Telegram.
- OSINT & threat-intelligence analysts collecting public-channel posts into a searchable, timestamped dataset — including data-leak-monitoring and war-monitoring channels that publish only on Telegram.
- Community & competitor trackers watching a rival's or a niche's public channel — posting cadence, engagement (views), what links they push, what media they lean on.
- Data scientists & ML teams building text datasets from public broadcast channels for topic modeling, trend detection, or fine-tuning.
- Marketers & growth teams benchmarking which posts in a category get the most views, and mining the links a channel shares.
How do I export Telegram channel messages to CSV or Excel?
- Add one or more channels — usernames (
telegram),@handles(@durov), or full links (https://t.me/durov). All three formats are normalized automatically. - Set maxItemsPerChannel — how many of the most recent messages to pull from each channel (default 100, up to 1,000).
- Run it. Then export the dataset to CSV, JSON, or Excel from the Output tab, or read it straight from the dataset API.
Only channels matters — everything else has a sensible default, and the demo run works out of the box.
Input
| Field | Type | Description |
|---|---|---|
channels | array of strings | Public channel usernames or t.me links. telegram, @durov, and https://t.me/durov all work. Required. |
maxItemsPerChannel | integer | Most-recent messages to pull per channel (default 100, max 1000). |
Output
One row per message:
| Field | Description |
|---|---|
channel | Channel username the message came from |
message_id | Numeric message id within the channel |
message_url | Direct link, https://t.me/<channel>/<id> |
text | Message text, with line breaks preserved |
date | Publish time (ISO 8601, UTC) |
views | View count as shown by Telegram (e.g. 1.18M, 907K) |
author | Post signature / author, when the channel signs posts |
media_type | photo, video, voice, audio, document, poll, sticker, location, link, or none |
has_links | true if the message text contains at least one link |
links | List of URLs found in the message text |
Example output row
{"channel": "telegram","message_id": 448,"message_url": "https://t.me/telegram/448","text": "AI Admins for Groups. Groups can now add AI bots as admins to process join requests with unique features like captcha support.","date": "2026-06-18T14:35:57+00:00","views": "1.06M","author": null,"media_type": "video","has_links": true,"links": ["https://t.me/telegram/449"]}
How much does it cost?
This actor uses pay-per-event pricing: a flat rate per message returned. At the rate current on 2026-08-23 that is $0.002 per message — $2 per 1,000 messages — plus a $0.00005 actor-start event; this page's Pricing tab is always authoritative if the rate changes. You're charged only for messages actually returned — no subscription, and no charge for empty runs. New Apify accounts get platform free credits, so you can pull a mid-size backlog from several channels and test the output before paying anything.
What it does not do
- No group members. It cannot scrape or export Telegram group member lists — the public web preview shows a channel's posts, not its subscribers. If you searched "scrape telegram group members", this is not that tool (and any keyless tool claiming to be should be treated with suspicion).
- No private or invite-only channels (
t.me/+...links), and no group chats. Public broadcast channels only. - No comments, reactions, or reply threads — the preview page exposes the posts themselves.
- No media file downloads. You get each message's
media_typeand links, not the photo/video files. - No login, ever — which is exactly why there's no account to ban and no session to maintain.
FAQ
Do I need an API key, bot token, or phone number?
No. The actor reads the official public web preview at t.me/s/<channel> — the same page any browser can open without logging in. There is no Telegram API key, no bot token, no phone-number login, and no session string. That also means there's nothing to get banned: it never authenticates as a user.
Is this a Telethon / Pyrogram alternative?
For reading public channel messages, yes: you get the same message text, dates, views and links without registering a Telegram API id, without a phone number, and without risking an account. For anything that requires a logged-in session (private channels, group member lists, sending messages), no — no keyless tool can do that, this one included.
Can it scrape Telegram group members?
No — see What it does not do. Member lists are only visible to logged-in clients; the public preview this actor reads never shows them.
Can it read private channels or group chats?
No. It only reads public channels that expose a public web preview. Private channels, invite-only channels, and group chats are not accessible this way, by design. If a channel doesn't return public messages, the actor logs a warning and skips it — the run still finishes cleanly for the channels that do work.
How far back can it go?
It paginates backwards through the channel's public history using Telegram's ?before= parameter, so you can pull well beyond the latest page. In practice you're bounded by maxItemsPerChannel (max 1,000 per channel per run) and by how much history Telegram serves in the public preview. Very large historical pulls are best split across several runs.
Can I monitor a channel on a schedule?
Yes — run it on an Apify Schedule (hourly, daily, weekly) and each run delivers the channel's most recent messages at that moment, timestamped and deduped by message_id within the run. Note it has no "only new since last run" mode: a scheduled run re-pulls the latest maxItemsPerChannel messages, so dedupe across runs by message_url in your pipeline (or keep the per-run limit close to the channel's posting volume). This is how people track crypto announcement channels, war-monitor feeds and data-leak channels over time.
How fresh is the data?
It's fetched live at run time, so results reflect what the channel shows right now, including current view counts.
Why is a channel returning fewer messages than I asked for?
Either the channel simply has fewer public messages than your limit, or it reached the start of its public history. Service messages and some media-only edge cases may also be skipped. The actor de-duplicates by message id, so counts reflect unique messages.
Is scraping this data allowed?
The actor reads only publicly available data from Telegram's own public web preview — no login, no paywall, no private content. Use the collected data responsibly and in line with Telegram's terms and any laws that apply to your use case (privacy, copyright, etc.).
Use with AI agents & automation
Runs as a tool call through the Apify MCP server, so AI agents (Claude, ChatGPT, Cursor) can pull a channel's messages mid-conversation. Trigger runs and pipe rows into Make, n8n or Zapier, or sync the dataset to Google Sheets for a live channel archive.
Related actors
- Creator Leads Scraper — need creator/influencer leads with emails from TikTok, Instagram and YouTube instead of Telegram messages? Same publisher, one row per creator.
- Twitter / X Leads Scraper — pull public X/Twitter profiles and posts into structured leads.
- Wikipedia Scraper — extract clean article text and structured data from Wikipedia.
Questions or a channel that won't parse? Open an issue on the actor's Issues tab and we'll take a look.