Telegram Channel Scraper
Pricing
Pay per usage
Telegram Channel Scraper
Scrape public Telegram channels and groups — messages, views, reactions, photos, videos, and forwarded content. No API key or login required.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Monkey Coder
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
📨 Scrape public Telegram channels and groups — messages, views, reactions, photos, videos, and forwarded content. No API key, no login, no Telegram account required.
✨ Features
- 🔓 No credentials needed — scrapes public channel web previews
- 📄 Full message data — text, HTML, date, views, reactions, forwards
- 🖼️ Media detection — photo URLs, video thumbnails from Telegram CDN
- 📊 Channel metadata — title, description, subscriber count
- 📖 Pagination — automatically loads channel history page by page
- 🔗 Flexible input — accepts
t.me/channel,t.me/s/channel, or just the username
🚀 How It Works
This Actor scrapes Telegram's public channel web preview pages (t.me/s/<channel>) using standard HTTP requests. No Telegram API credentials or bot tokens are required — it works the same way your browser does when viewing a public channel.
📥 Input Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
start_urls | ✅ | — | List of Telegram channel URLs to scrape |
max_messages | No | 100 | Max messages per channel (0 = unlimited) |
include_media_urls | No | true | Include photo/video thumbnail URLs in output |
Supported URL Formats
All of these work:
https://t.me/durovhttps://t.me/s/durovdurov(just the username)
📤 Sample Output
{"channel": "durov","channel_title": "Pavel Durov","channel_subscribers": "10.4M subscribers","message_id": 457,"message_url": "https://t.me/durov/457","date": "2025-11-15T16:06:11+00:00","text": "We're starting to test new Telegram features such as live-streaming in Stories and auctions for gifts...","text_html": "<div class=\"tgme_widget_message_text\">...</div>","views": "4.18M","forwarded_from": null,"author": null,"has_photo": false,"has_video": false,"reaction_counts": ["12K", "5.2K", "890"],"fetched_at": "2025-03-21T12:00:00"}
📊 Output Fields
| Field | Type | Description |
|---|---|---|
channel | string | Channel username |
channel_title | string | Channel display name |
channel_subscribers | string | Subscriber count (human-readable) |
message_id | number | Unique message ID within the channel |
message_url | string | Direct link to the message |
date | string | ISO 8601 timestamp |
text | string | Plain text content |
text_html | string | HTML-formatted message content |
views | string | View count (human-readable, e.g., "4.18M") |
forwarded_from | string | Original source if message was forwarded |
author | string | Author name (for group messages) |
has_photo | boolean | Whether message contains photos |
has_video | boolean | Whether message contains videos |
photo_urls | array | Photo URLs from Telegram CDN (if include_media_urls is true) |
video_thumbnail_urls | array | Video thumbnail URLs (if include_media_urls is true) |
reaction_counts | array | Reaction counts per emoji |
fetched_at | string | When the data was scraped |
⚡ Notes
- Public channels only — private channels and groups require Telegram API credentials (not supported by this Actor).
- Rate limiting — the Actor uses a 1.5-second delay between page loads and handles Telegram's 429 responses automatically.
- Memory — uses minimal memory (~128MB). Default Apify settings are sufficient.
- ~20 messages per page — scraping 1000 messages takes approximately 50 page loads (~75 seconds).
- Media URLs are Telegram CDN links (
cdn*.telesco.pe) — they may expire after some time.