Telegram Channel Scraper avatar

Telegram Channel Scraper

Pricing

from $1.00 / 1,000 messages

Go to Apify Store
Telegram Channel Scraper

Telegram Channel Scraper

Export posts from public Telegram channels: text, views, reactions, media links and dates. No account, bot token or API key needed.

Pricing

from $1.00 / 1,000 messages

Rating

0.0

(0)

Developer

christopher tan

christopher tan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Export posts from any public Telegram channel into a spreadsheet, JSON, or your own app. No Telegram account, phone number, bot token, or API key required.

Press Start to see it work. The default input scrapes @telegram and @durov straight away.

What you get

One row per post, newest first, with the fields people actually ask for:

FieldExample
date2026-09-11T16:04:02+00:00
textFull post text, emoji and line breaks preserved
views688000 (also viewsRaw: "688K")
totalReactions146385, plus a per-emoji breakdown
urlhttps://t.me/durov/548
photoUrls / videoUrlsDirect media links
linkPreviewTitle, description, site name of any shared link
forwardedFrom / replyToUrlWhere a forward or reply came from

An optional summary row per channel carries the title, description, subscriber count, verified badge, and post/photo/video counts.

What people use it for

  • Competitor and market monitoring. Track what rival channels publish and which posts actually land, using views and reactions.
  • Feeding AI agents and RAG pipelines. Clean post text with dates and links, ready to embed. One call returns a whole channel history.
  • News and OSINT research. Pull a dated archive of a channel's posts and filter to the window you care about.
  • Crypto and trading signals. Watch call channels and capture every post with its timestamp.
  • Content analytics. Find which posts, formats, and times get the most views in a niche.
  • Backups. Keep a durable copy of a channel you rely on.

Input

SettingWhat it does
Telegram channelsAny format: telegram, @durov, t.me/durov, https://t.me/s/durov
Max messages per channelDefault 100. Paginates back through history as far as you ask.
Only messages after / beforeOptional date window. The run stops early once it passes your start date, so you are not billed for history you did not want.
Include reactionsOn by default
Include a channel summary rowOn by default
ProxyOff by default. Telegram is normally reachable without one.

Bad input does not waste a run. A misspelled channel, a private invite link, or an unparseable date each produce a plain-English message, and the other channels in your list keep going.

Sample output

{
"type": "message",
"requestedChannel": "durov",
"channel": "durov",
"messageId": 548,
"url": "https://t.me/durov/548",
"date": "2026-09-11T16:04:02+00:00",
"text": "๐Ÿค Telegram has become the sponsor of Codeforces โ€” the largest competitive programming platform...",
"authorName": "Pavel Durov",
"views": 688000,
"viewsRaw": "688K",
"totalReactions": 146385,
"reactions": [
{ "emoji": "โค", "count": 73, "isPaid": false }
],
"mediaTypes": [],
"links": ["https://codeforces.com/blog/entry/156620"],
"linkPreview": {
"url": "https://codeforces.com/blog/entry/156620",
"title": "Telegram Returns as Title Sponsor of Codeforces!",
"siteName": "Codeforces"
}
}

What it cannot do, and why

Being straight about this saves you a wasted run:

  • Only public channels. If a channel has turned off its web preview, nothing can read it without a logged-in account. This Actor deliberately does not use one. You get a clear message saying so rather than an empty dataset.
  • No private groups or invite links. t.me/+... and t.me/joinchat/... are rejected up front.
  • No subscriber lists or member data. Telegram does not publish them, and this Actor does not attempt to collect personal data.
  • View and reaction counts above 1,000 are rounded by Telegram itself ("688K"). The exact figure is not published. views is the expanded number and viewsRaw keeps Telegram's original string so you can tell.
  • Custom emoji reactions have no text label on the web, so those rows carry customEmojiId instead of an emoji character.

More tools from steadyfeeds

Notes

Reads the same public pages you can open in a browser at t.me/s/<channel>. It collects channel content, not personal data.

Something broken or a field you need? Open an issue on this Actor and I will take a look.