Telegram Scraper — Channel Messages & Media
Pricing
Pay per usage
Telegram Scraper — Channel Messages & Media
Scrape public Telegram channel messages without API keys or login. Extract message text, dates, view counts, forwards, reactions, and media info. Pagination support, date filtering, media detection. Export JSON, CSV, Excel. Social media monitoring.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
CryptoSignals Agent
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Share
Telegram Channel Scraper — Messages, Views & Media from Public Channels
Scrape public Telegram channel messages without API keys or authentication. Extract message text, dates, view counts, forward counts, and media metadata from any public Telegram channel.
This scraper uses Telegram's public web preview (t.me/s/) to extract messages — no Telegram API credentials, phone number verification, or Bot API token required. Just provide a channel username and get structured data in seconds.
Unlike Telegram API-based scrapers that require complex authentication flows, session files, and risk account bans, this scraper accesses only the publicly visible web preview. Safe, simple, and reliable.
Key Features
- No authentication needed — no Telegram API key, phone number, or bot token required
- Message text extraction — full message content with formatting preserved
- View counts — see how many times each message was viewed (supports K/M notation)
- Forward counts — track how often messages are shared
- Date filtering — scrape messages within a specific date range
- Media detection — identify messages with photos, videos, or other media
- Auto-pagination — automatically loads older messages up to your limit
- Structured JSON output — clean data ready for analysis or integration
- Lightweight — pure HTTP requests, no browser or Telegram client needed
Use Cases
| Use Case | Description |
|---|---|
| Crypto & finance monitoring | Track crypto signal channels, trading alerts, and market commentary. Analyze which calls performed best by cross-referencing with price data. |
| News aggregation | Scrape news channels to build aggregated feeds. Telegram is often the fastest source for breaking news in many regions. |
| Competitive intelligence | Monitor competitor announcement channels. Track their product updates, feature releases, and marketing messages. |
| Content research | Analyze what content formats (text, images, videos) drive the most views and forwards in your niche. |
| Influencer analysis | Track influencer channels to measure engagement rates, posting frequency, and audience reach over time. |
| Market research | Monitor industry-specific channels for trends, sentiment, and emerging topics. |
| Academic research | Study information flow, misinformation patterns, or community dynamics on Telegram. |
| Brand monitoring | Track mentions of your brand in public Telegram channels. Identify unofficial fan channels or discussion groups. |
| Archival & backup | Create structured backups of public channel content for compliance, research, or reference purposes. |
| Lead generation | Monitor channels where your target audience discusses problems you solve. Identify high-engagement topics. |
Input Configuration
All Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
channelUsername | string | — | Channel username without @ (e.g., durov, telegram) — required |
maxMessages | integer | 100 | Maximum number of messages to scrape (1–10,000) |
dateFrom | string | — | Only messages after this date (ISO format, e.g., 2026-01-01) |
dateTo | string | — | Only messages before this date (ISO format, e.g., 2026-12-31) |
includeMedia | boolean | false | Extract media metadata (photo/video presence and type) |
Input Examples
Scrape latest messages from a channel
{"channelUsername": "durov","maxMessages": 50}
Get messages within a date range
{"channelUsername": "telegram","maxMessages": 500,"dateFrom": "2026-01-01","dateTo": "2026-03-01"}
Scrape with media detection
{"channelUsername": "bbcnews","maxMessages": 200,"includeMedia": true}
Large-scale channel archive
{"channelUsername": "techcrunch","maxMessages": 5000,"includeMedia": true}
Output Schema
Each message returns structured data:
{"messageId": 1234,"channel": "durov","text": "We just hit 1 billion monthly active users on Telegram. Thank you all for being part of this journey.","date": "2026-03-15T14:30:00+00:00","views": 15400000,"forwards": 28500,"url": "https://t.me/durov/1234","hasPhoto": true,"hasVideo": false,"mediaType": "photo"}
Output Fields
| Field | Type | Description |
|---|---|---|
messageId | integer | Unique message ID within the channel |
channel | string | Channel username |
text | string | Full message text content |
date | string | ISO 8601 timestamp of the message |
views | integer | Number of views (parsed from K/M notation) |
forwards | integer | Number of times the message was forwarded |
url | string | Direct link to the message on Telegram |
hasPhoto | boolean | Whether the message contains a photo (when includeMedia is true) |
hasVideo | boolean | Whether the message contains a video (when includeMedia is true) |
mediaType | string | Type of media attachment (when includeMedia is true) |
How to Use with the Apify API
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")# Scrape a Telegram channelrun = client.actor("cryptosignals/telegram-channel-scraper").call(run_input={"channelUsername": "durov","maxMessages": 100,"includeMedia": True,})# Process resultsdataset = client.dataset(run["defaultDatasetId"])for msg in dataset.iterate_items():views = msg.get("views", 0) or 0print(f"[{msg['date'][:10]}] {views:,} views — {msg['text'][:100]}...")
JavaScript / TypeScript
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("cryptosignals/telegram-channel-scraper").call({channelUsername: "telegram",maxMessages: 200,dateFrom: "2026-01-01",});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((msg) => {console.log(`${msg.views?.toLocaleString() ?? "?"} views: ${msg.text?.slice(0, 80)}`);});
cURL
# Start a scraping runcurl -X POST "https://api.apify.com/v2/acts/cryptosignals~telegram-channel-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"channelUsername": "durov", "maxMessages": 50}'# Get resultscurl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"
Integrations
Telegram Channel Scraper works with all Apify integrations:
- Google Sheets — export messages to a spreadsheet for analysis
- Slack — forward important Telegram messages to your Slack workspace
- Webhooks — trigger notifications when scraping completes
- Zapier / Make — connect to 5,000+ apps for automated workflows
- Schedule — run hourly or daily to monitor channels continuously
- API — call programmatically from Python, JavaScript, or any language
How It Works
This scraper uses Telegram's public web preview at t.me/s/ — the same interface you see when viewing a channel in a web browser without being logged in. It:
- Loads the channel's web preview page
- Parses message elements including text, dates, and engagement metrics
- Paginates backward through message history using AJAX requests
- Filters by date range if specified
- Returns structured JSON for each message
No Telegram client, session file, or API credentials are involved at any point.
Performance
- ~60 messages per minute throughput
- Automatic pagination handles channels with thousands of messages
- Built-in rate limiting and retry logic
- Lightweight HTTP-only — no browser overhead
Pricing
Try it free — then just $4.99/month after April 3, 2026. No per-message fees. Unlimited runs.
Platform compute costs typically under $0.50 per run.
FAQ
Do I need a Telegram account or API key? No. This scraper uses Telegram's public web preview, which requires no authentication whatsoever.
Can I scrape private channels or groups? No. Only public Telegram channels with a t.me/s/ web preview are supported. Private channels, groups, and chats are not accessible.
How many messages can I scrape? Up to 10,000 messages per run. For channels with a very long history, use date filtering to scrape in batches.
Are message reactions included? The web preview does not expose reaction data. Views and forward counts are included.
Is this safe to use? Will my Telegram account get banned? This scraper does not use a Telegram account at all. It accesses public web pages — there's nothing to ban.
How far back can I scrape? As far as the channel's web preview allows. Most channels expose their full history through the web preview.