Telegram Channel Scraper - Public Channel Messages (No API Key) avatar

Telegram Channel Scraper - Public Channel Messages (No API Key)

Pricing

from $6.00 / 1,000 results

Go to Apify Store
Telegram Channel Scraper - Public Channel Messages (No API Key)

Telegram Channel Scraper - Public Channel Messages (No API Key)

Scrape messages from PUBLIC Telegram channels via the official t.me web preview - no API key, no bot token, no login. Get message text, date, views, author, media type & links as clean rows. Ideal for crypto/news/OSINT monitoring and research. Export CSV/JSON/Excel.

Pricing

from $6.00 / 1,000 results

Rating

0.0

(0)

Developer

Flash Scrape

Flash Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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. $5 per 1,000 messages — pay only for the messages you actually get.

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 you can export to CSV, JSON, or Excel — 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 for investigation and monitoring.
  • 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 to use it

  1. Add one or more channels — usernames (telegram), @handles (@durov), or full links (https://t.me/durov). All three formats are normalized automatically.
  2. Set maxItemsPerChannel — how many of the most recent messages to pull from each channel (default 100, up to 1,000).
  3. Run it. Then export the dataset to CSV, JSON, or Excel, 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

FieldTypeDescription
channelsarray of stringsPublic channel usernames or t.me links. telegram, @durov, and https://t.me/durov all work. Required.
maxItemsPerChannelintegerMost-recent messages to pull per channel (default 100, max 1000).

Input example

{
"channels": ["telegram", "durov"],
"maxItemsPerChannel": 50
}

Output

One row per message:

FieldDescription
channelChannel username the message came from
message_idNumeric message id within the channel
message_urlDirect link, https://t.me/<channel>/<id>
textMessage text, with line breaks preserved
datePublish time (ISO 8601, UTC)
viewsView count as shown by Telegram (e.g. 1.18M, 907K)
authorPost signature / author, when the channel signs posts
media_typephoto, video, voice, audio, document, poll, sticker, location, link, or none
has_linkstrue if the message text contains at least one link
linksList 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: $0.005 per message result ($5 per 1,000 messages). You're charged only for messages actually returned — no subscription, and no charge for empty runs. New Apify accounts get roughly 1,000 free results per month on the platform's free tier, so you can pull a mid-size backlog from several channels and test the output before paying anything. Pulling 5,000 messages costs $25; a 20,000-message archive costs $100.

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.

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 and by how much history Telegram serves in the public preview. Very large historical pulls are best split across several runs.

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. Re-run periodically (or on a schedule) to keep a channel archive up to date.

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.).

Questions or a channel that won't parse? Open an issue on the actor's Issues tab and we'll take a look.