Telegram Channels Scraper: Messages, Contacts & Leads
Pricing
from $2.00 / 1,000 messages
Telegram Channels Scraper: Messages, Contacts & Leads
Extract message history, view counts, reactions, media URLs, links, emails, and channel metadata from public Telegram channels. No API key or login required.
Pricing
from $2.00 / 1,000 messages
Rating
0.0
(0)
Developer
Khadin Akbar
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Telegram Channel Scraper — Messages, Media & Lead Data
Extract full message history, engagement metrics, media URLs, external links, email addresses, and channel metadata from any public Telegram channel or group. No API key. No Telegram account. No login required.
Works with the Apify MCP Server — Claude and ChatGPT can call this actor directly via natural language.
What does this Telegram Channel Scraper do?
This actor scrapes the public web preview of any Telegram channel (t.me/s/channelname) and returns two types of structured records:
Channel Info — metadata scraped once per channel: title, description, subscriber count, verification status, and avatar URL.
Messages — one record per post, including full text, timestamp, view count, reaction breakdown, forwarded-from source, media type and URL, all external links embedded in the message, and email addresses extracted from the message text.
The actor paginates automatically by following Telegram's ?before=N URL pattern, going as far back as your maxMessagesPerChannel or oldestMessageDate limit requires.
Ideal for: lead generation, brand monitoring, competitive intelligence, crypto/DeFi research, OSINT, market sentiment, and AI pipeline data ingestion.
What data can you extract from Telegram channels?
Message Fields
| Field | Type | Example |
|---|---|---|
record_type | string | "message" |
channel_username | string | "durov" |
message_id | string | "18423" |
message_text | string or null | "Announcing a major new feature..." |
posted_at | ISO datetime | "2026-03-28T12:00:00+00:00" |
view_count | integer or null | 452000 |
reaction_count | integer | 1840 |
reactions | array or null | [{"emoji":"❤️","count":980}] |
is_forwarded | boolean | false |
forwarded_from | string or null | "@cryptonews" |
has_media | boolean | true |
media_type | string or null | "photo" |
media_url | string or null | "https://cdn5.telegram-cdn.org/..." |
extracted_links | array | ["https://example.com"] |
extracted_emails | array | ["contact@example.com"] |
message_url | string | "https://t.me/durov/18423" |
Channel Info Fields
| Field | Type | Example |
|---|---|---|
record_type | string | "channel_info" |
channel_title | string | "Pavel Durov" |
channel_username | string | "durov" |
channel_url | string | "https://t.me/durov" |
channel_description | string or null | "Founder of Telegram and VK." |
is_verified | boolean | true |
subscriber_count | integer or null | 1250000 |
photo_count | integer or null | 842 |
video_count | integer or null | 315 |
How to scrape Telegram channels
- Click "Try for free" to open the actor in Apify Console
- Enter one or more channel usernames in the
channelsfield (e.g.durov,@telegram,https://t.me/bitcoin) - Set Max messages per channel (default: 100)
- Optionally set an oldest message date to limit how far back to scrape
- Click Start and download your results as JSON, CSV, or Excel
Input examples
{"channels": ["durov", "bitcoinmagazine", "https://t.me/cryptonews"],"maxMessagesPerChannel": 500,"oldestMessageDate": "2026-01-01","includeChannelInfo": true,"includeMedia": true,"includeReactions": true}
Using with AI agents (Claude, ChatGPT via MCP)
Connect via the Apify MCP Server and ask:
"Get the last 200 messages from @bitcoinmagazine with any links and emails they posted"
"Scrape the telegram channel @cryptonews since January 2026 and extract all external links"
"Monitor these 5 Telegram channels for new posts in the last 7 days"
The AI will automatically run this actor and return structured results.
Lead generation with Telegram scraping
Telegram is a goldmine for B2B and niche leads — channel admins frequently post contact emails, website URLs, and landing pages directly in their messages. This actor's extracted_links and extracted_emails fields surface these automatically.
Common lead gen workflows:
- Scrape niche industry channels (crypto, SaaS, e-commerce, agencies) → filter
extracted_emails→ build outreach list - Monitor competitor channels → identify promoted products and partner sites via
extracted_links - Discover related channels via
forwarded_from→ expand your prospecting universe - Track high-view-count posts to identify viral content and hot topics in your market
How much does it cost?
Pricing is pay-per-event — you only pay for data you actually receive.
| Event | Price |
|---|---|
| Actor start fee | $0.003 |
| Per message scraped | $0.002 |
| Per channel info record | $0.001 |
Example: 1,000 messages from 5 channels = $2.00 + $0.005 for 5 channel info records + $0.003 start fee = ~$2.01 total
No monthly fees. No minimums. Apify offers $5 in free credits to new users.
API & Integration
REST API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~telegram-channel-scraper/runs" \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"channels": ["durov", "telegram"],"maxMessagesPerChannel": 100,"includeChannelInfo": true}'
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('khadinakbar/telegram-channel-scraper').call({channels: ['durov', 'telegram'],maxMessagesPerChannel: 200,oldestMessageDate: '2026-01-01',});const { items } = await client.dataset(run.defaultDatasetId).listItems();const messages = items.filter(r => r.record_type === 'message');const channelInfo = items.filter(r => r.record_type === 'channel_info');
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('khadinakbar/telegram-channel-scraper').call(run_input={'channels': ['durov', 'telegram'],'maxMessagesPerChannel': 200,'oldestMessageDate': '2026-01-01',})items = list(client.dataset(run['defaultDatasetId']).iterate_items())messages = [r for r in items if r['record_type'] == 'message']
Integrations
Connects out of the box with: Apify MCP Server (Claude, ChatGPT), Make.com, Zapier, n8n, LangChain, Google Sheets, Slack webhooks
Use cases
Lead Generation — extract emails and links from niche Telegram communities to build targeted outreach lists for cold email campaigns.
Brand Monitoring — track mentions and discussions about your product or brand across multiple Telegram channels simultaneously.
Competitive Intelligence — monitor what your competitors are posting, what they're promoting, and which sites they're linking to.
Crypto & DeFi Research — scrape token announcement channels, trading signal groups, and project update feeds for real-time market intelligence.
OSINT & Investigation — gather open-source intelligence from public Telegram channels. Identify networks of related channels via forwarded_from chains.
Market Sentiment — collect and analyze message text from trading/investment channels for sentiment scoring and AI analysis.
Content Archiving — export complete message history from public channels to CSV or JSON for research, compliance, or archival workflows.
AI Pipeline Data — feed structured Telegram data into RAG systems, vector databases, or LLM analysis workflows via the Apify MCP Server.
FAQ
Q: Does this require a Telegram account or API key?
A: No. This actor scrapes Telegram's public web preview (t.me/s/) — the same pages visible to anyone in a browser. No account, API key, or bot token required.
Q: Can it scrape private channels or groups?
A: No. Only public channels accessible via t.me/s/channelname are supported. Private channels require authentication, which is outside the scope of this actor.
Q: Can it extract member lists?
A: Telegram does not expose individual member lists on public web pages. However, this actor extracts the total subscriber count, and the extracted_emails and forwarded_from fields provide high-value lead generation signals from message content.
Q: How far back can it go?
A: The actor paginates through a channel's full message history. Use maxMessagesPerChannel or oldestMessageDate to control depth. Very large channels (100k+ messages) will take longer and cost more.
Q: How fast does it run? A: Approximately 50–150 messages per minute depending on channel size and proxy response times. Multiple channels are scraped in parallel (up to 3 concurrent).
Q: Is scraping Telegram legal?
A: This actor only accesses publicly available data on t.me/s/ — the same content visible to any web user without logging in. See Apify's guide on web scraping legality. Always ensure your use case complies with Telegram's Terms of Service and applicable data regulations.
Q: Can I schedule it to monitor channels regularly?
A: Yes — use Apify's built-in scheduler to run daily, weekly, or at any interval. Combine with oldestMessageDate (set to yesterday) for incremental monitoring without re-scraping old content.
Works great with
- Apify Email Checker — verify the
extracted_emailsbefore running outreach campaigns - Google Sheets Import — push results directly into a live spreadsheet
- Apify MCP Server — let Claude or ChatGPT run this actor via natural language
Support
Found a bug or need a feature? Open an issue on GitHub or contact us via the Apify Actor page. Response time: within 48 hours.
Changelog
v1.0 — Initial release. Full message history scraping, channel metadata, email and link extraction, view counts, reactions, media URLs, PAY_PER_EVENT pricing.