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

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

Pricing

from $0.50 / 1,000 message scrapeds

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

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

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

Pricing

from $0.50 / 1,000 message scrapeds

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

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: $1.50 per 1,000 posts ($0.0015 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 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}'

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.