Telegram Channel Scraper (posts, views, reactions, no login) avatar

Telegram Channel Scraper (posts, views, reactions, no login)

Pricing

from $0.60 / 1,000 channel posts

Go to Apify Store
Telegram Channel Scraper (posts, views, reactions, no login)

Telegram Channel Scraper (posts, views, reactions, no login)

Scrape posts from any public Telegram channel without login or API keys: text, date, views, reactions, links, photos, video, link previews and forwards, plus channel title and subscribers. Keyword search inside channels and date filters. Pay only per post delivered.

Pricing

from $0.60 / 1,000 channel posts

Rating

0.0

(0)

Developer

ScrapeMole

ScrapeMole

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Telegram Channel Scraper: posts, views, reactions, no login

Scrape posts from any public Telegram channel without a Telegram account, phone number or API keys. Every row has the post text, date, view count, reactions, links, photos, video, link preview, forwards and post URL, plus the channel title, description and subscriber count. Filter by date or keywords, and export to JSON, CSV, Excel or Google Sheets, or call it from Python, n8n, Make, Zapier or an AI agent.

You only pay per post delivered. Private channels, groups, users, bots, invite links and channels that don't exist come back as clear error rows and are never charged.

Why this Telegram scraper is simple and reliable

  • No login, no session files, no ban risk. It reads Telegram's own public web preview (t.me/s/<channel>), the same page anyone can open in a browser. You don't need a Telegram account and nothing can get banned.
  • Pages back through the whole history, newest first, until your post limit or date limit. In our tests: 300 of 300 posts from one channel in 11 seconds.
  • Keyword filtering across the full history, charged only for matching posts. Telegram's own in-channel search only covers a recent window; the Keywords option scans as deep as you let it (default 3,000 posts per channel) and you pay only for the posts that match.
  • Date filter that stops early. "Only posts newer than 7 days" (or a date) stops paging at the first older post, so you don't pay for or wait on old history.
  • Rich, clean fields: view counts as numbers ("10.4M" becomes 10400000), reactions with counts (including Telegram Stars and custom emoji), photo URLs, video flags and duration, link previews, forwarded-from, reply-to, hashtags, and the edited flag.
  • Clear errors, never silent empty runs: NOT_FOUND (not a public channel), NO_DATA (no posts in the chosen period / no keyword matches), INVALID_INPUT.

Live tests, 19 Oct 2026 (real Telegram, cloud server, no proxy): see Test results.

What you get

FieldDescription
postId, postUrl, date, isEditedPost ID, t.me link, ISO date-time (UTC)
text, hashtags, linksPlain text (e-mails redacted), hashtags and every outbound link
views, viewsTextView count as a number and as shown
reactions, reactionsTotal[{ emoji, count }], Telegram Stars (isPaidStars) and custom emoji (customEmojiId)
photos, hasVideo, videoDurationText, videoThumbnailUrl, hasDocument, hasPoll, hasSticker, hasVoiceMedia
linkPreview{ url, siteName, title, description }
forwardedFrom, replyToPostIdWhere it was forwarded from, and which post it replies to
channelUsername, channelTitle, channelDescription, channelSubscribers, channelIsVerified, channelPhotos, channelVideos, channelLinks, channelUrlChannel info on every row (free; can be turned off)
matchedKeywordsWhich of your keywords matched (when using Keywords)

How to scrape a Telegram channel

  1. Add one or more channels: durov, @durov or https://t.me/durov all work.
  2. Set Max posts per channel, and optionally Only posts newer than (e.g. 7 days or 2026-10-01) or Keywords.
  3. Click Start and download the posts as JSON, CSV or Excel, or read them through the API.

Input example

{
"channels": ["durov", "https://t.me/bloomberg", "@cointelegraph"],
"maxPostsPerChannel": 200,
"onlyPostsNewerThan": "30 days",
"keywords": ["bitcoin", "ETF"]
}

Output example

{
"status": "ok",
"channelUsername": "bloomberg",
"channelTitle": "Bloomberg",
"channelDescription": "The first word in business news.",
"channelSubscribers": 185000,
"channelIsVerified": true,
"channelUrl": "https://t.me/bloomberg",
"postId": 3225,
"postUrl": "https://t.me/bloomberg/3225",
"date": "2026-09-22T03:26:17+00:00",
"isEdited": false,
"text": "Alibaba unveils new AI chip it says is China's most powerful and targets 20 gigawatts of data center capacity by 2032. https://bloom.bg/4ydroys",
"views": 52500,
"viewsText": "52.5K",
"reactions": [{ "emoji": "❤", "count": 147 }, { "emoji": "🔥", "count": 131 }, { "emoji": "👍", "count": 101 }],
"reactionsTotal": 574,
"hashtags": [],
"links": ["https://bloom.bg/4ydroys"],
"photos": ["https://cdn5.telesco.pe/file/...jpg"],
"hasVideo": false,
"linkPreview": null,
"forwardedFrom": null,
"replyToPostId": null
}

Pricing

Pay per post. Proxy and platform costs are included, with no start fee. Pages read while looking for keyword matches are free.

Apify planPrice per post1,000 posts
Free$0.0015$1.50
Starter (Bronze)$0.001$1.00
Scale (Silver)$0.0008$0.80
Business (Gold)$0.0006$0.60

Set Max cost per run and the Actor stops cleanly when it reaches it.

Use cases

  • Crypto and trading signals: monitor project announcement channels, whale alerts and news channels; feed posts to your bot or LLM.
  • News and media monitoring: track what news outlets and official channels publish, with views and reactions as reach signals.
  • Brand and competitor monitoring: keyword alerts across many channels (schedule it hourly or daily with a date filter).
  • Research and OSINT on public channels: archive public posts with dates, links and engagement.
  • AI datasets and RAG: clean channel text with metadata.

API, Python and AI agents

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("scrapemole/telegram-channel-scraper").call(run_input={
"channels": ["durov", "telegram"], "maxPostsPerChannel": 50, "onlyPostsNewerThan": "7 days"
})
for p in client.dataset(run["defaultDatasetId"]).iterate_items():
print(p.get("date"), p.get("views"), (p.get("text") or p.get("errorMessage") or "")[:120])

Works with n8n, Make, Zapier, LangChain and the Apify MCP server, so AI agents can read Telegram channels on their own.

Test results

Live tests on 2026-10-19 against real Telegram from a cloud server with no proxy: 9 runs over 8 public channels (news, crypto, tech and official Telegram channels), with date, keyword and in-channel search options.

MetricResult
Runs finished OK9/9
Posts delivered925
Duplicate posts0
Posts older than the date filter0
Posts with date and views100%
BillingCharged exactly once per post delivered
Edge casesbot, non-existent channel, invite link and too-short name (not charged), empty input, budget cap stops at exactly 7 of 100: all pass
Resume after a mid-history outage (mock test: page 2 down for the whole first pass)resumed, 35/35 posts, 0 duplicates, charged 35
Blocks0

FAQ

Which channels work? Public broadcast channels with the web preview enabled (almost all public channels). Private channels, invite links (t.me/+...), groups, users and bots don't have a public preview and return NOT_FOUND / INVALID_INPUT, not charged.

Can it scrape group chats or members? No. It only reads public channel posts, never members, phone numbers or private chats.

Who wrote a post? Channel posts are published by the channel, so you get the channel name. Admin signatures are not collected.

What's the difference between "Search inside channels" and "Keywords"? Search inside channels uses Telegram's own search: fast, but it only covers a recent window. Keywords pages through the full history (up to Max posts to scan) and keeps posts containing any of your words. You pay only for matches either way.

Can I download videos and files? You get photo URLs, video thumbnails and flags. Full video and file downloads aren't included.

Is it legal? The Actor only reads content that Telegram publishes openly on the web for public channels. Respect Telegram's terms, copyright and applicable law when you reuse it.

Found a problem? Open an issue with the run link. Each run stores a RUN_SUMMARY (requests, retries, errors) to help debug it.

More from ScrapeMole

ScrapeMole builds focused, reliable scrapers for public data: pay per result, no start fees, clear error rows that are never charged, and a RUN_SUMMARY on every run.

Website and docs: scrapemole.pages.dev. Questions or a missing field? Open an issue on this Actor.