Telegram Channel Scraper & Monitor: Posts, Views, Search avatar

Telegram Channel Scraper & Monitor: Posts, Views, Search

Pricing

from $0.85 / 1,000 posts

Go to Apify Store
Telegram Channel Scraper & Monitor: Posts, Views, Search

Telegram Channel Scraper & Monitor: Posts, Views, Search

Scrape public Telegram channels without login: every post with text, date, views as numbers, reactions, links, photos and videos, plus channel profile and exact subscriber count. Keyword search inside channels and 'only new posts' monitoring.

Pricing

from $0.85 / 1,000 posts

Rating

0.0

(0)

Developer

Hydrocore Data

Hydrocore Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Download the posts of any public Telegram channel into a spreadsheet: text, date, view count as a real number, reactions, links, photos, videos, files and polls, plus the channel's profile and subscriber count. You can search inside channels by keyword and, on a schedule, get only the posts that are new since the last run.

You don't need a Telegram account, phone number, API key or login. The scraper reads the same public web preview anyone can open at https://t.me/s/<channel> in a browser.

What does it do?

You give it one or more channel names, such as durov, @whale_alert_io or https://t.me/telegram. For each channel it saves:

  • Posts (one row each): post link and number, date, text, views (for example "4.24M" becomes 4240000), each reaction with its count (including paid ⭐ star reactions), links, hashtags, @mentions, $cashtags, photos, videos, files, polls, link previews, forwarded-from and reply-to info, and whether the post was edited.
  • Channel profile (one row per channel): title, description, verified badge, exact subscriber count, photo, and the counts of photos, videos, files and links.

Optional extras:

  • Search inside channels: uses Telegram's own in-channel search to find only posts that contain your words.
  • Date filters: posts from a date range or the last N days.
  • Monitoring: "Only new posts since the last run" remembers what you already received, so scheduled runs return and charge only new posts.
  • Crypto addresses: finds Ethereum/EVM, Tron and Solana wallet or contract addresses in the post text.

What can I use it for?

  • Crypto and trading signals: collect posts from signal, whale-alert or project channels every hour and feed them into a bot or spreadsheet.
  • News and OSINT monitoring: follow news, government or conflict channels and keep an archive of what was posted and when.
  • Brand and competitor tracking: see what competitors post, which posts get the most views and reactions, and how fast their audience grows.
  • Marketing research: compare channels by subscribers, views per post and engagement before buying an ad or partnership.
  • Keyword alerts: search channels for your brand, a token name or a topic and get only new matches each day.
  • Data for AI and research: build clean text datasets from public channels.

How do I use it?

  1. Click Try for free (or Start).
  2. Under Telegram channels, enter one channel per line: the name (durov), @durov, or a link (https://t.me/durov).
  3. Optionally add Search inside the channels words, a date range, or Max posts per channel (default 100).
  4. Click Start. Small runs usually finish in under 10 seconds.
  5. Open the Posts or Channels table, or download everything as Excel, CSV, JSON or HTML.

Monitoring tip: turn on Only new posts since the last run, then create a Schedule (for example every hour) in Apify. The first run saves the current posts; every later run gives you only new posts. Use Monitoring list name if you run several schedules so their memories don't mix.

Input

FieldWhat it doesExample
Telegram channelsPublic channels, one per line (name, @name or link)durov, https://t.me/telegram
Search inside the channelsOptional words; only posts found by Telegram's channel search are savedbitcoin, ETF
Max posts per channelDefault 100; 0 = profile only200
Sort messages byNewest first (default), oldest, most views or most reactions; applied before the limitmostViews
Minimum viewsSkip posts with fewer views (not charged)100000
Max posts in totalStop the whole run after this many posts1000
Posted on or after / beforeDate range2026-10-01
Or: posted in the last N daysSimple alternative to a date range7
Only new posts since the last runMonitoring mode (see above)true
Monitoring list nameOptional name for the monitoring memorycrypto-signals
Save postsTurn off to get only channel profilestrue
Find crypto wallet / contract addressesAdds cryptoAddresses to each postfalse
Max spend for this run (USD)The run stops before it would cost more0.50
ProxyOptional, normally not neededoff

Example input:

{
"channels": ["durov", "https://t.me/telegram"],
"maxMessagesPerChannel": 20
}

Output

Every row has recordType: message (one post) or channel (the channel profile). Rows of the same type always have the same columns in the same order, with null for anything a post doesn't have, and dates in ISO 8601 UTC. Below is a real post row from a test run on 2026-11-05 (input above; long text, lists and the photo link are shortened):

{
"recordType": "message",
"channel": "durov",
"channelTitle": "Pavel Durov",
"messageId": 548,
"publishedAt": "2026-09-11T16:04:02.000Z",
"text": "🤝 Telegram has become the sponsor of Codeforces — the largest competitive programming platform in the world.\n\n ⚡CodeForces organizes over...",
"views": 4060000,
"reactionsTotal": 79800,
"firstPhotoUrl": null,
"photoCount": 0,
"videoCount": 0,
"documentCount": 0,
"linkCount": 1,
"isForwarded": false,
"forwardedFromName": null,
"forwardedFromUrl": null,
"isReply": false,
"replyToUrl": null,
"replyToAuthor": null,
"replyToText": null,
"linkPreviewUrl": "https://codeforces.com/blog/entry/156620",
"linkPreviewSiteName": "Codeforces",
"linkPreviewTitle": "Telegram Returns as Title Sponsor of Codeforces!",
"linkPreviewDescription": "Hi, Codeforces!",
"linkPreviewImageUrl": "https://cdn4.telesco.pe/file/J3y4bSZ0MHHlOkGwzSlBok60Tw37kivBKJ7T8Anxhp0FMCBDS0J9Oi1qLkbKZ5ZQftp0vkQk6oWOPOwAHj7Uhz-_8DHPVW3bLnnystop-iVE...",
"pollQuestion": null,
"pollType": null,
"pollOptions": null,
"edited": false,
"hasUnsupportedMedia": true,
"mediaGroup": false,
"url": "https://t.me/durov/548",
"viewsText": "4.06M",
"reactions": [
{
"emoji": "⭐",
"customEmojiId": null,
"paidStars": true,
"count": 21900,
"countText": "21.9K"
},
{
"emoji": null,
"customEmojiId": "5399847211989246390",
"paidStars": false,
"count": 36900,
"countText": "36.9K"
},
"..."
],
"photos": null,
"videos": null,
"documents": null,
"links": [
"https://codeforces.com/blog/entry/156620"
],
"hashtags": null,
"mentions": null,
"cashtags": null,
"cryptoAddresses": null,
"isNew": null,
"searchKeyword": null,
"scrapedAt": "2026-11-05T04:31:08.417Z"
}

And the channel profile row from the same run:

{
"recordType": "channel",
"channel": "durov",
"channelTitle": "Pavel Durov",
"subscribers": 10125968,
"subscribersExact": true,
"subscribersText": "10.1M",
"verified": true,
"description": "Founder of Telegram.",
"photoUrl": "https://cdn4.telesco.pe/file/AM3EaKY4OWoCIpqIJGL2G4hcjBupbm4OuzSyAnEGF2gBOPJJIYOcnXbjDp...",
"photosCount": 102,
"videosCount": 47,
"filesCount": null,
"linksCount": 200,
"url": "https://t.me/durov",
"scrapedAt": "2026-11-05T04:31:08.379Z"
}

Views. The Output tab opens in Overview (photo, channel, date, text, views, reactions, link; profile rows show the title and subscribers). There are also Engagement, Media and links, Forwards and replies, Channels and Detailed (all fields) views. In views that mix both row types, the columns of the other type are just empty.

Sorting and filters. Sort messages by (newest, oldest, most views, most reactions) is applied before Max posts per channel, so "top 10 most viewed in the last 30 days" really is that. Minimum views skips smaller posts without charging for them.

Changed in v1.1: type → recordType, date → publishedAt. The nested forwardedFrom, replyTo, linkPreview and poll objects are now flat columns (forwardedFromName, forwardedFromUrl, replyToUrl, replyToAuthor, replyToText, linkPreviewUrl/SiteName/Title/Description/ImageUrl, pollQuestion, pollType, pollOptions), plus new isForwarded, isReply, firstPhotoUrl, photoCount, videoCount, documentCount, linkCount. Empty lists are now null. New inputs Sort messages by and Minimum views.

The run also saves a RUN_SUMMARY record (key-value store) with, per channel, how many posts were saved, how many pages were read, and any problems in plain English.

How much does it cost?

You pay per result (pay-per-event). Apify platform usage is included.

EventPriceWhen
Run start$0.0005Once per run
Post$0.00085Each post saved ($0.85 per 1,000)
Channel profile$0.0015Once per valid channel per run

Worked examples (based on our test runs on 4 November 2026, at current prices):

RunCalculationTotal
2 channels, 20 posts each$0.0005 + 40 × $0.00085 + 2 × $0.0015$0.0375
1 channel, 120 posts$0.0005 + 120 × $0.00085 + $0.0015$0.104
1,000 posts from 1 channel$0.0005 + 1,000 × $0.00085 + $0.0015$0.852
Hourly monitoring run with no new posts$0.0005 + 1 channel profile$0.002
3 channel profiles only$0.0005 + 3 × $0.0015$0.005
Channel that doesn't exist or is privaterun start only$0.0005

Posts outside your date range, posts you already received in monitoring mode and duplicate posts are never charged. Set Max spend (or Apify's "Maximum cost per run") and the run stops cleanly before going over. The run start fee counts toward that limit.

How does it compare?

Other Telegram scrapers on the Apify Store, from their public Store listings checked on 4 November 2026. Prices and ratings change, so please check the listings for current figures.

ActorPriceRating
This actor$0.00085 per post, $0.0015 per channel, $0.0005 per runnew
automation-lab/telegram-scraper$0.005 start + $0.001 per message + $0.002 per channel5.0 (2 reviews)
lofomachines/telegram-keyword-search-scraper$0.0025 per result5.0 (1 review)
tri_angle/telegram-scraper$0.005 per result2.81 (17 reviews)
khadinakbar (Telegram scraper)$0.002 per result—
fetch_cat (Telegram scraper)$0.005 start + $0.00045 per result—
truefetch/telegram-channel-message$0.00035 per result3.11 (4 reviews)

Why we think this one is a good choice:

  • Competitive pricing with pay-only-for-useful-results — out-of-range, duplicate and already-seen monitoring posts are free.
  • Views and reactions as real numbers (4240000, not "4.24M"), ready for sorting and charts. The original text is kept too.
  • Exact subscriber counts from the channel page, not rounded ones.
  • Monitoring mode that charges only for new posts, built for hourly schedules.
  • In-channel keyword search using Telegram's own search.
  • Fast and light: plain web requests, no browser. In our tests, 40 posts from 2 channels took under 5 seconds.
  • Fails softly: a wrong channel name is skipped (not charged) with a clear message; the other channels still run.

FAQ

What is a "scraper"? A program that opens public web pages and copies the information into a table for you. This one opens Telegram's public channel previews and turns each post into a row.

Is it legal to scrape Telegram channels? The scraper only reads public channels that Telegram itself publishes on the web at t.me/s/, which anyone can open without an account. It does not log in, join channels, read private chats or groups, or get around any access control. Posts can contain personal data (for example names in the text), so you are responsible for using the data lawfully, for example under the GDPR, and for respecting copyright and Telegram's terms. If in doubt, ask a lawyer.

Do I need a Telegram account, API key or proxy? No. A proxy is optional; turn it on only if you see repeated "too many requests" messages in the log.

Why doesn't my channel work? Only public channels with a web preview work. Private channels (invite links like t.me/+abc), groups, personal accounts and bots have no public preview, and some channels turn the preview off. These are skipped with a note in the log and are not charged; only the $0.0005 run fee applies.

Why are view counts slightly rounded? Telegram's web preview shows views rounded (for example 4.24M). We convert that to a number (4240000); the exact figure isn't public. Subscriber counts, by contrast, are exact.

How does monitoring work? With Only new posts since the last run on, the scraper remembers the newest post number it gave you for each channel (and keyword). The next run returns only newer posts, and you pay only for those plus the channel profile ($0.0015) and the $0.0005 run fee. The very first run works like a normal run and saves the starting point.

Can I get very old posts? Yes. The scraper pages back through the channel's history until it reaches your Max posts or date limit.

How fast is it? In our tests, 40 posts from 2 channels took under 5 seconds and 120 posts from one channel about 7 seconds. It waits a little between pages on purpose so Telegram stays happy.

Limits

  • Public channels with a web preview only: no private channels, groups, comments, user accounts or bots.
  • Views are rounded the way Telegram shows them; reactions with custom emoji give the emoji id, not a picture.
  • Some media (for example some stickers, round videos or very large files) are not shown in the web preview. Those posts have hasUnsupportedMedia: true and a link to the post.
  • Telegram's in-channel search decides what matches a keyword; it may miss word forms or match parts of words.
  • Each request has a short time limit and a run stops cleanly after about 60 seconds of failed requests in total, or after 45 minutes, saving what it has.
  • Telegram can change its web preview without notice. If something breaks, please open an issue and we'll fix it quickly.

Support

Found a bug or need a field we don't have yet? Open an issue on the Issues tab and include the run link.