Telegram Channel Scraper - Posts, Media & Buttons | No Login

io.github.AnshumanAtrey由 GitHub 账号 AnshumanAtrey 发布v1.0.4更新于 Oct 29, 2026

Telegram Channel Scraper - No Login, $0.30 per 1K Posts

发布方自己的服务:posts.design

已验证Streamable HTTP可网页运行网页搜索与抓取媒体与设计

概览

AI 生成的概览

托管在 Apify 上的抓取工具,让助手无需登录即可获取公开 Telegram 频道的帖子、媒体链接、按钮和互动数据。

可以做什么
  • 抓取一个或多个公开 Telegram 频道的帖子,按最新优先,含正文、HTML、时间、浏览量、作者署名和编辑标记
  • 获取媒体信息:Telegram 的照片与视频链接、相册条目、文件名与大小、音乐标题与演唱者
  • 提取帖子下方的内联按钮(文字、链接、行、列),以及正文链接、链接预览、转发来源和回复对象
  • 读取表情回应及计数,以及投票的问题、选项占比和投票人数
  • 每行附带频道名称、数字 id 和订阅数,并给出每个频道的运行摘要,说明被跳过的频道及原因
适用场景
适合定时监控公开频道的新闻、公告、优惠或交易信号,构建用于研究或情感分析的帖子数据集,归档频道历史,或跟踪品牌、公众人物或竞争对手的发帖。
运行要求
远程 MCP 端点 mcp.apify.com,使用 OAuth;需要 Apify API token,通过 Authorization 请求头以 Bearer 形式发送。费用计入该 Apify 账户,每 1,000 条帖子 0.30 美元,无启动费。仅能读取公开频道,无需 Telegram 账号、手机号或 API key。
安装前请注意
按帖子数量在绑定的 Apify 账户上计费,建议设置消费上限作为硬性封顶。Authorization token 是敏感凭据,可访问该账户。只能读取公开频道,Telegram 签名的媒体链接会在数分钟到数小时内失效。数据来自 Telegram 公开网页预览,因此群组、私密频道和评论无法获取。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Telegram Channel Scraper - Posts, Media & Buttons | No Login,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.AnshumanAtrey%2Ftelegram-channel-scraper/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "telegram-channel-scraper-posts-media-but": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=anshumanatrey/telegram-channel-scraper"
    }
  }
}

README

Telegram Channel Scraper - Posts, Media & Buttons | No Login

Telegram channel scraper for public channels, with no login, no phone number and no API key. Paste a channel and get every post as a row: text, date, views, reactions, Telegram's own photo and video links, every album item, file names and sizes, the links in the text and the buttons under each post.

Available as an Apify Actor. $0.30 per 1,000 posts, no start fee. One required field.


What does it do?

You type one or more public Telegram channels and press Start. Each post comes back as one dataset row, newest first, with the same 27 columns every time, so it drops straight into a spreadsheet, a database or an AI pipeline.

  • The post itself. Plain text with emoji and line breaks kept, the original HTML (bold, links, spoilers), date in UTC, views, the author signature, whether it was edited, and "via @bot" when a bot posted it.
  • Media, as Telegram's own links. Photos, videos, GIFs, round videos, voice notes and stickers each come with Telegram's link, plus width, height, duration and thumbnail where Telegram shows them. An album is one row with every item listed, and each item keeps its own post id.
  • Files and music. Documents come with their file name and size (app-release.apk, 12.3 MB), music with its title and performer.
  • Inline buttons. The buttons under a post, with their text, link, row and column. On alert, signal and deal channels this is where the real link lives (the exchange filing, the checkout, the chart).
  • Links, previews, forwards and replies. Every link in the text, the preview card Telegram shows for a shared link, who a post was forwarded from, and which post it replies to, even in another channel.
  • Reactions and polls. Every reaction with its count, including custom emoji and paid star reactions. Polls with the question, each option's share and the voter count.
  • Channel details on every row. Channel name, title, numeric id (it survives a rename) and subscriber count, so each row stands on its own.

How is it different from other Telegram scrapers?

We read the output fields that the 10 most-used Apify Store scrapers reading Telegram's public web preview (the same source as this actor) declare in their dataset schemas and READMEs, on 2026-09-23. How many of the 10 list each field:

FieldOther web-preview scrapers (of 10)This actor
Inline buttons under a post0Yes, with text, link, row and column
Document file name and size0Yes
Every item of an album4Yes, each with its own post id
Reactions (custom emoji and paid stars too)5Yes
Author signature4Yes
Edited flag3Yes
Original HTML of the text2Yes
Poll question, options and voters1Yes
Video duration and thumbnail1Yes
Start fee per run4 of 10 charge oneNone
Price per 1,000 posts$2.00, the median of the 15 most-used Telegram channel scrapers$0.30

Two more things you only notice when something goes wrong:

  • Every skipped channel says why. Groups, personal accounts, bots, names that do not exist, private invite links and channels Telegram has blocked all look like an ordinary page to a scraper. This actor recognises each one and writes a plain reason ("@ru_python is a group, not a channel") into the run summary instead of returning an empty result. When Telegram blocks a channel it passes on Telegram's own words, for example "This channel can't be displayed because it violated local laws."
  • Posts the web preview hides still get their text. A few posts show only "Please open Telegram to view this post" on the web. The actor fetches the post's own page and recovers the text (up to about 1,000 characters, flagged with textTruncated when Telegram cut it).

When should I use it?

  • Monitoring channels every day or every hour for news, announcements, deals or signals, and feeding the posts into a sheet, a database or an alerting bot.
  • Collecting the links behind inline buttons, such as the exchange filing on an earnings-alert channel or the product link on a deals channel.
  • Building a dataset of posts for research, sentiment analysis or training, with views and reactions as engagement numbers.
  • Tracking what a brand, a public figure or a competitor posts, with the photos and videos alongside.
  • Archiving a channel's history back to its first post.
  • OSINT and journalism: who forwards whom, which channels quote each other, and a dated record of what a channel posted in case it later edits or deletes it.

What does it cost?

Pay per post: $0.30 per 1,000 posts ($0.0003 each). No start fee, no monthly fee, platform compute included. On paid Apify plans it is less: $0.27 per 1,000 on Scale and $0.24 on Business and above.

RunPostsPrice
The default input (the 100 newest posts of 2 channels)200$0.06
One channel, last 1,000 posts1,000$0.30
5 channels, 600 posts each3,000$0.90
10,000 posts10,000$3.00
A run where no channel could be read0$0.00

An album counts as one post. Apify's free plan includes $5 of monthly credit, which covers about 16,000 posts. Set a spending limit on a run for a hard cap: the run stops cleanly when it is reached and every post you paid for is saved.

How does the price compare with other Telegram scrapers?

The same job with the most-used Telegram scrapers on the Apify Store, worked out from each actor's live pricing on 2026-09-24. Apify free plan, one channel, each actor's default memory (some start fees are charged per GB of memory):

ScraperPer postStart fee100 posts1,000 posts10,000 postsNotes
This actor$0.0003None$0.030$0.30$3.00Same price on every plan
Telegram Keyword Search Scraper by lofomachines$0.0025$0.0002$0.25$2.50$25.00Also searches keywords across Telegram
Telegram Scraper by tri_angle$0.005$0.0001$0.50$5.00$50.00-
Telegram Channel Message by truefetch$0.00035$0.01$0.045$0.36$3.51Free-plan runs capped at 10 results
Telegram Channel & Profile Scraper by automation-lab$0.001$0.005$0.11$1.01$10.01Totals include $0.002 channel info per channel
Telegram Channels Scraper: Messages, Contacts & Leads by khadinakbar$0.002$0.003$0.20$2.00$20.00Totals include $0.001 channel info per channel
Telegram Channel Content & Media Scraper by webfinity$0.01None$1.00max 200 per channelmax 200 per channelLast 30 days only
Telegram Channel Posts Scraper - Comments & Media by fetch_cat$0.00045$0.005$0.050$0.45$4.48Also reads post comments
Telegram Chat Scraper by agentx$0.00054$0.01$0.064$0.55$5.41Free-plan runs capped at 10 results
Telegram Channel Scraper - Posts, Views & Engagement by viralanalyzer$0.03None$3.00max 500 per channelmax 500 per channel-
Telegram Channel Scraper - No Bot Token, No Phone Login by tugelbay$0.002$0.00005$0.20$2.00$20.00-
Telegram Channel Scraper - Messages & Members by george.the.developer$0.005None$0.50$5.00$50.00-
Telegram Channel Scraper by thescrapelab$0.00069$0.00005$0.069$0.69$6.90-

Several of these actors discount their prices on paid Apify plans, and this one does too: $0.27 per 1,000 posts on Scale and $0.24 on Business and above. fetch_cat, automation-lab and truefetch discount on the top tiers as well, so compare at your own plan if you run millions of posts. What each one returns also differs: see the field comparison above.

Which inputs does it take?

FieldRequiredWhat it does
channelsYesPublic channels, one per line. A name (durov), @durov, t.me/durov, https://t.me/s/durov, a post link like t.me/durov/123, a Telegram Web link like web.telegram.org/k/#@durov, telegram.me and telegram.dog links all work. Quotes and trailing punctuation from a pasted sentence are cleaned off
maxPostsNoThe most posts to take from each channel, newest first. The form starts at 100. Through the API you can leave it out: then you get the 100 newest, or every post since the date when you send one
postedAfterNoOnly posts on or after this date (UTC). Pick a date, or type a span like 7 days, 2 weeks, 3 months

When both limits are set, each channel stops at whichever it reaches first. Through the API:

json
{  "channels": ["durov", "https://t.me/telegram"],  "maxPosts": 500,  "postedAfter": "30 days"}

What does the output look like?

One row per post. A real row from an earnings-alert channel, run on Apify on 2026-09-23 (the photo link is shortened here):

json
{  "channel": "earnings_pulse",  "channelId": 2457353254,  "channelTitle": "Earnings Pulse",  "channelSubscribers": 16700,  "postId": 14397,  "postUrl": "https://t.me/earnings_pulse/14397",  "date": "2026-09-23T14:30:09+00:00",  "text": "📅 Tomorrow's Calendar - 24 Sep, 2026\nKey companies reporting results: #ESDS #PERNIASPOP\n\n @earnings_pulse",  "textHtml": "<i class=\"emoji\" ...",  "textTruncated": false,  "author": null,  "isEdited": false,  "isService": false,  "viaBot": null,  "views": 1600,  "reactions": [],  "forwardedFrom": null,  "replyTo": null,  "links": ["https://t.me/earnings_pulse"],  "buttons": [    {      "text": "📥 TV Watchlist",      "url": "https://earningspulse.ai/watchlist?source=calendar&market=IN&date=2026-09-24&exchange=nse&illiquid=false",      "row": 1,      "column": 1,      "type": "url"    }  ],  "linkPreview": null,  "mediaType": "photo",  "mediaUrl": "https://cdn5.telesco.pe/file/J_2-EXw1QZwMA0WAXI6R4bti3qSdjie6...jpg",  "media": [    {      "type": "photo",      "url": "https://cdn5.telesco.pe/file/J_2-EXw1QZwMA0WAXI6R4bti3qSdjie6...jpg",      "thumbnailUrl": null,      "width": 800,      "height": 551,      "durationSeconds": null,      "fileName": null,      "fileSize": null,      "fileId": "6170246302470443471",      "postId": 14397,      "unavailable": null    }  ],  "poll": null,  "unsupported": null,  "scrapedAt": "2026-09-23T17:55:18+00:00"}

A file post from the same run, media part only. Telegram shows the name and size but gives no public download link, so url is empty and unavailable says why:

json
{  "postUrl": "https://t.me/magisk_update/8",  "isEdited": true,  "mediaType": "document",  "media": [    { "type": "document", "url": null, "fileName": "app-release (1).apk", "fileSize": "12.3 MB", "postId": 8, "unavailable": "no_public_link" }  ]}

A poll:

json
{  "postUrl": "https://t.me/polls/161",  "poll": {    "question": "By 2030, what will be NATO's biggest challenge to its unity and effectiveness?",    "type": "Anonymous Poll",    "options": [      { "text": "Rising US isolationism pulling back from commitments", "percent": 0 },      { "text": "Internal member state political divisions", "percent": 67 },      { "text": "An increasingly aggressive Russia or China", "percent": 33 }    ],    "voters": 3  }}

The run summary is the OUTPUT record (Console: the Output tab; API: the default key-value store, key OUTPUT). It lists every channel you typed with its status (ok, partial or skipped), the reason in plain English, the number of posts and the newest and oldest post dates. There is no summary row in the dataset, so CSV and Excel exports hold posts only.

How fast is it?

Measured on Apify at the default 256 MB on 2026-09-23:

  • The default input, 200 posts from 2 channels: 6.5 seconds.
  • 2,400 posts from 5 channels read at the same time: 64 seconds.
  • 2,000 posts from one channel: 142 seconds, about 14 posts a second per channel. Five channels are read at once.
  • The parser was checked against 1,165 real posts from 89 pages of more than 60 channels (news, crypto, files, music, polls, stickers, albums): 0 errors, and the text matched a second, independent HTML parser on 1,162 of 1,165 posts (the other 3 differ by one doubled space).

More memory does not make it faster: at 512 MB the same 2,000 posts took 125 seconds instead of 142. The time goes into waiting for Telegram, not into computing.

Common questions

Q: Is this an alternative to Telegram Scraper by tri_angle, Telegram Keyword Search Scraper by lofomachines or Telegram Channel Message by truefetch? For reading public channels, yes, at $0.30 per 1,000 posts with no start fee and no 10-result cap on the free plan (see the price table above). Two things it does not do: keyword search across all of Telegram (lofomachines' actor does that) and the comments under posts (fetch_cat's actor reads them).

Q: Do I need a Telegram account, a phone number or an API key? No. The actor reads Telegram's public web preview of each channel (t.me/s/<channel>), the same page anyone can open in a browser.

Q: Can it read groups, private channels or personal accounts? No. Telegram only shows public channels on the web. Groups, private channels, invite links, bots and personal accounts are skipped, and the run summary says which kind each one was.

Q: Why was a channel skipped? The summary gives the reason. The common ones: the name is a group or a person, the channel does not exist, its owner turned off the web preview, or Telegram blocks it. Some channels are blocked only in some countries; from Apify's servers we saw one channel refused with "This channel can't be displayed because it violated local laws."

Q: Does it download the photos, videos and files? No. It returns Telegram's own links, which keeps the price low and your data yours. Photos are Telegram's web images, up to 800 pixels on the long side. Videos come as the full original file when Telegram shows them on the web, which was about 7 in 10 of the 169 videos we checked; larger ones come with a thumbnail and "unavailable": "too_big". Documents and music have no public link on Telegram's web at all, so you get the name and size, and postUrl opens the post in Telegram.

Q: How long do the media links work? Telegram signs them and they expire, anywhere from minutes to a few hours. Download what you need soon after the run, or run again for fresh links. fileId stays the same across runs for photos and videos, so you can tell whether a file is one you already have.

Q: How do I get a channel's whole history? Set maxPosts to a big number, such as 100000, and leave the date empty. The actor walks back to the first post the web preview shows, at about 14 posts a second per channel.

Q: How do I check a channel every day for new posts? Save the input as an Apify task with postedAfter set to 1 day and schedule it daily. Each run then returns only the last day's posts.

Q: Are comments included? No. The discussion under a post is a separate group, which Telegram does not show in the channel's web preview.

Q: What is unsupported? Telegram's own label for something its web preview cannot show, such as a giveaway, a paid post or a very large video. The post is still returned with everything else Telegram shows, never dropped.

Q: What is isService? Channel events such as "Channel created", "Channel photo updated", a pinned message or a live stream. They are returned as rows flagged isService: true, and cost the same as a post.

Q: Can I call it from code or an AI agent? Yes. Start it through the Apify API or the Apify MCP server with the JSON input above and read the dataset. Every field is always present, empty (null) when a post has no such part.

Limitations

  • Public channels only, as Telegram shows them on the web.
  • Photos are Telegram's web size (800 pixels on the long side). Files, music and the largest videos have no public link.
  • Media links expire after minutes to a few hours.
  • No comments and no forward counts, because the web preview does not show them.
  • A channel's history is read one page of about 20 posts after another, so one very large channel takes time: about 800 posts a minute.

About the maintainer (priority response within 1-2 hours)

Built and maintained by Anshuman Atrey (@AnshumanAtrey).

  • Purple-team security researcher, 5x hackathon winner
  • Co-founder of Walrus Securitas (AI cybersecurity SaaS) and The Drone Syndicate (autonomous defence drones)
  • Author of the OSINT and data actor portfolio on Apify Store: 16 shipped actors covering email, phone, username, IP and domain, network, secret, social, LinkedIn, domain history, Telegram and Indian fintech data

Custom feature requests shipped within 1-2 hours (priority)

If you need a field, a filter or an output format this actor does not have, the maintainer ships it directly into this actor, typically within 1-2 hours for priority requests during active hours and within 24 hours overnight. This is direct one-to-one service from the maintainer, not a contractor queue.

Fastest contact channels (ranked by response speed):

  1. LinkedIn DM -> linkedin.com/in/anshumanatrey, typically under 1 hour during active hours
  2. GitHub issue on this actor's repo
  3. Apify Console DM to @anshumanatrey
  4. Email via atrey.dev

Sibling actors by the same maintainer

ActorUse case
social-analyzerUsername -> profiles across 900+ social sites with confidence scoring
instagram-profile-intel-no-loginInstagram username -> bio emails + phones + 25 fields (no login)
yt-dlp-video-link-extractorAny video URL -> direct stream and download links + metadata, 1000+ sites
holehe-email-osintEmail -> registered accounts across 120+ platforms
linkedin-harvesterEmail -> best-match public LinkedIn profile URL + confidence score
domain-history-contact-osintDomain -> past owners, WHOIS history and contacts with a source for each
theharvester-osintDomain -> emails + subdomains + IPs from 54+ public sources
phoneinfoga-phone-osintInternational phone -> country, footprint URLs, OSINT trail
netintelIP or domain -> unified WHOIS + DNS + GeoIP + ASN + ports
nmap-scannerNetwork -> port + service + version detection, NSE scripts
bug-bounty-finderDomain -> active HackerOne + Bugcrowd + security.txt programs
gitleaks-github-secret-scannerGitHub -> leaked API keys across 30+ services
betterleaks-cloudGitHub + S3 -> leaked secrets with live vendor-API validation
upi-id-osintIndian phone or VPA -> active UPI IDs + bank-registered name from NPCI

Documentation

Last updated

2026-09-23 (version 1.0)

来源:README.md,提交 ac4abbb

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

2
  1. v1.0.4最新Oct 29, 2026
  2. v1.0.3Sep 24, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Posts 集成