Telegram Scraper — Channel Messages & Media avatar

Telegram Scraper — Channel Messages & Media

Pricing

$3.00 / 1,000 result scrapeds

Go to Apify Store
Telegram Scraper — Channel Messages & Media

Telegram Scraper — Channel Messages & Media

Extract messages and media from public Telegram channels. Get message text, author, timestamp, views, forwards, and media URLs. Ideal for OSINT, crypto monitoring, and content research. PPE pricing — pay only for results.

Pricing

$3.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Web Data Labs

Web Data Labs

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

1

Monthly active users

19 days ago

Last modified

Categories

Share

Telegram Channel Scraper

Scrape public Telegram channels — messages, media metadata, view counts, and forwarding stats. No Telegram API key or account login required. Works with any public channel via its t.me URL.

Useful for media monitoring, crypto/finance signal tracking, news aggregation, and audience research.

What data do you get?

Each message record includes:

FieldTypeDescription
message_idintegerUnique message ID within the channel
channelstringChannel username
datestringISO 8601 timestamp
textstringFull message text
viewsintegerView count
forwardsintegerNumber of times forwarded
urlstringDirect link to the message
has_photobooleanWhether the message contains a photo (when includeMedia is on)
has_videobooleanWhether the message contains a video
has_documentbooleanWhether the message has an attached document
photo_urlstringDirect URL to the photo (when available)

Input parameters

ParameterTypeRequiredDefaultDescription
channelUsernamestringYestelegramChannel username without @. Also accepts full t.me URLs.
maxMessagesintegerNo5Maximum messages to scrape (1–10,000)
dateFromstringNoOnly include messages after this date (ISO format, e.g. 2026-01-01)
dateTostringNoOnly include messages before this date
includeMediabooleanNofalseExtract media metadata (photo/video/document flags and URLs)

Example input

{
"channelUsername": "durov",
"maxMessages": 50,
"includeMedia": true
}

Example output

{
"message_id": 1247,
"channel": "durov",
"date": "2026-03-28T10:15:00+00:00",
"text": "Today we launched the new privacy features that let you control exactly who can see your online status...",
"views": 182400,
"forwards": 3210,
"url": "https://t.me/durov/1247",
"has_photo": true,
"photo_url": "https://cdn4.telegram-cdn.org/file/abc123.jpg"
}

Using the Apify API

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("cryptosignals/telegram-channel-scraper").call(run_input={
"channelUsername": "durov",
"maxMessages": 100,
"includeMedia": True,
})
for msg in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"[{msg['date']}] {msg['text'][:80]}... ({msg['views']} views)")
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('cryptosignals/telegram-channel-scraper').call({
channelUsername: 'durov',
maxMessages: 100,
includeMedia: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(msg => console.log(`${msg.date}: ${msg.text.slice(0, 80)}...`));

Tips

  • Public channels only — private channels and groups are not accessible without authentication
  • Channel username formats — you can use durov, @durov, or https://t.me/durov — all work
  • Date filtering — combine dateFrom and dateTo to scrape a specific time range without pulling the entire history
  • Media URLs — photo URLs from Telegram CDN may expire. Download them promptly if you need to archive media.

Proxies and rate limits

Telegram's web preview endpoint (t.me/s/) applies per-IP rate limits after sustained scraping, returning 429 errors or temporary bans. Residential proxies rotate through real ISP addresses and stay under per-IP thresholds.

ThorData offers 200M+ residential IPs across 190+ countries — reliable for scraping Telegram channels at scale without hitting rate limits.

Set proxy configuration in your input:

{
"proxyConfiguration": {
"useApifyProxy": true
}
}

Built by cryptosignals