Telegram Channel Scraper: Posts, Views, Dates avatar

Telegram Channel Scraper: Posts, Views, Dates

Pricing

from $0.40 / 1,000 posts

Go to Apify Store
Telegram Channel Scraper: Posts, Views, Dates

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

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

11 days ago

Last modified

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

  1. Put channel names in channels. Usernames, @names and any t.me URL form all work and are normalized for you.
  2. Optionally set postsFrom and postsTo to a UTC date window, and maxPostsPerChannel to cap what you pay for.
  3. 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:

StatusMeaning
okPosts scraped successfully
not_foundNo such public username (banned or deleted channels look identical on the web)
botThe username is a bot, not a channel
userThe username is a personal account
groupThe username is a group or supergroup, and Telegram exposes no web preview for message history
private_or_no_previewThe channel exists, but its owner disabled the web preview
no_posts_in_rangeThe channel is fine, it just has no posts inside your date window
errorNetwork 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 (9910000 and "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.

EventFree and BronzeSilver (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

FieldTypeDefaultNotes
channelsarray["telegram"]Usernames, @names, or t.me URLs, all forms normalized
postsFromdateOldest post date, inclusive, UTC
postsTodateNewest post date, inclusive, UTC
maxPostsPerChannelinteger50Exact cap on charged posts per channel
includeChannelInfobooleantrueOne channel-info item per channel
oldestFirstbooleanfalseOutput order within a channel
proxyConfigurationobjectApify proxyDatacenter 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.

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