Telegram Channel Monitor — Public Channel Posts Scraper avatar

Telegram Channel Monitor — Public Channel Posts Scraper

Pricing

from $1.50 / 1,000 posts

Go to Apify Store
Telegram Channel Monitor — Public Channel Posts Scraper

Telegram Channel Monitor — Public Channel Posts Scraper

Scrape and monitor public Telegram channels with no login or API key. Get posts with text, views, reactions, media, links, forwards and replies. Filter by date or keyword, or schedule it with 'only new posts' for alerts and a webhook.

Pricing

from $1.50 / 1,000 posts

Rating

0.0

(0)

Developer

LatentLark

LatentLark

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

27 minutes ago

Last modified

Share

Scrape and monitor public Telegram channels. You don't need a login, phone number or API key. Give it channel names or links. Each post comes back as one clean row with text, date, views, reactions by emoji, media, links, hashtags, mentions, forwards, replies, polls and edit status.

Schedule it with Only new posts to get just the posts published since the last run, with an optional webhook to Slack, Zapier, Make or n8n.

Telegram Channel Monitor results: one row per post with channel, date, text, views, reactions, media type and post link

Real output from a test run. Built and maintained by LatentLark.

Quick start (first run in about 30 seconds)

  1. Click Try for free (or Start in Console). The form is prefilled with the durov and telegram channels and 20 posts per channel.
  2. Click Start. You get up to 40 posts in the Output tab for less than $0.07.
  3. Replace the channels with your own. Usernames, @names and t.me links all work.
  4. For monitoring, set What to scrape to Only new posts since last run, choose a Monitor name, then Save as task and add a Schedule (for example hourly). Add a Webhook URL if you want each batch of new posts pushed to Slack, Zapier, Make or n8n.

How the first run looks (fill the form, click Start, get results):

Walkthrough: the prefilled form, click Start, then the posts table in the Output tab

What you can do with it

  • News and crypto alerts: watch breaking-news, exchange and project channels and get new posts within minutes of your schedule.
  • Brand and keyword monitoring: track mentions of your product, ticker or competitor across many channels with include and exclude keywords.
  • Market and media research: export a channel's history with views and reactions to find the posts with the most engagement.
  • AI and RAG pipelines: feed clean post text, links and dates into LLM summaries, sentiment analysis or a vector database.
  • Channel due diligence: pull exact subscriber counts, descriptions and verified status for a list of channels.

Input

FieldWhat it does
channelsUsernames (durov), @names or links (https://t.me/durov, https://t.me/s/durov, https://t.me/durov/123). There is no limit on how many.
modefull (newest first, back through history), lastNDays, fromDate (date range with fromDate / toDate), or onlyNew (monitoring).
maxPostsPerChannelCap per channel and run (default 100; 0 = no limit).
includeKeywords / excludeKeywordsCase-insensitive match on the text, link previews, polls and file names.
messageTypese.g. photo, video, album, document, audio, voice, poll, link, text. Empty = all.
minViewsOnly keep posts with at least this many views.
includeChannelProfileAdds one profile row per channel with the exact subscriber count, description, photo and verified flag.
monitorKeyName of the saved state for onlyNew (use one per monitor).
webhookUrlOptional: POST the run summary and up to 100 new posts as JSON when the run finishes.

Example inputs

Export the last 30 days of two channels with channel profiles:

{
"channels": ["durov", "https://t.me/s/tginfo"],
"mode": "lastNDays",
"lastNDays": 30,
"maxPostsPerChannel": 500,
"includeChannelProfile": true
}

Scheduled keyword monitor with a webhook (replace the webhook URL with your own):

{
"channels": ["durov", "@telegram", "https://t.me/s/tginfo"],
"mode": "onlyNew",
"monitorKey": "telegram-news",
"includeKeywords": ["update", "privacy"],
"includeChannelProfile": false,
"webhookUrl": "https://hooks.example.com/telegram"
}

Output

One dataset item per post:

{
"type": "post",
"channel": "durov",
"channelTitle": "Pavel Durov",
"postId": 552,
"url": "https://t.me/durov/552",
"date": "2026-10-11T14:52:40+00:00",
"text": "Designers × AI ...",
"views": 1450000,
"viewsRaw": "1.45M",
"reactions": [{ "emoji": "👍", "count": 15000, "kind": "emoji" }, { "emoji": "⭐", "count": 6850, "kind": "paid" }],
"reactionsTotal": 33190,
"mediaType": "video",
"media": [{ "type": "video", "thumbnailUrl": "https://cdn4.telesco.pe/...", "duration": "1:15" }],
"links": ["https://t.me/designers"],
"hashtags": [],
"mentions": ["designers"],
"forwardedFrom": null,
"replyTo": null,
"poll": null,
"linkPreview": null,
"edited": false,
"authorSignature": "Pavel Durov",
"scrapedAt": "2026-10-25T11:05:13+00:00"
}

Posts can also include document (file or audio title and size), poll (question, type, options with percentages), linkPreview (site, title, description, image), cashtags, isNew (in onlyNew mode) and textHtml (optional). With includeChannelProfile, a row with "type": "profile" is added for each channel: title, subscribers, description, verified, entityType (channel or group), photoUrl, and photo, video and link counters. A per-channel SUMMARY record (pages fetched, channels without a preview, errors) is written to the run's key-value store.

How monitoring works

In onlyNew mode the Actor remembers the last post ID per channel under your monitorKey. The first run returns the latest firstRunMaxPosts posts (20 by default) per channel as a baseline. Every later run returns, and charges for, only posts published since then. Schedule it every 15 minutes, hourly or daily.

Pricing

Pay per event, no subscription:

EventPrice
Actor start (per run, at the default 256 MB memory)$0.005
Post saved$0.0015 ($1.50 per 1,000 posts)
Channel profile saved$0.001 ($1 per 1,000 profiles)

Example: an hourly onlyNew check on 20 channels that finds 30 new posts costs about $0.05 per run. Posts dropped by your filters or by onlyNew are not charged. Set a maximum cost per run in Apify and the Actor stops cleanly when it reaches it.

Limitations

  • Works with public channels that have a web preview (t.me/s/<name>). Private channels, invite links (t.me/+...), groups and comment threads are not available. For names without a preview, the run reports it in SUMMARY, and the profile row still works.
  • Reactions with custom (premium) emoji come back as a customEmojiId without a printable emoji.
  • Large videos and some media only open in the Telegram app. You get the thumbnail, duration and post link, and mediaType is unsupported for posts the web preview cannot show. Media URLs from Telegram's CDN are temporary, so download files soon after the run if you need them.
  • View counts are rounded by Telegram (for example 1.45M). Profile subscriber counts are exact.
  • Keyword search in full and date modes uses Telegram's own channel search, which matches whole words. Turn off useTelegramSearch to scan every post for substring matches.
  • This Actor reads only public pages that anyone can open in a browser. It does not log in or use the Telegram API.

FAQ

Can I get alerts in Slack or email? Yes. Use webhookUrl, or schedule the Actor with onlyNew and connect an Apify integration (Slack, email, Zapier, Make). Can I export to Google Sheets? Yes. Use Apify's Google Sheets integration or LatentLark's Google Sheets Export & Import. A channel returned 0 posts. Why? It is probably private, a group, or has no web preview. Open https://t.me/s/<name> in a browser: if you see no posts there, the Actor can't see them either. The SUMMARY record lists channels without a preview. Why are some reactions missing an emoji? Those are custom (premium) emoji. You get the customEmojiId and the count. Found a problem? Open an issue on the Actor's Issues tab.

More from LatentLark