Telegram Channel Scraper avatar

Telegram Channel Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Telegram Channel Scraper

Telegram Channel Scraper

Extract messages, reactions, media & metadata from public Telegram channels. No API key or account needed. HTTP-only — fast, cheap, reliable.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Sourabh Kumar

Sourabh Kumar

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

7 days ago

Last modified

Share

Telegram Channel Scraper — Extract Messages, Reactions & Media from Public Channels

Scrape messages, reactions, media, and metadata from any public Telegram channel. No API key, no phone number, no Telegram account required. Works via HTTP — fast, cheap, and reliable.

⚡ Why this Telegram scraper?

Most Telegram scrapers require API credentials, phone number verification, or expensive browser automation. This one is different:

  • 💰 Affordable: Just $1.00 per 1,000 messages. No hidden costs.
  • 🚀 Fastest: Pure HTTP scraping — no browser, no Playwright, no Puppeteer. 350+ messages in under 25 seconds.
  • 🔑 No credentials needed: No Telegram API key, no phone number, no account login. Zero setup.
  • 🛡️ Most reliable: No headless browser means no anti-bot blocks, no timeouts, no flaky runs.
  • 📊 Rich data: 15 fields per message including reactions, media URLs, link previews, forwards, and replies.
  • 🔍 Built-in search: Use Telegram's native search to find messages by keyword across full channel history.

📦 What data can you extract?

Each message includes 15 data fields:

  • 📝 Content: Full message text, message URL
  • 🕐 Metadata: Timestamp, message ID, edit status
  • 👤 Author: Display name (for channels with signatures)
  • 👁️ Engagement: View count, emoji reactions with counts (including paid stars)
  • 🖼️ Media: Photos, videos, and documents with CDN URLs
  • 🔗 Link previews: Title, description, image, and URL of embedded links
  • 💬 Threads: Reply-to info, forwarded-from source
  • 📡 Channel info: Name, @username, subscriber count

💲 How much does it cost?

The Telegram scraper uses pay-per-event pricing — you only pay for what you scrape:

  • $1.00 per 1,000 messages

Example costs:

What you scrapeMessagesCost
1 channel, last 50 messages50$0.05
5 channels, 20 messages each100$0.10
10 channels, 100 messages each1,000$1.00
Full archive of a large channel5,000$5.00

🎯 Use cases

  • 📊 Channel analytics: Analyze which posts get the most views and reactions
  • 🔍 Competitive intelligence: Monitor competitor Telegram channels
  • 📡 Media monitoring: Track news channels and crypto/finance groups
  • 📈 Market research: Analyze trends across industry Telegram channels
  • 📰 Data journalism: Build datasets of Telegram content for investigation
  • 🎓 Academic research: Collect public channel data for communication studies
  • 🔎 OSINT: Search for specific topics across multiple channels
  • 🎯 Lead generation: Find active channels and creators in your niche
  • 📚 Content archival: Back up full channel histories before they disappear

📥 Input

FieldTypeDescriptionDefault
channelUsernamesarrayChannel usernames or t.me URLs (required).
maxMessagesnumberMax messages per channel. Set 0 for all messages.100
startDatestringOnly messages after this date (YYYY-MM-DD).
endDatestringOnly messages before this date (YYYY-MM-DD).
searchQuerystringSearch keyword within channel history.
includeMediabooleanInclude photo/video/document URLs.true

💡 Example input

{
"channelUsernames": [
"durov",
"https://t.me/telegram",
"@contest"
],
"maxMessages": 100,
"includeMedia": true
}

📤 Output

Each message is stored as a JSON object with 15 fields:

{
"messageId": 475,
"messageUrl": "https://t.me/durov/475",
"text": "Today marks the 12th anniversary of Telegram...",
"timestamp": "2025-08-14T13:45:00+00:00",
"views": 5290000,
"isEdited": false,
"authorName": null,
"reactions": [
{ "emoji": "❤️", "count": "86K" },
{ "emoji": "🔥", "count": "42K" },
{ "emoji": "stars", "count": "39.3K" }
],
"media": [
{
"type": "photo",
"url": "https://cdn4.telesco.pe/...",
"thumbnailUrl": null,
"duration": null
}
],
"linkPreview": null,
"replyTo": null,
"forwardFrom": null,
"channelName": "Durov's Channel",
"channelUsername": "durov",
"channelSubscribers": "12.5M"
}

You can download results in JSON, CSV, Excel, or connect via API.

💡 Tips and notes

  • 🌐 Flexible input: Accepts @username, bare usernames, or full https://t.me/channel URLs.
  • 🔍 Search: Use searchQuery to find messages containing specific keywords. Uses Telegram's built-in search.
  • 📅 Date filtering: Combine startDate and endDate to scrape messages within a specific time window.
  • 📚 Full archives: Set maxMessages to 0 to fetch every message a channel has ever posted.
  • 📦 Bulk scraping: Pass multiple channels in a single run to scrape them all sequentially.
  • 🔒 Private channels: Only public channels with web preview enabled are supported. Private channels and those with disabled web preview will be skipped with a warning.
  • Speed: ~750 messages/min sequential. Full @durov channel (475 posts) scraped in 21 seconds.
  • 🖼️ Media URLs: CDN URLs for photos/videos may expire after some time. Download promptly if needed.
  • 😀 Reactions: Custom emoji show as numeric IDs (emoji:12345) rather than Unicode characters. Paid stars show as stars.
  • 📊 Subscriber counts: Reported as approximate strings (e.g., "10.5M"), matching Telegram's display.