Telegram Channel Posts Scraper avatar

Telegram Channel Posts Scraper

Pricing

from $1.00 / 1,000 posts

Go to Apify Store
Telegram Channel Posts Scraper

Telegram Channel Posts Scraper

Telegram channel scraper for public channels: posts and messages with views, reactions, media links and full history by date. No login, phone number or API key. $1 per 1,000 posts.

Pricing

from $1.00 / 1,000 posts

Rating

0.0

(0)

Developer

TechyMaki Labs

TechyMaki Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Categories

Share

Scrape posts from public Telegram channels: text, date, views, reactions, forwarded-from, reply target, media links, text links and link previews. Walks the full channel history back in time, filters by date range, and takes many channels in one run. No Telegram account, login, API key or phone number.

Use it as a Telegram channel scraper or Telegram messages scraper for public channels: monitor news and crypto channels, archive a channel's history, or feed posts into sentiment and research pipelines. $1 per 1,000 posts.

What it can and cannot do

  • It reads the public web preview Telegram itself publishes at https://t.me/s/<channel>. You get what Telegram exposes publicly there, nothing more.
  • Public channels only. Private channels, groups, invite links and channels that disabled the web preview return one { "channel", "error" } item. Error items are never charged.
  • Pages are fetched politely (3 concurrent requests, short delay). If t.me ever answers 403/429 the actor stops instead of trying to get around it.
  • Telegram hides some things in the preview, and the actor reports null or an empty list for them instead of guessing:
    • The source of a forwarded post is often blank in the preview. forwardedFrom is then { "name": null, "url": null }: you still learn the post is a forward.
    • Very large videos have no playable URL (url: null), only a thumbnail.
    • Polls, documents and audio files are not exposed in the preview HTML we tested against, so they are not extracted (see Known limits).
  • Subscriber counts and view counts come from Telegram's rounded display values (1.2K, 3.4M), so they are approximate for big numbers.

Input

FieldTypeDefaultNotes
channelsarrayrequiredUsernames (durov), @durov, or links (https://t.me/durov, https://t.me/s/durov). Duplicates are removed.
maxPostsPerChannelinteger100Newest first. The actor follows ?before= pagination (about 20 posts per page) until the cap.
dateFromstringnoneISO date or date-time, UTC. Paging stops once posts are older.
dateTostringnoneISO date or date-time, UTC. A date-only value includes the whole day.
includeChannelInfobooleantrueOne extra item per channel.
{ "channels": ["durov", "https://t.me/bloomberg"], "maxPostsPerChannel": 60, "dateFrom": "2026-09-01" }

Output

Items are of three kinds. Channel info (once per channel, first):

{
"type": "channel",
"channel": "bloomberg",
"title": "Bloomberg",
"description": "The first word in business news.",
"subscribers": 185000,
"photoUrl": "https://cdn5.telesco.pe/file/L0xcvHXl…jpg",
"verified": true,
"scrapedAt": "2026-10-26T13:00:19.797Z"
}

Posts, newest first (real item from a local run; text, reactions and the photo URL shortened here):

{
"type": "post",
"channel": "bloomberg",
"postId": 3224,
"url": "https://t.me/bloomberg/3224",
"date": "2026-09-03T03:10:11.000Z",
"text": "EXCLUSIVE: TikTok developer ByteDance secures a $30 billion loan in Asia’s second-largest dollar-denominated borrowing this year. Read more: https://bloom.bg...",
"views": 79900,
"reactions": [
{ "emoji": "❤", "count": 180, "customEmojiId": null, "paid": false },
{ "emoji": "🔥", "count": 143, "customEmojiId": null, "paid": false }
],
"forwardedFrom": null,
"replyToPostId": null,
"media": [],
"links": ["https://bloom.bg/4dbLUqz"],
"linkPreview": {
"url": "https://bloom.bg/4dbLUqz",
"siteName": "Bloomberg.com",
"title": "ByteDance Gets $30 Billion Loan, Asia’s Second-Largest This Year",
"description": "ByteDance Ltd., the developer of TikTok, has secured a $29.6 billion loan, according to people familiar with the matter, in Asia’s second-largest dollar-denominated borrowing this year."
},
"edited": false,
"scrapedAt": "2026-10-26T13:00:19.797Z"
}

Field notes:

  • media[] items are { "type": "photo" | "video" | "voice" | "sticker", "url" }; videos also carry thumbnailUrl. Albums produce several items.
  • reactions[]: standard emoji have emoji; custom emoji have customEmojiId and emoji: null; Telegram Stars reactions have paid: true and emoji: "⭐".
  • forwardedFrom is null for original posts.
  • Missing values are null (no text on a photo-only post, no view count on a service post).
  • A full real output of 5 channels, including an error item, is in samples/sample-output.json.

Pricing (pay per event)

EventPrice
post (one scraped post)$0.001 (that is $1 per 1,000 posts)
channel-info (one channel info item)$0.002
apify-actor-start (once per run, Apify's standard start event)$0.00005

Platform compute is included. Error items are free. The actor stops when your spending limit for the run is reached.

Performance

A local run with 4 channels at 60 posts each (240 posts, 3-4 pages per channel) took about 14 seconds on a home connection. Cloud timings and memory are not measured yet.

Known limits

  • Only what t.me/s/<channel> shows. Channels can switch the preview off at any time; then you get the error item.
  • Polls, documents and audio posts were not found in the sample pages we parsed, so those media types are not extracted. If a post consists only of an unsupported attachment, text is null and media is empty.
  • Telegram can change its preview markup. The parser is tested against saved real pages, so a change shows up as a failing test first.
  • Use it on public information and follow Telegram's terms and the laws that apply to you. Post text can contain personal data; you decide what you may do with it.