Telegram Channel Scraper · Posts, Views, Date Range
Pricing
Pay per event
Telegram Channel Scraper · Posts, Views, Date Range
Scrape public Telegram channels without an account or API key: post text, views, photos, videos, documents, forwards, replies. True server-side date filtering, a typed status for every channel (never a silent empty run), and $0 when nothing is returned.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Automation Craft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Scrape public Telegram channels — post text, views, photos, videos, documents, forwards, replies and channel stats — with no Telegram account, no API keys, no phone number. Pure HTTP against Telegram's own web preview, so it's fast and cheap.
Built specifically to fix the three things users of existing Telegram scrapers complain about the most:
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/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/supergroup — 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/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 — you don't 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–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 = $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-info 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, audio fields also included.)
Plus, per channel:
- channel-info item (optional): title, description, verified badge, subscriber/photo/video/link counts — as numbers and 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 (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/videos (isAlbum: true) — you're charged one post, not one per photo.
✅ CAN / ❌ CANNOT
✅ Public channels with web preview enabled (the vast majority) ✅ Post text (plain + HTML), dates, view counts, links ✅ Photos, video thumbnails + 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 ✅ Works with usernames, @names, or any t.me URL form
❌ Private channels or invite links (t.me/+…) — no web preview exists
❌ Channels whose owners disabled the web preview (reported as private_or_no_preview)
❌ Groups/supergroups — 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/reply threads under posts (the discussion group is separate)
❌ Full video/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.
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 |
Use cases
- OSINT & research — archive and analyze public channel activity over exact date ranges
- Brand & 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, forward patterns across channels
Fair pricing model
post— charged per delivered in-range postchannel-info— charged per info item, only when the channel also returned posts- Everything else — statuses, summaries, empty runs, failures — free
Up to 3 channels are scraped concurrently; pages within a channel are fetched sequentially and politely. 429/5xx responses are retried 3× with backoff.