Telegram Channel Scraper avatar

Telegram Channel Scraper

Pricing

Pay per usage

Go to Apify Store
Telegram Channel Scraper

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

Monkey Coder

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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

ParameterRequiredDefaultDescription
start_urlsList of Telegram channel URLs to scrape
max_messagesNo100Max messages per channel (0 = unlimited)
include_media_urlsNotrueInclude photo/video thumbnail URLs in output

Supported URL Formats

All of these work:

  • https://t.me/durov
  • https://t.me/s/durov
  • durov (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

FieldTypeDescription
channelstringChannel username
channel_titlestringChannel display name
channel_subscribersstringSubscriber count (human-readable)
message_idnumberUnique message ID within the channel
message_urlstringDirect link to the message
datestringISO 8601 timestamp
textstringPlain text content
text_htmlstringHTML-formatted message content
viewsstringView count (human-readable, e.g., "4.18M")
forwarded_fromstringOriginal source if message was forwarded
authorstringAuthor name (for group messages)
has_photobooleanWhether message contains photos
has_videobooleanWhether message contains videos
photo_urlsarrayPhoto URLs from Telegram CDN (if include_media_urls is true)
video_thumbnail_urlsarrayVideo thumbnail URLs (if include_media_urls is true)
reaction_countsarrayReaction counts per emoji
fetched_atstringWhen 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.