Telegram Channel Scraper (No Login)
Pricing
from $1.00 / 1,000 messages
Telegram Channel Scraper (No Login)
Scrape public Telegram channels without login or API keys: messages, views, reactions, media, links, forwards and channel subscribers. Filter by keyword and date.
Pricing
from $1.00 / 1,000 messages
Rating
0.0
(0)
Developer
Smoldesk Studios
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Telegram Channel Scraper – Messages, Views, Reactions & Subscribers
Scrape public Telegram channels without a Telegram account, phone number or API keys (no api_id / api_hash, no Telethon session). Get every message with its views, reactions, photos, videos, links, forwards and hashtags, plus channel info like subscriber count and verified badge.
Filter by keyword and date range, scrape many channels in parallel, and export the channel to JSON, CSV, Excel or via API. Schedule it to monitor channels for new posts.
What you can use it for
- Crypto & trading signal tracking: collect every call from signal channels with timestamps for backtesting.
- Brand & competitor monitoring: track what channels in your niche post and which posts get the most views and reactions.
- News & research: archive channels for media analysis, OSINT research or academic datasets.
- Lead generation & influencer research: compare channels by subscribers and engagement before buying ads.
- AI / LLM pipelines: feed clean message text into summarisation, sentiment or RAG workflows.
How to scrape a Telegram channel
- Create a free Apify account (no credit card needed to start) and open this Actor.
- Add channels. Paste public channel links or @usernames (one per line) in Channels. Private channels and groups you must join are not available.
- Set the limits. Max messages per channel is how many of the newest messages to read. Use Messages newer than / older than to cut a period, or Keyword search to read only matching messages.
- Choose extras. Leave Include channel info on to also get subscribers, description and photo count.
- Click Start. Results appear in the Output tab while it runs.
- Download or connect. Export as JSON, CSV, Excel or HTML, or read the dataset through the API, Make, Zapier, n8n, Google Sheets or a webhook.
- Automate it. Open Schedules, add a daily schedule and set Messages newer than to yesterday to build a running archive of a channel.
Tips
- Channels must be public, with a preview at t.me/s/
- Use Keyword search to track a brand or ticker inside a channel without reading everything.
- Raise Delay between pages if you scrape many channels in one run.
Why this scraper
- ✅ No login, no phone number, no ban risk to your account: it only reads Telegram's public web preview (
t.me/s/<channel>). - ✅ Rich data: views, per-emoji reactions (including paid ⭐ Stars reactions), media URLs, link previews, polls, forwards, replies, hashtags.
- ✅ Full history: paginates back through the whole channel, or stops at your date.
- ✅ Fast & cheap: plain HTTP, no browser. Hundreds of messages in seconds.
- ✅ Pay only for results: you are charged per message returned, nothing for failed or skipped channels.
Input
| Field | Description |
|---|---|
channels | Usernames or links: durov, @durov, https://t.me/durov |
maxMessagesPerChannel | Newest first. 0 = whole history |
searchQuery | Keyword or #hashtag, using Telegram's in-channel search |
dateFrom / dateTo | Only messages within this range |
includeChannelInfo | Add one item per channel with title, description and subscribers |
{"channels": ["durov", "https://t.me/telegram"],"maxMessagesPerChannel": 500,"dateFrom": "2026-01-01","searchQuery": "update"}
Output
Each message:
{"type": "message","channel": "durov","messageId": 531,"url": "https://t.me/durov/531","date": "2026-07-16T20:45:25+00:00","text": "Telegram now has a Rich Text Editor...","views": 5800000,"reactions": [{"emoji": null, "customEmojiId": "5265077361648368841", "paidStars": false, "count": 54600}],"totalReactions": 95000,"photos": [],"videos": ["https://cdn4.telesco.pe/file/....mp4"],"links": [],"hashtags": [],"forwardedFrom": null,"linkPreview": null,"channelTitle": "Pavel Durov","channelSubscribers": 10400000,"scrapedAt": "2026-10-14T03:00:00+00:00"}
Each channel (when includeChannelInfo is on):
{"type": "channel","channel": "durov","title": "Pavel Durov","description": "Founder of Telegram.","verified": true,"subscribers": 10400000,"photos": 102,"videos": 47,"links": 200}
Pricing
Pay per result, no monthly rental:
| Event | Price |
|---|---|
| Message | $1.00 per 1,000 messages |
Channel info (only when includeChannelInfo is on) | $2.00 per 1,000 channels |
Example: the last 500 posts from 10 channels (5,000 messages) cost $5. Set "Maximum cost per run" in the run options to stay within budget. The scraper stops cleanly when the limit is reached and never charges for messages it doesn't return.
Use with AI (LangChain / LlamaIndex / CrewAI)
Each message's text field is clean plain text, so channels drop straight into summarisation, sentiment or RAG pipelines. With LangChain (pip install langchain-apify):
from langchain_apify import ApifyWrapperfrom langchain_core.documents import Documentapify = ApifyWrapper() # reads APIFY_API_TOKENloader = apify.call_actor(actor_id="smoldesk/telegram-channel-scraper",run_input={"channels": ["durov", "telegram"], "maxMessagesPerChannel": 100},dataset_mapping_function=lambda m: Document(page_content=m.get("text") or "",metadata={k: m.get(k) for k in ("url", "channel", "date", "views", "totalReactions")},),)docs = loader.load()
Already have a run? Load its dataset with ApifyDatasetLoader(dataset_id="<run's dataset ID>", dataset_mapping_function=...). LlamaIndex: ApifyActor from llama-index-readers-apify. CrewAI / Claude / MCP clients: add it as a tool via the Apify MCP server: https://mcp.apify.com?actors=smoldesk/telegram-channel-scraper.
Limitations
- Only public channels that have web preview enabled. Private channels, groups and user chats are not accessible (by design).
- Counts are as Telegram displays them (e.g.
10.4M→10400000), so large numbers are rounded. - Video URLs from Telegram's CDN are temporary; download them soon after scraping.
FAQ
Do I need a Telegram API key or phone number? No. Unlike Telethon or Pyrogram scripts, there is no api_id, api_hash, phone login or session file. Your Telegram account can't get banned because none is used.
Can it scrape private channels or groups? No. Only public channels with web preview (t.me/s/<channel>) are supported.
Do I need proxies? No. It works without a proxy.
How do I monitor a channel for new posts? Schedule the Actor (e.g. hourly) with dateFrom set to a recent date or a small maxMessagesPerChannel, and send results to Slack, Google Sheets or a webhook with Apify integrations.
Is it legal? This Actor only collects data that Telegram publishes openly on the web to anyone, without logging in. You are responsible for how you use the data. Respect privacy laws (e.g. GDPR) and Telegram's terms, and don't use personal data for spam.
Feedback
Found a bug or missing a field? Open an issue in the Issues tab. If the Actor saved you time, a short review on this page helps other people find it.
More Actors from Smoldesk Studios
- Weibo Scraper: keyword and hashtag search, posts, comments, profiles and the hot-search board from China's biggest microblog, no login
- Google Hotels Scraper: hotel prices for your dates in any currency, ratings, review aspects and booking-site prices, worldwide
- Bilibili Scraper: videos, danmaku, comments and creator stats from China's YouTube (哔哩哔哩)
- Google Trends Scraper: interest over time, by region and city, related queries and Trending now — no API key
- Substack Scraper: newsletters, subscriber counts and posts
- Shopify Store Analyzer: apps, contacts and products of any Shopify store
- SEEK, JobStreet & JobsDB Scraper: jobs and salaries across Australia and Southeast Asia
- Career Site Jobs Scraper: live jobs from 13,000+ company career sites (Greenhouse, Lever, Workday, Ashby) with salary and seniority