Telegram Channel Scraper — Public Posts, No Login, $0.5/1k
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Features
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 thanmaxPosts. 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).viewsNumberis 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,
urlisnullandpostUrllinks 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
| Field | What it does |
|---|---|
channels | One 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. |
maxPosts | Posts 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
linksandlinkPreviewfields 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.