Telegram Channel Scraper & Keyword Monitor (No Login) avatar

Telegram Channel Scraper & Keyword Monitor (No Login)

Under maintenance

Pricing

from $0.70 / 1,000 message scrapeds

Go to Apify Store
Telegram Channel Scraper & Keyword Monitor (No Login)

Telegram Channel Scraper & Keyword Monitor (No Login)

Under maintenance

Scrape public Telegram channels without login or API keys. Filter by keywords and date range; get text, views, reactions, links and media as JSON, CSV or Excel.

Pricing

from $0.70 / 1,000 message scrapeds

Rating

0.0

(0)

Developer

Ryu Moon

Ryu Moon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Security

Limited permissions

Share

Telegram Scraper: Channel Messages & Keyword Monitor (No Login, No API Key)

Scrape messages from any public Telegram channel: text, views, reactions, links, photos, videos and forward info, with keyword search and date filters. No Telegram account, phone number, bot token or API key needed. Export to JSON, CSV, Excel, or push straight into Google Sheets, Slack, Zapier or Make.

Quick start recipes

Copy one of these into the JSON input tab and click Start.

Crypto keyword alerts (schedule hourly, then add a Slack or email integration):

{"channels": ["cointelegraph", "whale_alert_io", "binance_announcements"], "keywords": ["listing", "airdrop", "ETF"], "dateFrom": "7 days", "onlyNewMessages": true}

After the first run, each hourly run only returns new matching posts, often for about a cent.

Brand or competitor mentions:

{"channels": ["cointelegraph", "binance_announcements"], "keywords": ["YourBrand", "CompetitorName"], "dateFrom": "7 days"}

Export a channel's history to Excel:

{"channels": ["durov"], "maxMessagesPerChannel": 0, "dateFrom": "2024-01-01"}

Then open the Output tab and choose Export > Excel.

Remote job posts:

{"channels": ["remotejobss"], "keywords": ["python", "react"], "wholeWordMatch": true, "onlyNewMessages": true}

Why not use the Telegram API directly? There's no app registration, phone number or session file, and no risk of a ban to your own Telegram account. It runs in the cloud on a schedule and exports straight to CSV, Excel or JSON.

Use with AI agents (MCP, Claude, ChatGPT, Cursor)

Purpose: Get posts (text, date, views, reactions, links, media URLs) from public Telegram channels, optionally filtered by keywords and a date range. No Telegram login or API key.

When to use it

  • The user names one or more public Telegram channels and wants their posts, or posts mentioning a keyword.
  • Monitoring: run on a schedule with onlyNewMessages: true to get only posts published since the last run.
  • Research a date window, e.g. "what did @cointelegraph post about ETFs last week".

When not to use it

  • To find channels about a topic, call Telegram Channel Finder first, then pass its username values here as channels.
  • Private channels, groups that need joining, or member lists: not supported.

Example input

{
"channels": [
"cointelegraph",
"durov"
],
"keywords": [
"bitcoin",
"ETF"
],
"dateFrom": "7 days",
"maxMessagesPerChannel": 50
}

Output fields (one dataset item per row): channel, messageId, url, date (ISO), text, views, reactionsTotal, reactions, links, media (photo/video URLs), linkPreview, author, edited, isForwarded, forwardedFrom, matchedKeywords, channelTitle, channelSubscribers.

Cost: $0.005 per run + $0.0007 per message (100 messages ≈ $0.08). Cap spend with maxMessagesTotal.

Connect it to your agent: add this remote MCP server (Apify's official MCP server, loaded with just this tool):

{"mcpServers": {"telegram-channel-keyword-scraper": {"url": "https://mcp.apify.com?tools=ryumoon-data/telegram-channel-keyword-scraper"}}}

Or call it from any agent with the Apify API: POST https://api.apify.com/v2/acts/ryumoon-data~telegram-channel-keyword-scraper/run-sync-get-dataset-items with the input above as the JSON body. Agents without an Apify account can pay per run with agentic payments (x402, MPP or Skyfire).

What can this Telegram scraper do?

  • 📥 Scrape any public channel (durov, @telegram, https://t.me/s/cointelegraph): text, date, views, reactions, links, link previews, photo/video URLs, forwarded-from, author signature, edited flag.
  • 🔎 Keyword search across channels: uses Telegram's own in-channel search, so finding "bitcoin ETF" in a 60,000-post channel takes a few requests instead of thousands. Any/all match and whole-word mode.
  • 📅 Date range that jumps: set From / To and the actor binary-searches straight to that period instead of paging through every newer post.
  • 🔔 Monitoring mode: Only new messages since last run + an Apify schedule = a cheap Telegram keyword alert feed (crypto calls, brand mentions, job posts, deals, news).
  • 📊 Channel stats: title, description and subscriber count added to every row.
  • 🛡️ Robust: automatic retries with back-off, polite rate limiting, dedupe across keywords, clear warnings for private/missing channels.

Use cases

  • Crypto and trading research: collect posts from signal, project and news channels and filter for tickers or project names.
  • Brand and PR monitoring: get every public post mentioning your brand, product or competitors.
  • OSINT and journalism: archive what public channels posted within a date range.
  • Marketing: track competitor and ad channels, see which posts get the most views and reactions.
  • Data science: build text datasets from public channels for NLP and sentiment analysis.
  • Alerts: schedule it with monitoring mode and send new matches to Slack, email or a webhook.

How much does it cost?

This Actor uses pay-per-event pricing. You pay only for these events:

EventPriceWhen it is charged
Run started$0.005Once per run
Message scraped$0.0007Each Telegram post saved to the dataset ($0.70 per 1,000)

Examples:

  • 100 messages: $0.005 + 100 × $0.0007 = $0.075
  • 1,000 messages: $0.005 + 1,000 × $0.0007 = $0.705
  • An hourly monitoring run that finds 5 new posts: $0.0085 per run

Messages filtered out by keywords or dates are not charged. Set a maximum cost per run in Apify Console and the Actor stops cleanly when it is reached. Each page request returns up to about 20 posts, so 1,000 posts take roughly 50 requests; with the default polite rate limit that is a couple of minutes.

Limits

  • Public channels only. The channel must have Telegram's web preview (t.me/s/<channel>) enabled. Private channels, groups, DMs and member lists are not supported.
  • No login. It never uses a Telegram account, so it cannot see anything a logged-out visitor can't see.
  • No forward counts or comments. The public preview doesn't show them.
  • Media links expire. Photo and video URLs come from Telegram's CDN with temporary tokens; download media soon after the run if you need it.
  • Reaction and view counts are as Telegram shows them at scrape time (Telegram rounds large numbers, so 1.2K is returned as 1200).

Input

FieldWhat it doesExample
channels (required)Usernames or t.me links["durov", "https://t.me/s/telegram"]
keywordsOnly posts containing these["bitcoin", "ETF"]
keywordModeany / allany
wholeWordMatcheth won't match ethicsfalse
useTelegramSearchUse Telegram's search for keywords (fast)true
dateFrom / dateToYYYY-MM-DD, ISO, 7 days, 7d or last week2025-03-01
maxMessagesPerChannel0 = no limit (default 20)20
maxMessagesTotalHard cap across all channels0
onlyNewMessagesMonitoring modefalse
includeChannelInfoAdd title + subscriberstrue
skipMessagesWithoutTextDrop media-only postsfalse
maxRequestsPerMinute, requestDelaySecs, maxRequestRetries, proxyConfigurationAdvanced30, 1, 5, none
{ "channels": ["durov", "telegram", "cointelegraph"], "keywords": ["bitcoin", "TON", "ETF"], "dateFrom": "2025-01-01", "maxMessagesPerChannel": 10 }

Output (one row per message)

Real row from sample-output.json (long values trimmed):

{
"channel": "cointelegraph",
"messageId": 72722,
"url": "https://t.me/cointelegraph/72722",
"date": "2026-10-18T10:34:18.000Z",
"edited": false,
"author": null,
"text": "🇸🇻 HUGE: El Salvador's Bitcoin holdings now surpass 7,800 $BTC.\n\nNews | Markets | YouTube…",
"views": 2660,
"reactions": [
{
"emoji": "❤",
"count": 28
},
{
"emoji": "🔥",
"count": 12
}
],
"reactionsTotal": 42,
"isForwarded": false,
"forwardedFrom": null,
"replyTo": null,
"links": [
"https://cointelegraph.com/",
"https://cointelegraph.com/category/markets",
"https://www.youtube.com/@cointelegraph"
],
"linkPreview": null,
"media": [
{
"type": "photo",
"url": "https://cdn5.telesco.pe/file/t_3VrnYDK66Ayqyxws-zNZ_lKnYFq-1…",
"thumbnailUrl": null
}
],
"hasMedia": true,
"isServiceMessage": false,
"channelTitle": "Cointelegraph",
"channelSubscribers": 330000,
"matchedKeywords": [
"bitcoin"
],
"searchQuery": "bitcoin",
"scrapedAt": "2026-10-18T12:37:35.248Z"
}

See sample-output.json for a real run (22 posts from 3 channels).

FAQ

Telegram scraper vs Telegram API vs Telethon? Telethon and the Telegram API need an app ID, a phone number and a logged-in session, and heavy scraping can get that account limited. This actor reads only the public web preview, so there's nothing to log in to and nothing to get banned. The trade-off is that only public channels with web preview enabled are supported.

How do I scrape a channel? Enter one or more usernames or links in Channels, optionally add keywords or dates, and click Start. Results appear in the Output tab, ready to export.

Do I need a Telegram account or API key? No. The actor reads the public web preview at t.me/s/<channel>, the same page anyone can open in a browser.

Can it scrape private channels or groups? No, by design. Only public channels with web preview enabled. Private chats, groups and members are never touched.

Does it give forward counts? Telegram's public preview shows whether a post was forwarded and from whom (when public), but not how many times a post was forwarded, so forwardedFrom is returned and forward counts are not.

Why do video URLs stop working later? Telegram's CDN links carry a temporary token. Download media soon after the run if you need it.

Why did I get fewer messages than I asked for? The channel may have fewer posts in your date range or matching your keywords, or it may have web preview disabled. Check the SUMMARY record in the run's key-value store for per-channel counts and any problems.

Is it legal? It collects publicly available posts only. You are responsible for how you use the data (GDPR applies to personal data such as author names). Use reasonable rates; defaults are deliberately polite.

Integrations

Schedule it hourly with onlyNewMessages: true, then use Apify integrations to send new matches to Slack, email, Google Sheets, a webhook, Zapier or Make.

Changelog

  • 0.2 – runs no longer fail on bad input: invalid channel names, unreadable dates and string inputs are handled with a clear status message. Fuzzy Telegram searches stop after 5 pages with no match, and the run finishes cleanly before its timeout. Default is now 20 messages per channel, and 256 MB of memory is enough.
  • 0.1 – first release: keyword search, date seek, monitoring mode, channel stats.