Telegram Channel Scraper: Posts, Views, Dates
Pricing
from $0.40 / 1,000 posts
Telegram Channel Scraper: Posts, Views, Dates
Scrape public Telegram channels with no account, no phone number and no API key: post text, views, photos, video thumbnails, documents, forwards, replies and channel stats. The date filter seeks your window in the channel history, so you get and pay for in-range posts only. JSON, CSV, Excel, API.
Pricing
from $0.40 / 1,000 posts
Rating
0.0
(0)
Developer
Automation Craft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
Telegram Channel Scraper: Posts, Views, Dates
This Telegram channel scraper reads public Telegram channels (post text, views, photos, videos, documents, forwards, replies and channel stats) with no Telegram account, no API keys and no phone number. Pure HTTP against Telegram's own web preview, so it is fast and cheap.
It was built specifically to fix the three things users of existing Telegram scrapers complain about the most: silent empty runs, date filters that do not filter, and being billed for posts you did not want.
Quick start
- Put channel names in
channels. Usernames,@namesand anyt.meURL form all work and are normalized for you. - Optionally set
postsFromandpostsToto a UTC date window, andmaxPostsPerChannelto cap what you pay for. - Press Start. Every channel comes back with its posts plus a free typed status item, ready to export as JSON, CSV or Excel or to read over the Apify API.
Why this scraper
1. A typed status for every channel, never a silent empty run
Other scrapers "didn't scrape some of the publicly accessible channels I tested" and returned nothing without telling you why. Here, every channel you request gets a free channel-summary item with a typed status:
| Status | Meaning |
|---|---|
ok | Posts scraped successfully |
not_found | No such public username (banned or deleted channels look identical on the web) |
bot | The username is a bot, not a channel |
user | The username is a personal account |
group | The username is a group or supergroup, and Telegram exposes no web preview for message history |
private_or_no_preview | The channel exists, but its owner disabled the web preview |
no_posts_in_range | The channel is fine, it just has no posts inside your date window |
error | Network or HTTP failure, or invalid input reference (message included) |
You always know what happened and why, and none of these cost you anything.
2. True server-side date filtering, so you do not pay for out-of-range posts
Other scrapers' date filters are "totally not right" and charge you for piles of non-relevant messages. This actor seeks your date window directly in the channel history using Telegram's own ?before= pagination (an interpolated jump, typically 2 to 5 pages even for a years-old window in a huge channel), walks only the pages inside the window, and emits and charges only in-range posts. It never downloads everything and filters afterwards.
Each channel summary also tells you dateWindowFullyCovered: true/false, so you know whether you got the complete window or hit your cap first.
3. Zero results means $0
If a channel yields nothing (wrong name, bot, private, empty date window) you are charged nothing for it. Status items and run summaries are always free. The channel profile item is only charged when the channel also returned at least one post.
What you get
One dataset item per post:
{"type": "post","requestedChannel": "durov","channel": "durov","id": "519","postUrl": "https://t.me/durov/519","date": "2026-05-20T15:38:10+00:00","text": "🤖 Your Telegram inbox can now run itself.\n\nAssign a bot to read and reply for you — with granular control over its rights and chat access. 🧠\n\n⚙️ Start building!","links": ["https://core.telegram.org/bots/features#secretary-bots"],"views": 8620000,"viewsRaw": "8.62M","photos": [],"videos": [{ "thumbUrl": "https://cdn4.telesco.pe/file/…", "duration": "0:09" }],"documents": false,"poll": null,"forwardedFrom": null,"replyTo": null,"authorSignature": "Pavel Durov","isAlbum": false,"isServiceMessage": false,"edited": false}
(Real output from a live run against t.me/durov. textHtml, documentFiles, linkPreview, roundVideo and audio fields are also included.)
Plus, per channel:
- channel-info item (optional): title, description, verified badge, subscriber, photo, video and link counts, as numbers and as the raw strings (
9910000and"9.91M"). - channel-summary item (always, free): typed status, posts returned, date range covered,
dateWindowFullyCovered, pages fetched.
Field reliability (measured across 278 posts from 15 real channels)
Always populated: id, date (100%), views (99.6%), text (95%, empty for pure-media posts). Populated when the post contains that content: photos, videos, links, forwardedFrom, replyTo, documentFiles, authorSignature, edited, isAlbum. Best-effort: poll (the parser follows Telegram's widget markup but no live poll appeared in probed channels), roundVideo, audio.
Media albums: Telegram's web preview renders an album as one post with multiple entries in photos and videos (isAlbum: true), so you are charged one post, not one per photo.
✅ CAN / ❌ CANNOT
✅ Public channels with web preview enabled (the vast majority) ✅ Post text (plain and HTML), dates, view counts, links ✅ Photos, video thumbnails and durations, documents, audio flags ✅ Forward headers, reply quotes, author signatures, edited markers, service messages ✅ Channel metadata: title, description, subscribers, verified badge ✅ Date-range scraping that only bills in-range posts ✅ Usernames, @names, or any t.me URL form
❌ Private channels or invite links (t.me/+…), because no web preview exists
❌ Channels whose owners disabled the web preview (reported as private_or_no_preview)
❌ Groups and supergroups, because Telegram exposes no message history on the web (reported as group)
❌ Member lists, subscriber identities, or any personal user data
❌ Posting, joining, reacting: this is read-only public data
❌ Comment and reply threads under posts (the discussion group is separate)
❌ Full video or file downloads: you get URLs, thumbnails and metadata
Telegram may hide some channels from the web preview entirely. When that happens you get a typed status telling you so, not a silent empty run and not a bill.
How much does it cost to scrape Telegram channels?
You pay per delivered record, so a run costs exactly what it delivers. Statuses, summaries, empty runs and failures are free. Apify Store tiers take 10% off (Silver) or 20% off (Gold) every result event; the Actor start event is the same for everyone.
| Event | Free and Bronze | Silver (10% off) | Gold (20% off) |
|---|---|---|---|
| Actor Start | $0.005 | $0.005 | $0.005 |
| Post | $0.0005 | $0.00045 | $0.0004 |
| Channel profile | $0.002 | $0.0018 | $0.0016 |
At the Free and Bronze prices that is $0.50 per 1,000 in-range posts. Five channels with 50 posts each, channel profiles on, costs $0.005 plus $0.125 plus $0.01, so $0.14. Out-of-range posts, empty channels and failed channels are never charged, and the channel profile is charged only when the channel also returned posts.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
channels | array | ["telegram"] | Usernames, @names, or t.me URLs, all forms normalized |
postsFrom | date | Oldest post date, inclusive, UTC | |
postsTo | date | Newest post date, inclusive, UTC | |
maxPostsPerChannel | integer | 50 | Exact cap on charged posts per channel |
includeChannelInfo | boolean | true | One channel-info item per channel |
oldestFirst | boolean | false | Output order within a channel |
proxyConfiguration | object | Apify proxy | Datacenter proxy is sufficient |
Up to 3 channels are scraped concurrently; pages within a channel are fetched sequentially and politely. 429 and 5xx responses are retried 3 times with backoff.
Use cases
- OSINT and research: archive and analyze public channel activity over exact date ranges.
- Brand and crypto monitoring: track mentions, announcements and sentiment sources.
- News aggregation: pull breaking-news channels into your pipeline with views as a signal.
- Trend analysis: post frequency, view velocity and forward patterns across channels.
FAQ
Can I scrape a Telegram channel without an API key or an account?
Yes. This Actor needs no Telegram account, no phone number, no bot token and no API credentials. It reads Telegram's own public web preview over plain HTTP, which is why it is fast and cheap.
How do I scrape Telegram without a bot token or a phone login?
Just enter the channel names. Usernames, @names and t.me URLs are all accepted and normalized. Anything that is not a public channel with the web preview enabled comes back as a typed status (bot, user, group, private_or_no_preview) rather than as an error you have to guess at, and those statuses are free.
Can you scrape private Telegram channels or groups?
No. Private channels and invite links (t.me/+…) have no web preview, and Telegram exposes no message history on the web for groups or supergroups. Those come back as private_or_no_preview or group status items, at no charge. Member lists and personal user data are never collected.
How do I export a Telegram channel's posts for a date range?
Set postsFrom and postsTo (inclusive, UTC). The Actor seeks that window directly in the channel history with Telegram's own ?before= pagination instead of downloading everything and filtering afterwards, so only in-range posts are delivered and charged. The channel summary reports dateWindowFullyCovered so you know whether the whole window was covered or your cap stopped it first.
Is scraping public Telegram channels legal?
This Actor reads only what Telegram publishes openly on its web preview, with no account and nothing behind authentication, and it never collects member lists or personal user data. You are responsible for making sure your use complies with your local regulations and with Telegram's terms.
Can I get subscriber counts and view counts for a channel?
Yes. Every post carries views as a number and viewsRaw as the string Telegram displays. With includeChannelInfo on, each channel also returns a profile item with title, description, verified badge and subscriber, photo, video and link counts, again as both numbers and raw strings.
Why does this Actor run with limited permissions?
Least privilege. The Actor only reads and writes its own storages: the run's dataset and key-value store. It needs no other access to your account, and it never signs in to Telegram.
More data tools by Automation Craft
- Substack Scraper: Posts, Notes and Profiles for newsletters, Notes and author profiles.
- Meta Ad Library Scraper - All Placements, Filters for ads across every Meta placement.
- Facebook Ads Library Scraper - Page Ads, No Login for a page's live and past ads.
- Instagram Ads Library Scraper - Creatives, Video for Instagram creatives and video ads.
- Google Trends Scraper - Compare and Trending Now for the search demand behind a story.
- G2 Reviews Scraper: Ratings, Pros and Cons for software reviews without blocked runs.