Telegram Channel Messages Scraper — Views, Media & OSINT
Pricing
from $5,000.00 / 1,000 1,000 messages extracteds
Telegram Channel Messages Scraper — Views, Media & OSINT
Scrape public Telegram channels with no API key: messages, view counts, reactions, media URLs and channel analytics. Messaging data for OSINT, crypto signal tracking and brand monitoring. An optional Telethon mode adds groups and member lists with your own credentials.
Pricing
from $5,000.00 / 1,000 1,000 messages extracteds
Rating
0.0
(0)
Developer
Sami
Maintained by CommunityActor stats
1
Bookmarked
59
Total users
6
Monthly active users
10 days ago
Last modified
Categories
Share
Telegram Channel & Group Scraper
Extract messages, reactions, media metadata, and member data from any public Telegram channel or group. No login required for basic scraping.
What is Telegram Channel & Group Scraper?
This Apify Actor scrapes public Telegram channels and groups, extracting messages with full metadata including view counts, reactions (emoji + counts), media URLs, forwarded message info, hashtags, mentions, and channel statistics.
It supports two scraping modes:
- Web Preview (default): Zero-friction, no credentials needed. Uses Telegram's public
t.me/s/endpoint. - Telethon API: Full access with your Telegram API credentials — complete message history (10,000+), member lists, and more.
Telegram API alternative — no login required
Looking for a Telegram scraper that works without API credentials? This Actor's default mode (Web Preview) requires zero setup — no API key, no phone number, no login. Just paste channel URLs and get structured data.
For power users who need full message history (10,000+) and member lists, the Telethon API mode provides complete access with your own Telegram API credentials.
Features at a glance
| Feature | This Actor |
|---|---|
| No login needed | Yes (Web Preview mode) |
| Reactions data | Yes |
| Media metadata | Yes |
| Messages limit | 10,000+ |
| Member extraction | Yes (optional, Telethon mode) |
| Date filtering | Yes |
| Multi-channel | Yes |
Quick Start
Step 1: Paste channel URLs
{"channels": ["https://t.me/durov","t.me/techcrunch","coindesk"]}
Step 2: Click Run
The actor accepts full URLs, short URLs, or just the channel username. All formats work.
Step 3: Download Results
Export to JSON, CSV, Excel, or connect via API. Each message is an individual row for easy analysis.
⏰ Turn it into a monitor: only NEW messages (delta mode)
Most of this Actor's value is in watching channels, not pulling them once. Turn on deltaMode and every run returns only messages posted since the previous run of that stream. Billing stays per channel in started blocks of 1,000 messages: a channel with 1-1,000 new messages bills one $5.00 block plus the channel fee ($0.02 web preview, $0.05 Telethon); a channel with no new messages costs nothing.
{"channels": ["durov", "coindesk"],"maxMessagesPerChannel": 1000,"deltaMode": true,"deltaStateKey": "crypto-alpha"}
How it behaves
- First run returns the current history and sets the baseline (per channel).
- Every run after that returns only genuinely new messages — already-seen ones are skipped and not returned.
- A quiet channel costs nothing: if nothing new was posted, nothing is pushed and no scrape event is billed.
Then attach a schedule — Apify Console → Schedules → Create, pick this Actor and your saved input, and set a cron (0 * * * * hourly, 0 8 * * * daily at 8am). You now have a hands-off "what's new in these channels" feed that grows a timestamped archive you own.
💡
deltaStateKeynames an independent stream, so several monitors never collide — e.g.crypto-alphafor signal channels andtipstersfor betting channels, each tracked separately even if they share channels. Delta works in both modes (web preview and Telethon API); member lists are snapshots and are not delta-filtered.
Use Cases
- OSINT & Intelligence: Monitor public channels for threat intelligence, track disinformation, and analyze information operations.
- Marketing & Competitive Analysis: Analyze competitor community engagement, content strategy, and audience reactions.
- Crypto & Web3 Research: Track token launches, monitor signal channels, and measure community sentiment across crypto groups.
- Compliance & Archival: Archive channel history for regulatory requirements, legal discovery, or organizational record-keeping.
- Academic Research: Collect data for studies on online communities, information spread, and public discourse patterns.
Two Scraping Modes
Mode 1: Web Preview (Default — No Login)
Uses Telegram's public web preview at t.me/s/. Perfect for quick data collection without any setup.
- No credentials needed — works out of the box
- Public channels only — channels must have web preview enabled
- Full channel history — the public preview paginates all the way back, 20 messages per page, no API key
- Extracts: text, HTML, views, reactions, media URLs, forwards, replies, links, hashtags, mentions
Mode 2: Telethon API (Full Access)
Uses Telegram's official API via the Telethon library. Unlocks complete channel data.
- Requires API credentials — api_id + api_hash from my.telegram.org
- Full message history — up to 10,000+ messages per channel
- Member extraction — optional, requires appropriate permissions
- Bot token support — use a Bot Token from @BotFather as an alternative
How to Get API Credentials
- Go to my.telegram.org
- Log in with your phone number
- Create a new application (or use an existing one)
- Copy the API ID (number) and API Hash (string)
How to Generate a Session String
Run this Python script locally (one time only):
from telethon.sync import TelegramClientfrom telethon.sessions import StringSessionapi_id = 12345 # Your API IDapi_hash = "abc123" # Your API Hashwith TelegramClient(StringSession(), api_id, api_hash) as client:print("Your session string:")print(client.session.save())
This will prompt you for your phone number and a verification code. Copy the output string and paste it into the actor's sessionString input field.
Using a Bot Token Instead
If you only need to read public channel messages (no member lists), you can use a Bot Token:
- Message @BotFather on Telegram
- Create a new bot with
/newbot - Copy the token and paste it into the
botTokeninput field - Add your bot to the channel as an admin (or the channel must be public)
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
channels | array | Yes | — | Telegram channel URLs or usernames |
mode | string | No | web_preview | web_preview or telethon_api |
maxMessagesPerChannel | integer | No | 1000 | Max messages per channel (up to 10,000). Billing is per started 1,000-message block, so asking for fewer than 1,000 costs the same and returns less. |
deltaMode | boolean | No | false | Recurring monitor: return ONLY messages posted since the previous run of this stream. First run sets the baseline; a quiet channel costs nothing, and a channel with any new message bills one $5.00 block. Works in both modes. |
deltaStateKey | string | No | default | Names an independent delta stream so multiple monitors don't collide (e.g. crypto-alpha vs tipsters). Only used when deltaMode is on. |
extractMedia | boolean | No | true | Include media metadata in output |
extractReactions | boolean | No | true | Include reaction counts |
extractMemberData | boolean | No | false | Extract member list (Telethon only) |
dateFrom | string | No | — | Only messages after this date (ISO format) |
dateTo | string | No | — | Only messages before this date (ISO format) |
apiId | integer | No | — | Telegram API ID (Telethon only) |
apiHash | string | No | — | Telegram API Hash (Telethon only, secret) |
sessionString | string | No | — | Pre-generated session string (Telethon only, secret) |
botToken | string | No | — | Bot Token from @BotFather (Telethon only, secret) |
Input Example
Web Preview Mode (No Login)
{"channels": ["https://t.me/durov","coindesk"],"mode": "web_preview","maxMessagesPerChannel": 200,"extractMedia": true,"extractReactions": true,"dateFrom": "2026-01-01"}
Telethon API Mode (Full Access)
{"channels": ["https://t.me/durov"],"mode": "telethon_api","maxMessagesPerChannel": 5000,"apiId": 12345,"apiHash": "your_api_hash_here","sessionString": "your_session_string_here","extractMemberData": false}
Output Example
Each message is stored as an individual item in the dataset:
{"id": 350,"date": "2026-04-05T18:30:00+00:00","text": "Today we're launching a new feature...","text_html": "Today we're launching a <b>new feature</b>...","views": 2100000,"views_display": "2.1M","author": null,"forwarded_from_name": null,"forwarded_from_url": null,"reply_to_message_id": null,"media_type": "photo","media_url": "https://cdn4.telesco.pe/file/...","reactions": [{ "emoji": "\ud83d\udc4d", "count": 42000 },{ "emoji": "\u2764\ufe0f", "count": 15000 }],"reactions_total": 57000,"links": ["https://telegram.org/blog/new-feature"],"hashtags": ["#telegram"],"mentions": null,"message_url": "https://t.me/durov/350","channel_name": "Durov's Channel","channel_username": "durov","channel_url": "https://t.me/durov","channel_subscribers": 10300000,"channel_verified": true,"scrape_mode": "web_preview","scraped_at": "2026-04-12T15:00:00+00:00"}
Pricing
This actor uses Pay Per Event pricing.
| Event | Price |
|---|---|
| Actor run started | $0.00005 (per GB of memory, minimum 1 event) |
| Channel scraped (web preview) | $0.02 per channel |
| Channel scraped (Telethon API) | $0.05 per channel |
| 1,000 messages extracted | $5.00 |
| 1,000 members extracted | $1.00 |
Cost Examples
Shown at the $5.00 / 1,000 messages rate. Messages are billed per channel in blocks of 1,000, rounded up — a channel that returns 100 messages still bills one full 1,000-message block, so scraping many small channels costs more than the raw message count suggests. The practical consequence: leave maxMessagesPerChannel at 1,000 or higher. Asking for 100 costs exactly the same $5 as asking for 1,000 — the default is set to 1,000 for that reason, and the public preview really does paginate that deep (measured: 11 years of history in one run).
| Scenario | Cost |
|---|---|
| 5 channels, 100 messages each (web preview) | ~$25.10 |
| 1 channel, 5,000 messages (Telethon) | ~$25.06 |
| 10 channels, 200 messages each (web preview) | ~$50.20 |
| 1 channel, 1,000 messages + members (Telethon) | ~$6.06 |
With deltaMode on, a channel with nothing new in a run charges nothing — not even the per-channel event. A channel with 1-1,000 new messages still bills one $5.00 block plus the channel fee ($0.02 web preview, $0.05 Telethon), so delta saves money only on runs where a channel posted nothing.
No compute or proxy charges — you pay only the listed events.
How to Scrape Telegram Channels
Scraping Telegram channels for data analysis, research, or monitoring is straightforward with this actor:
- Find the channel: Navigate to the Telegram channel in your browser or app. The URL format is
t.me/channelname. - Configure the actor: Paste the channel URL(s) into the input. Choose your scraping mode and set the message limit.
- Run the actor: Click "Start" on Apify. The actor handles pagination, rate limiting, and error recovery automatically.
- Export your data: Download results as JSON, CSV, or Excel. Or connect via API for automated pipelines.
The actor automatically handles:
- Rate limiting with exponential backoff
- Pagination to collect all available messages
- Private/non-existent channel detection
- Multiple input formats (URLs, usernames, with/without @)
Integration Examples
Python SDK
from apify_client import ApifyClientclient = ApifyClient("your_api_token")run = client.actor("zhorex/telegram-channel-scraper").call(run_input={"channels": ["https://t.me/durov"],"maxMessagesPerChannel": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['date']}: {item['text'][:80]}")
cURL
curl "https://api.apify.com/v2/acts/zhorex~telegram-channel-scraper/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"channels": ["durov"], "maxMessagesPerChannel": 50}'
Webhook / n8n Integration
Set up an Apify webhook to trigger when the actor finishes, then process results in n8n, Zapier, or any automation tool.
FAQ
Does this require a Telegram API key?
No (for web preview mode). The default mode uses Telegram's public web preview at t.me/s/ which requires no authentication. For Telethon mode, you need API credentials from my.telegram.org.
Can I scrape private channels?
Only with Telethon mode if you are a member of the channel. Web preview mode only works with public channels that have web preview enabled.
What about rate limits?
The actor handles rate limits automatically. Web preview mode uses a 2-second delay between requests. Telethon mode handles Telegram's FloodWaitError with automatic sleep and retry. You should never see rate limit errors in your results.
Is this GDPR compliant?
The actor extracts publicly available data. When extracting member data (Telethon mode), ensure you have a legitimate legal basis under GDPR or applicable data protection laws. Member data extraction is disabled by default.
What formats can I export?
Apify supports JSON, CSV, Excel (XLSX), and XML. You can also access data via the Apify API, integrate with Google Sheets, or connect to 2,000+ apps via webhooks.
Why do I need a phone number for Telethon mode?
Telegram's API requires phone-based authentication. You generate a session string once locally, then use it in the actor. The actor never stores or transmits your phone number.
What's the maximum number of messages?
Web preview mode reads the FULL channel history with no API key — Telegram's ?before= pagination gives random access anywhere in the archive (measured 2026-08-27: 22 consecutive pages, no rate limit, no login). Raise maxMessagesPerChannel for deep backfills; the run simply takes longer. Telethon mode, with your own credentials, adds member data, groups, and the channels that switch their public preview off entirely.
Is there a free Telegram scraper?
This one is not free: the first 1,000-message block of a channel costs $5.00, so a free plan's $5 monthly credit does not cover a full channel. Web preview mode costs $0.02 per channel plus $5.00 per started block of 1,000 messages per channel.
How much does it cost to scrape Telegram channels?
$5.00 per started block of 1,000 messages per channel, plus $0.02 (web preview) or $0.05 (Telethon) per channel: ~$5.02 per channel for up to 1,000 messages in web preview, ~$5.05 in Telethon. A channel that returns 100 messages still bills one full block.
Can I use this Telegram scraper in Python?
Yes. Use the Apify Python client (pip install apify-client) to call this Actor programmatically. See the Python SDK example above.
Is scraping Telegram legal?
This Actor accesses publicly available data through Telegram's public web preview (t.me/s/) and official Telegram API. No authentication is bypassed and no private data is accessed without authorization. Always consult legal counsel for your specific use case.
What does this Telegram scraper cover?
This Actor has two scraping modes (web preview + Telethon API). It supports reactions, media metadata, date filtering, and multi-channel scraping.
Other scrapers by Zhorex
Chinese Social Intelligence Suite:
- RedNote Xiaohongshu Scraper — China's lifestyle and product-review platform (300M+ users)
- Weibo Scraper — China's Twitter (580M+ users)
- Bilibili Scraper — China's YouTube (300M+ users)
B2B Review Intelligence:
- G2 Reviews Scraper — B2B software reviews, no proxy needed
- Capterra Reviews Scraper — Software reviews with sub-ratings
- Booking.com Reviews Scraper — Hotel reviews and ratings
Streaming Analytics:
- Twitch Scraper — Streamer profiles, live streams, clips
- Kick.com Scraper — Kick streamer analytics
Other Tools:
- Perplexity AI Search Scraper — AI search results and brand monitoring
- Domain Authority Checker — Bulk SEO domain analysis
- Phone Number Validator — Phone validation
Legal Disclaimer
This actor accesses publicly available data through Telegram's public web preview (t.me/s/) and official Telegram API. No authentication is bypassed and no private data is accessed without authorization.
When extracting member data, ensure you have a legitimate legal basis under GDPR or applicable data protection laws. Member data extraction is disabled by default and must be explicitly enabled.
Users are responsible for ensuring their use of extracted data complies with applicable laws and Telegram's Terms of Service.
Your Review Matters
If you have used this Actor, a 30-second rating helps others, good or bad:
- Go to the Telegram Channel Scraper page
- Scroll down and click the star rating
- Optionally leave a one-line comment about your use case
Why it matters: Ratings help other users judge whether this Actor fits their use case.
Found a bug? Open an issue and it will be looked at.