Telegram Channel Scraper: Posts, Views, Analytics | $0.25 / 1K avatar

Telegram Channel Scraper: Posts, Views, Analytics | $0.25 / 1K

Pricing

from $0.25 / 1,000 message scrapeds

Go to Apify Store
Telegram Channel Scraper: Posts, Views, Analytics | $0.25 / 1K

Telegram Channel Scraper: Posts, Views, Analytics | $0.25 / 1K

Telegram channel data without an API key or login: messages, views, reactions, forwards, subscribers and media links from public channels. Keyword filter, date range and incremental monitoring. From $0.25 per 1,000 messages.

Pricing

from $0.25 / 1,000 message scrapeds

Rating

0.0

(0)

Developer

Hriday Rungta

Hriday Rungta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Telegram Channel Scraper: public channel posts, views and analytics (no API key)

Get Telegram channel data without a Telegram account, API ID or bot token. Give it channel usernames or t.me links and get structured messages: text, date, views, reactions, forwards, replies, links, hashtags, media URLs and channel info (title, description, subscribers). Built for Telegram channel monitoring, crypto and news tracking, channel analytics, OSINT and market research.

$0.25 per 1,000 messages plus a $0.002 start fee per run. It reads the public web preview Telegram serves at t.me/s/<channel>: no login, no browser, no proxy.

What can you use Telegram channel data for?

  • Telegram channel analytics: subscribers, views, reactions and forwards per post, to compare channels or track growth over time.
  • Crypto, news and market monitoring: schedule it and receive only new posts, with a keyword filter.
  • Channel archive and export: save a channel's history to CSV, Excel or JSON, by date range.
  • OSINT and research: collect public messages, links, hashtags and media URLs.
  • Lead and competitor research: see what public channels in your niche post and what gets engagement.

Telegram API alternative: what is different

Telegram's official routes (Bot API, or the user API with your own API ID and login) need a bot token or an account, and a bot only sees channels it has been added to. This Actor needs neither, but it is also narrower: it only sees what a visitor sees on a public channel's web preview. No private channels, no groups, no member lists, no comments.

What data you get

For every message (one dataset row, type: "message"):

  • Message: channel, message ID, direct link, date (ISO, UTC), plain text and the original HTML (bold, links, formatting kept)
  • Reach: views, every reaction with its count (including paid Star reactions), total reactions
  • Context: forwarded-from channel, reply-to message (ID, author, quoted text), post author signature, edited flag
  • Media: media type (photo, video, document, voice, sticker, poll, mixed), media list with image/video URLs, thumbnails, duration, document title and size, poll question and results
  • Link preview: URL, site name, title, description, image
  • Extracted: external links, @mentions, #hashtags

Plus one channel info row per channel (type: "channel", free): title, username, description, subscribers, verified flag, photo, number of photos/videos/links, and a status.

Example output

{
"type": "message",
"channel": "durov",
"messageId": 531,
"url": "https://t.me/durov/531",
"date": "2026-07-16T20:45:25.000Z",
"text": "Telegram now has a Rich Text Editor. ...",
"views": 5800000,
"reactions": [
{ "emoji": "⭐", "customEmojiId": null, "paid": true, "count": 6300 },
{ "emoji": null, "customEmojiId": "5265077361648368841", "paid": false, "count": 54600 }
],
"reactionsTotal": 94990,
"postAuthor": "Pavel Durov",
"forwardedFrom": null,
"replyTo": null,
"edited": false,
"mediaType": "video",
"mediaCount": 1,
"media": [{ "type": "video", "url": "https://cdn4.telesco.pe/file/...mp4", "thumbnail": "https://cdn4.telesco.pe/file/...jpg", "duration": "0:06" }],
"linkPreview": null,
"links": [],
"mentions": [],
"hashtags": [],
"scrapedAt": "2026-10-14T04:52:50.000Z"
}

How to scrape a Telegram channel

  1. Open the Actor and add channels under Channels: durov, @durov or https://t.me/durov.
  2. Set Max messages per channel (newest first).
  3. Optional: a date range (newer than / older than), a keyword filter, or Only new messages since last run.
  4. Click Start, then download the dataset as JSON, CSV, Excel or via the API.

Example input, the last week of a channel filtered by keyword:

{
"channels": ["cointelegraph"],
"keywords": ["bitcoin", "etf"],
"newerThan": "7 days",
"maxMessagesPerChannel": 200
}

Input

FieldWhat it does
channelsRequired. Usernames or t.me links, one per line. Private invite links (t.me/+...) cannot be read.
maxMessagesPerChannelCost cap per channel. Default 100.
newerThan / olderThanDate range. YYYY-MM-DD or a span like "7 days", "12 hours". Old ranges of big channels are reached directly, without paging through everything newer.
keywordsOnly save messages containing at least one keyword (not case sensitive). Non-matching messages are not billed.
incrementalEach run after the first returns only messages newer than the last run, per channel.
firstRunSinceHow far back a channel's first incremental run looks. Default "7 days", or "all" for a full backfill.
includeChannelInfoAdd the free channel info row. Default on.
maxTotalMessagesHard cap across all channels. Default 10,000.

Pricing (pay per event)

No subscription.

EventPrice
Actor start (once per run)$0.002
Message scraped$0.00025 ($0.25 per 1,000 messages)

Channel info rows, status rows and messages removed by your keyword filter are never charged.

Worked examples:

  • Latest 20 messages of one channel: $0.002 + 20 x $0.00025 = $0.007.
  • 1,000 messages: $0.002 + $0.25 = $0.252.
  • Checking 50 channels every hour for new posts: you pay the start fee per run plus only the messages that are actually new.

Monitor channels over time (incremental mode)

Turn on incremental and schedule the Actor (for example hourly). It remembers the newest message seen per channel in a named key-value store and only returns newer messages next time, so you never pay twice for the same message. Use stateNamespace to keep several independent monitors apart.

Schedule it and connect it

Use an Apify Schedule for recurring runs, then send new messages to Google Sheets, Make, n8n, Zapier, Slack via a webhook, or your own database. The Apify API and MCP server let scripts and AI agents call it too.

Channels that cannot be read

Telegram only publishes a web preview for public channels whose owner has not switched it off. For anything else the Actor does not fail and does not charge. It returns one type: "channel" row with a status:

StatusMeaning
okMessages were read.
preview_disabledThe channel or group exists but has no public web preview (all groups, and channels that opted out). Needs a Telegram account, so it cannot be scraped here.
not_foundNo public channel, group or user with that username.
not_a_channelThe username belongs to a user or bot.
no_messagesThe preview is on but shows no messages.
fetch_failedTelegram could not be reached after retries.

Known limits

  • Public channels only. No private channels, no groups, no member lists, no comments, no replies from other users.
  • The preview shows what a visitor sees. Custom emoji reactions come as IDs (customEmojiId), not characters.
  • Media files are returned as URLs, not downloaded. Large videos are missing from the preview; those rows have a thumbnail and a message URL but no video url.
  • Album posts appear as one message with several media items. Service messages (pins, joins) are skipped.
  • Views, reactions and subscriber numbers are as of scraping time and rounded by Telegram above 1,000 (for example "1.2K").
  • Media links carry a time-limited token. Download files soon after scraping.
  • Search across all of Telegram is not possible with the public preview; keywords filters inside the channels you list.

FAQ

Do I need a Telegram account or API key? No.

Is this a Telegram bot or API client? No. It reads the public web preview, so it only sees what any visitor sees without logging in.

Can I get Telegram channel analytics like subscribers and views? Yes: subscribers come from the channel info row, views, reactions and forwards from each message. It does not show private admin statistics.

How far back can I go? As far as the web preview goes. In testing it reached back several years on a large news channel (use the date range to jump there).

How fast is it? About 20 messages per request. A 1,000-message run on a large news channel took under 2 minutes in testing.

Can I use it with ChatGPT or Claude? Yes, via the Apify API or MCP server.

Is it legal? It collects only public data that Telegram shows to anyone. You are responsible for respecting Telegram's Terms of Service, privacy and data-protection laws (such as GDPR) and channel owners' rights.