Telegram Channel Scraper — Public Posts, No Login, $0.5/1k avatar

Telegram Channel Scraper — Public Posts, No Login, $0.5/1k

Pricing

Pay per event

Go to Apify Store
Telegram Channel Scraper — Public Posts, No Login, $0.5/1k

Telegram Channel Scraper — Public Posts, No Login, $0.5/1k

Scrape public Telegram channel posts: text, views, dates, media links. $0.0005/message, no login, no proxy. Recent-history preview pages only.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Mohammed Samaan

Mohammed Samaan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Features

Limited permissions

Share

Telegram Channel Scraper (Public Preview, No Account Needed)

Give it public Telegram channels. It returns their recent posts: text, views, date, photo and video links, link previews, forwarded-from, reply link. It reads the public web preview that Telegram serves at t.me/s/<channel>, with plain HTTP. No Telegram account, no login, no cookies, no browser, no proxy.

Price: $0.50 per 1,000 posts ($0.0005 each) plus $0.001 per run start. You are charged only for posts actually returned. Channels that cannot be read (not found, preview disabled, fetch error) and invalid inputs come back as a row with an error field and are not charged.

Limits, stated plainly

  • Public preview only. This is what Telegram shows on the web without an account. It is not the Telegram API.
  • Recent history. The scraper walks backwards through the preview with ?before=<id>. How far back it goes is decided by Telegram, not by this actor; you may get fewer posts than maxPosts. The run log shows how many were returned per channel.
  • Channels can disable the preview. Those, plus channels that do not exist, look the same from outside. Both come back as one error row ("does not exist, is private, or has the web preview disabled").
  • No private channels or groups. Invite links (t.me/+..., t.me/c/...) are rejected.
  • No members, no subscriber lists, no comments or replies threads, no reactions. Not implemented.
  • Views are as Telegram shows them (for example 1.52M). viewsNumber is that text converted to a number, so it is rounded the same way.
  • Video files: the preview only exposes a direct video URL for some videos. When it does not, url is null and postUrl links to the post.
  • Posts with no text (media only) are returned with text: null.
  • Telegram can rate-limit. The actor retries a failed page up to 3 times, then stops that channel and reports the error. Posts already returned stay in the dataset.
  • Media URLs and video tokens come from Telegram's CDN and may expire. Download what you need soon after the run.

Input

FieldWhat it does
channelsOne per line: @name, name, or a t.me link (https://t.me/s/telegram, t.me/telegram/441). Up to 100 per run. Duplicates are removed.
maxPostsPosts per channel, 1 to 5,000 (default 100). Newest first.

Bad input fails the run with a clear message; a single bad entry among good ones becomes an error row.

Output

One row per post, newest first within each channel:

{
"channel": "telegram",
"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 ...",
"views": "1.68M",
"viewsNumber": 1680000,
"edited": false,
"forwardedFrom": null,
"forwardedFromUrl": null,
"replyToUrl": null,
"media": [],
"linkPreview": {
"url": "https://telegram.org/blog/welcome-messages-buttons-TG-13",
"siteName": "Telegram",
"title": "Welcome Messages, Buttons in Messages and Signed Gifts",
"description": "Introducing Welcome Messages ..."
},
"links": ["https://telegram.org/blog/welcome-messages-buttons-TG-13"],
"channelTitle": "Telegram News",
"error": null
}

media items are { "type": "photo" | "video" | "round-video" | "audio", "url", "thumbnail" (video only), "postUrl" }. Rows for channels that failed look like { "channel": "...", "postId": null, "error": "..." }.

Use cases

  • Channel monitoring: pull the latest public posts from a list of channels into your own sheet or database.
  • Link and mention tracking: the links and linkPreview fields show which sites a channel shares.
  • Content research: compare view counts (viewsNumber) across posts of public channels.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/leadharbor~telegram-channel-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channels":["telegram","durov"],"maxPosts":50}'

FAQ

What do I pay for? $0.0005 per post returned, plus $0.001 per run start. Error rows and invalid inputs are not charged.

Why did I get fewer posts than maxPosts? Telegram decides how far back its public preview goes. The actor stops when the preview has no older page.

Can it read private channels or groups? No. Invite links are rejected, and a channel with its web preview disabled returns an error row.

Does it need a Telegram account or proxy? No. It reads the public t.me/s/<channel> page with plain HTTP.

Do media links last? Not necessarily. They come from Telegram's CDN and may expire, so download what you need soon after the run.

Good to know

  • Only data that Telegram shows publicly without an account is read. Check the rules that apply to you (privacy law, Telegram's terms) before processing personal data in posts.