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

Telegram Channel Scraper - Posts, Views, Reactions & Media

Pricing

from $1.20 / 1,000 channel posts

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

Telegram Channel Scraper - Posts, Views, Reactions & Media

Scrape public Telegram channels: posts with text, views, reactions, photos, videos, link previews, forwards, search inside a channel, date range, and channel subscriber stats. No account or API key.

Pricing

from $1.20 / 1,000 channel posts

Rating

0.0

(0)

Developer

bình minh trần

bình minh trần

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Telegram Channel Scraper: posts, views, reactions, media and channel stats

Scrape any public Telegram channel: every post with text, views, reactions, photos, videos, link previews, forwards and replies, plus the channel's subscriber count and profile. You don't need a Telegram account, phone number or API key.

Use it to:

  • Monitor crypto, news and trading channels: track announcements the moment they are posted, with view and reaction counts.
  • Research audiences and influencers: compare channels by subscribers, post frequency and engagement.
  • Collect datasets: build text and media datasets for sentiment analysis, LLM training or archiving.
  • Track mentions: search inside channels for a keyword, brand or ticker.

What you get

InputOutput
Channels (username, @name or t.me link)Posts, newest first, as many as you ask for. The scraper pages back through the whole history.
Search inside channelsOnly the posts that match your keyword, using Telegram's own in-channel search
Date rangeOnly the posts between two dates; paging stops at the start date
Channel infoTitle, description, subscribers, verified badge, photo, video and link counts

Why this scraper

  • About 40% cheaper than the most-used Telegram channel scraper on the Store (see Pricing).
  • Full post data: text, views, every reaction with its count (including paid Star reactions), photos, videos, link preview cards, forwarded-from, reply-to, polls, documents, hashtags and links.
  • No login, no phone number, no ban risk. It only reads Telegram's public t.me/s/ channel pages.
  • Fast and light: plain HTTP requests, 20 posts per request, no browser.
  • Clean numbers: "10.5M" becomes 10500000, and all times are in UTC.

How to use it

  1. Add one or more public channels, for example durov, @binance_announcements or https://t.me/s/nytimes.
  2. Set how many posts you want per channel. Optionally add a search term or a date range.
  3. Click Start. Download the results from the Output tab, or read them through the API. You can also schedule it hourly to monitor channels.

Input example

{
"channels": ["durov", "binance_announcements", "https://t.me/s/nytimes"],
"maxPostsPerChannel": 500,
"searchQuery": "",
"dateFrom": "2026-09-01",
"includeChannelInfo": true
}

Output

Every record has a type field: post or channel.

Post

{
"type": "post",
"channel": "binance_announcements",
"channelTitle": "Binance Announcements",
"postId": 9001,
"url": "https://t.me/binance_announcements/9001",
"date": "2026-09-28T07:01:40Z",
"edited": false,
"text": "Binance Will List ...",
"views": 42200,
"reactions": [
{ "emoji": "❤", "customEmojiId": null, "count": 66, "paid": false },
{ "emoji": "👏", "customEmojiId": null, "count": 24, "paid": false }
],
"reactionsTotal": 90,
"author": null,
"forwardedFrom": null,
"forwardedFromUrl": null,
"replyToPostId": null,
"photos": ["https://cdn5.telesco.pe/file/....jpg"],
"videos": [],
"document": null,
"documentInfo": null,
"poll": null,
"pollOptions": [],
"linkPreview": null,
"links": ["https://www.binance.com/en/support/announcement/..."],
"hashtags": [],
"isServiceMessage": false,
"position": 1,
"scrapedAt": "2026-10-04T18:31:27Z"
}

customEmojiId is set for premium custom-emoji reactions, which Telegram's public page shows only as an id. Paid reactions (Telegram Stars) are reported as "emoji": "⭐", "paid": true.

Channel

{
"type": "channel",
"channel": "durov",
"url": "https://t.me/durov",
"title": "Pavel Durov",
"description": "Founder of Telegram.",
"verified": true,
"subscribers": 10500000,
"photosCount": 102,
"videosCount": 46,
"filesCount": null,
"linksCount": 200,
"avatarUrl": "https://cdn4.telesco.pe/file/....jpg",
"scrapedAt": "2026-10-04T18:31:27Z"
}

Pricing

Pay per result, with no subscription and no start fee. You are only charged for records that land in your dataset.

RecordEventPrice
Postpost$1.20 per 1,000
Channel infochannel$1.20 per 1,000

The exact current prices are always shown on the Pricing tab. Set Maximum cost per run in the run options and the scraper stops cleanly when it is reached. 1,000 posts from one channel cost about $1.20.

FAQ

Can it scrape private channels or groups? No. It reads only what Telegram shows publicly at t.me/s/<channel>. Private channels, groups, and channels that turned off the public preview are not available. They are reported in the run log and skipped.

How far back can it go? As far as the channel's public history goes. Set Max posts per channel high, or use Posts from to stop at a date.

Why does a search return only a few dozen posts? Telegram's public in-channel search returns only the most recent matches. For a channel's full history, leave Search empty, scrape all posts and filter the text field yourself.

Why do some reactions have no emoji? Premium custom emoji are shown on Telegram's public page as an id, not a character. You get that id in customEmojiId.

Do I need a proxy? No. The scraper paces itself. On the Apify platform it switches to Apify Proxy on its own if Telegram rate-limits it.

Is scraping Telegram legal? This Actor reads only publicly published channel posts, the same pages anyone can open in a browser without logging in. You are responsible for how you use the data under Telegram's terms and the laws that apply to you.

Feedback

Found a bug or need another field? Open an issue on the Issues tab. Issues are usually fixed within a few days.