Telegram Channel Scraper (No Login)
Pricing
Pay per event
Telegram Channel Scraper (No Login)
Scrape public Telegram channel messages without API credentials. Extracts text, media, reactions, views, and channel metadata from t.me preview pages.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape public Telegram channel messages without API credentials. No API key, no phone number, no Telegram account needed.
Extracts messages, views, reactions, media URLs, forwarded-from info, and channel metadata from t.me/s/{channel} server-rendered preview pages.
Features
- No credentials required -- works on any public Telegram channel via server-rendered HTML
- Full message data -- text, HTML, date, view count, author signature, direct link
- Media extraction -- photo URLs and video URLs from each message
- Reactions -- emoji reactions with counts (e.g., thumbs_up 1.26K)
- Forwarded messages -- source channel name and URL for forwarded posts
- Channel metadata -- title, description, subscriber count, profile photo URL
- Pagination -- automatically loads older messages page by page
- Multi-channel -- scrape multiple channels in a single run
Input
| Field | Type | Default | Description |
|---|---|---|---|
channelUsernames | string[] | ["durov"] | Channel usernames to scrape (without @) |
maxItems | integer | 50 | Max messages per channel (0 = no limit) |
includeChannelInfo | boolean | true | Include channel metadata in each record |
Output Fields
Each record contains:
| Field | Description |
|---|---|
channelUsername | Channel username (e.g., durov) |
channelTitle | Channel display title |
channelDescription | Channel description text |
channelPhotoUrl | Channel profile photo URL |
channelSubscribers | Subscriber count (e.g., 10.2M) |
messageId | Numeric message ID |
messageDate | ISO 8601 date (e.g., 2026-04-09T14:09:27+00:00) |
messageText | Plain text content |
messageHtml | HTML-formatted content |
messageViews | View count (e.g., 3.69M) |
messageAuthor | Post author signature (if enabled on channel) |
messageLink | Direct t.me link to the message |
messageMediaType | photo, video, or none |
messageMediaUrl | URL of attached media |
messageReactions | Array of reaction strings (e.g., ["thumbs_up 1.26K", "heart 106"]) |
messageForwardedFrom | Source channel name (if forwarded) |
messageForwardedFromUrl | Original message URL (if forwarded) |
Example Output
{"channelUsername": "durov","channelTitle": "Pavel Durov","channelSubscribers": "10.2M","messageId": 482,"messageDate": "2026-04-09T14:09:27+00:00","messageText": "Telegram has reached a milestone...","messageViews": "2.25M","messageAuthor": "Pavel Durov","messageLink": "https://t.me/durov/482","messageMediaType": "none","messageMediaUrl": "","messageReactions": ["thumbs_up 3.77K", "heart 380"],"messageForwardedFrom": "","messageForwardedFromUrl": ""}
How It Works
- Fetches
https://t.me/s/{channel}which returns the latest ~20 messages as server-rendered HTML - Extracts message data using CSS selectors (Cheerio)
- Paginates backwards using
?before={message_id}to load older messages - Stops when
maxItemsis reached or no more messages are available
Limitations
- Public channels only -- private channels and groups are not accessible via t.me/s/
- View counts -- displayed as formatted strings (e.g., "3.69M"), not raw numbers
- Media -- extracts URLs but does not download media files
- Reactions -- returned as formatted strings, not structured objects (per Apify dataset schema rules)
- Rate limiting -- t.me rate-limits by IP; for large-scale scraping (1000+ messages), consider using proxy rotation
Cost
Pay-per-event pricing: $0.10 per actor start + $0.001 per message scraped.
Need More Features?
If you need additional fields, date range filtering, or a custom scraper for another platform, file an issue or get in touch. We customize scrapers to suit your needs.