Telegram Channel Scraper - Posts, Views, Reactions & Media avatar

Telegram Channel Scraper - Posts, Views, Reactions & Media

Pricing

$1.50 / 1,000 posts

Go to Apify Store
Telegram Channel Scraper - Posts, Views, Reactions & Media

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

Cobi Hilliard

Maintained by Community

Actor 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

FieldWhat it does
channelsChannel usernames or links: durov, @durov, https://t.me/durov, https://t.me/s/durov
maxPostsPerChannelNewest posts to save from each channel (default 100). Older history is paged automatically
onlyPostsNewerThanOnly 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
keywordsOnly posts that mention at least one of these words or phrases
useTelegramSearchOn (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
scrapePostsTurn off for channel records only
includeChannelInfoAdd one channel record per channel (default on)
resolveForwardedFromFetch the original source of forwarded posts (one extra request per forward, default on)
maxItemsStop 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.