Telegram Channel Scraper - Public Channel Messages avatar

Telegram Channel Scraper - Public Channel Messages

Pricing

from $2.10 / 1,000 messages

Go to Apify Store
Telegram Channel Scraper - Public Channel Messages

Telegram Channel Scraper - Public Channel Messages

Scrape messages from public Telegram channels: text, dates, views, media and links. Telegram scraper and channel message extractor using the t.me/s web preview. No Telegram account or API key needed.

Pricing

from $2.10 / 1,000 messages

Rating

0.0

(0)

Developer

CrawlKit

CrawlKit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Categories

Share

Extract messages from a public Telegram channel — no Telegram account, API key or bot token needed. Pass a channel URL or username and get structured messages back.

How it works

Telegram exposes a public web preview for channels at https://t.me/s/CHANNEL_NAME. This actor fetches that static HTML page, parses the messages with BeautifulSoup, and paginates backwards to collect older messages. No headless browser or API credentials are used.

Features

  • Simple input — provide a channel URL or username
  • Flexible input parsing — accepts https://t.me/channel, https://t.me/s/channel, @channel, or bare channel name
  • Pagination — fetches older messages beyond the first page until maxMessages is reached
  • Extracted fields — text, date, views, author, forwarded source, links, and media (photos, videos, documents, stickers)
  • Retries — retries with exponential backoff on timeouts, rate limits (HTTP 429) and server errors
  • Order — messages are pushed in chronological order (oldest first)

Input

ParameterTypeRequiredDefaultDescription
channelUrlstringYes—Channel URL or username. Accepts: https://t.me/channel, https://t.me/s/channel, @channel, or channel
maxMessagesintegerNo20Maximum messages to scrape (1–5000)
includeMediabooleanNotrueInclude media URLs (photos, videos, documents, stickers) in output

Output

Each message is a flat JSON object:

{
"message_id": 12345,
"channel": "example_news",
"text": "Weekly update is out. Read more at https://example.com",
"date": "2024-01-15T12:00:00+00:00",
"author": "Example News",
"views": 52000,
"forwarded_from": null,
"links": ["https://example.com"],
"url": "https://t.me/example_news/12345",
"media": [
{"type": "photo", "url": "https://cdn4.telegram-cdn.org/..."}
]
}

Output fields

FieldTypeDescription
message_idintegerUnique message ID within the channel
channelstringChannel username
textstringPlain text content (newlines preserved)
datestringISO 8601 datetime
authorstringChannel or author name
viewsintegerView count (parsed from K/M suffixes)
forwarded_fromstring | nullOriginal author if forwarded
linksarrayURLs found in message text
urlstringDirect link to the message
mediaarrayMedia attachments (when includeMedia is true): photo, video, video_thumbnail, sticker (with url) or document (with title)

Use cases

  • Content monitoring — track posts from competitors, influencers, or industry channels
  • OSINT research — collect public communications for analysis
  • Trend detection — monitor channel activity and engagement over time
  • Data journalism — archive public channel content for reporting
  • Market research — track product announcements and community discussions

Pricing

Pay-per-event, no start fee: $3.50 per 1,000 messages on the Apify Free plan, with lower prices on paid plans.

EventFreeStarterScaleBusinessEnterprise
Message (MESSAGE)$3.50$3.00$2.60$2.10$2.10

Prices in USD per 1,000 events.

Cost examples (Free plan)

ScenarioMessagesCost
Quick check (default)20$0.07
Daily monitoring100$0.35
Channel archive1,000$3.50
Large-scale research5,000$17.50

Limitations

  • Public channels only — the actor reads the t.me/s/ web preview; private channels and groups are not supported
  • Web preview must be enabled — some channels disable the t.me/s/ preview; those runs fail with a "not found or is private" error
  • No real-time streaming — the actor scrapes a snapshot; for new messages, schedule recurring runs
  • Media URLs are CDN links — they may expire after some time; download media promptly if needed
  • Rate limits — Telegram may rate-limit frequent requests; the actor waits and retries on HTTP 429 (up to 3 attempts per page), then stops paginating

Python 3.11, async httpx, BeautifulSoup + lxml, Apify SDK.