# Telegram Public Channel Scraper (`myagizm/telegram-channel-scraper`) Actor

Collect public Telegram channel details and recent posts with text, dates, views and media indicators from channels available in the public web preview.

- **URL**: https://apify.com/myagizm/telegram-channel-scraper.md
- **Developed by:** [MYM](https://apify.com/myagizm) (community)
- **Categories:** Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.20 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Telegram Channel Scraper: Public Posts and Channel Details (No Login)

<p align="center">Apify Actor · Public Telegram channels · No login · No phone number · JSON / CSV export · Pay per result</p>

**Collect public Telegram channel details and recent visible posts.** The dataset includes channel title, description and subscriber count when shown, plus post text, timestamp, view count, photo/video indicators, and a link back to each public post. Use it for a small set of known public channels; private chats, member lists, and full-history claims are outside the product.

> Start with the prefilled `telegram` channel, check the channel row and latest posts, then add other public usernames.

### Table of contents

- [What it does](#what-it-does)
- [Who uses it](#who-uses-it)
- [Data fields](#data-fields)
- [How to run it](#how-to-run-it)
- [Input example](#input-example)
- [Output example](#output-example)
- [Coverage and limits](#coverage-and-limits)
- [Pricing](#pricing)
- [Tips](#tips)
- [Other public data Actors](#other-public-data-actors)
- [MCP and API](#mcp-and-api)
- [Support](#support)
- [FAQ](#faq)
- [Related searches](#related-searches)
- [Disclaimer](#disclaimer)
- [Resources](#resources)
- [中文说明](#中文说明)

### What it does

- Read channel profile details exposed by Telegram’s public web preview.
- Return recent visible posts as separate flat dataset rows.
- Capture public text, timestamps, view counts, and photo/video presence flags.
- Keep channel and post URLs in the dataset for source review.
- Enforce one combined maxItems cap across every input channel.
- Reject an empty placeholder page instead of turning it into a billable fake channel row.

The source is a public preview page. This Actor does not log in to Telegram, download media, read private messages, or enumerate channel subscribers.

### Who uses it

- Communications teams monitoring public announcement channels.
- Researchers collecting public channel posts for topic analysis.
- Newsrooms checking a publisher’s latest public posts.
- Crypto or technology analysts tracking a known public feed.
- Automation builders routing public posts to an internal review queue.
- Teams comparing visible subscriber and view snapshots over time.

### Data fields

A valid channel row has `type`, `username`, and a public `url`. A post row has `type`, `channel`, and its public post `url`. Optional fields depend on what Telegram displays.

| Field | Type | Description |
|---|---|---|
| `type` | string | channel profile or post row. |
| `username` | string or null | Channel username on profile rows. |
| `channel` | string or null | Channel username on post rows. |
| `title` | string or null | Public channel title. |
| `description` | string or null | Public channel description. |
| `subscribers` | integer or null | Subscriber count shown by the public page. |
| `photo` | string or null | Public channel photo URL, when present. |
| `id` | string or null | Public post ID. |
| `text` | string or null | Post text shown in the public preview. |
| `date` | date-time or string | Post timestamp, when present. |
| `views` | integer or null | Public view count when present. |
| `hasPhoto` | boolean | Whether the visible post includes a photo. |
| `hasVideo` | boolean | Whether the visible post includes a video. |
| `url` | string | Public channel or post URL. |
| `sourceType` | string | Always telegram. |

The Actor does not fetch a media file. `hasPhoto` and `hasVideo` indicate the content visible in the post preview; `photo` is the channel profile photo URL where the page supplies one.

### How to run it

1. Open the Input tab and keep `telegram`, or enter a public channel username such as `durov`.
2. You may also use a public `t.me/<username>` link. Private invite links are not supported.
3. Choose maxItems for the combined profile and post rows. A channel profile row uses one row of the cap.
4. Start the Actor and inspect Overview, Public posts, or Channel profiles.
5. Save the post ID and URL if you plan to compare later snapshots.

The cap applies to the whole run, not separately to each channel. If one channel fills the cap, later channels may not be read. Use individual tasks when you need separate per-channel snapshots.

### Input example

```json
{
  "channels": ["telegram", "durov"],
  "maxItems": 20
}
```

`channels` is a list of public usernames or links. `maxItems` is the combined number of rows to store. The Actor does not accept login details, phone numbers, cookies, proxy credentials, or private invite tokens.

### Output example

These rows come from a live public Telegram channel run. They show a profile row and two visible posts; the source page can change after collection.

```json
[
  {
    "type": "channel",
    "username": "durov",
    "title": "Pavel Durov",
    "description": "Founder of Telegram.",
    "subscribers": 10600000,
    "url": "https://t.me/durov",
    "sourceType": "telegram"
  },
  {
    "type": "post",
    "channel": "durov",
    "id": "528",
    "text": "⛔️ The UK government wants to ban social media for children under 16.But banning social media for kids only puts them in greater danger.They will be pushed to use VPNs — and unlock far worse illegal content.We’ve seen this before.When the Russian government banned Telegram, 95% of Russian teenagers kept using it. They just moved to VPNs. Same in Iran.Parents already have the tools to restrict their kids’ digital habits: parental controls, screen-time limits — or no smartphone at all.🤦‍♂️ Instead, many parents give toddlers iPads just to keep them quiet.No amount of government regulation will fix that.Under the new law, all social media users in the UK will have to “prove” they’re over 16 — with an ID, face scan or bank card.🚨 Thousands in the UK are already arrested for political posts every year. Is this really about protecting children — or identifying more people to arrest?P. S. More about digital freedom in my speech — the source material for our $200,000 clipping contest.",
    "date": "2026-06-15T18:58:13+00:00",
    "views": 18900000,
    "hasPhoto": false,
    "hasVideo": false,
    "url": "https://t.me/durov/528",
    "sourceType": "telegram"
  },
  {
    "type": "post",
    "channel": "durov",
    "id": "529",
    "text": "🚫 India’s IT ministry banned Telegram for one week because some users shared leaked exam questions.This punishes 150 million ordinary Telegram users in India — not the insiders who leaked the exam materials.And the ban hasn't stopped anything. The leaks just moved to other apps.🛡 We’ve done a lot to help fix the problem — even though its source is not Telegram.Over the past few weeks, we removed hundreds of channels sharing leaked exam materials and related scams in India.We’ve also been making the “edited” label more visible to prevent backdating scams.🏳️ Telegram is a force for good. Banning it — even temporarily — is a mistake.",
    "date": "2026-06-16T15:05:29+00:00",
    "views": 9660000,
    "hasPhoto": false,
    "hasVideo": false,
    "url": "https://t.me/durov/529",
    "sourceType": "telegram"
  }
]
```

A channel row and its posts share the same dataset. Filter `type=post` for content rows or use the `channels` view for profile fields.

### Coverage and limits

Telegram controls which content appears in its public web preview. This Actor reads that visible window and does not claim complete channel history. A channel can return fewer posts than maxItems; older posts may fall outside the preview. Subscriber and view counts are snapshots. Media files are not downloaded, and private or login-gated content is not accessed.

The input schema permits up to 20 channels and 100 combined rows per run. The free Apify plan allows 40 requested result rows per Actor per UTC day; the request cap is counted even if the page returns fewer rows. Paid Apify plans are unlimited under this rule. A nonexistent channel that renders as an empty HTTP 200 page produces no dataset row and fails cleanly without a result charge.

### Pricing

This Actor uses PAY_PER_EVENT pricing. Every stored dataset row is one `apify-default-dataset-item` event. A channel profile row and each returned post row are each billable. There is no separate Actor-start fee. Empty or inaccessible inputs do not create result events.

### Tips

- Use the channel username, not a display name; `telegram` and `durov` are confirmed public examples.
- For repeat monitoring, store channel plus post ID and upsert in your own database.
- Use a low maxItems cap for frequent schedules; public pages often expose only a limited recent window.
- Keep a channel profile row separate from post rows in downstream analytics.
- Treat subscriber and view counts as snapshots, not a time series until you have multiple dated runs.
- Use the post URL to review context before quoting or republishing text.
- A valid public channel can still have no visible recent posts. The Actor does not invent content to fill the requested cap.
- Do not submit private links or personal data that you are not authorized to process.

### Other public data Actors

For posts on other public networks, see [X Tweet Scraper](https://apify.com/myagizm/x-tweet-scraper), [Reddit Scraper](https://apify.com/myagizm/reddit-scraper), [Facebook Page Scraper](https://apify.com/myagizm/facebook-page-scraper), and [LinkedIn Profile Posts Scraper](https://apify.com/myagizm/linkedin-profile-posts-scraper). Browse all tools by [myagizm](https://apify.com/myagizm).

### MCP and API

An AI agent can call this Actor through Apify MCP, read the run status, and fetch the dataset. Set public channel names and a row limit explicitly. The MCP/API call does not grant access to private Telegram chats or groups.

Run synchronously and return dataset items:

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~telegram-channel-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN&format=json' \
  -H 'content-type: application/json' \
  -d '{"channels":["telegram"],"maxItems":20}'
```

Start an asynchronous run:

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~telegram-channel-scraper/runs?token=$APIFY_TOKEN&waitForFinish=300' \
  -H 'content-type: application/json' \
  -d '{"channels":["durov","telegram"],"maxItems":20}'
```

Fetch dataset items after reading `defaultDatasetId` from the run:

```bash
curl 'https://api.apify.com/v2/datasets/$DATASET_ID/items?token=$APIFY_TOKEN&format=json&clean=true'
```

### Support

Open an Issue and include the Actor run ID, UTC time, public channel username, and the missing field or error. Never include your Apify API token, phone number, verification code, or private Telegram content.

### FAQ

#### What does this Telegram Actor collect?

It reads public channel pages available through Telegram’s web preview and returns a channel-information row plus recent visible post rows. It does not read private chats, private groups, or subscriber lists.

#### Which channel inputs are accepted?

Use a public channel username such as telegram or durov, or a public t.me link. The scraper normalizes @ prefixes and the public /s/ preview form. Keep one channel per list entry.

#### Does the Actor need a Telegram login?

No login, phone number, session file, or Telegram account is requested. If a channel is private or Telegram does not expose its public preview, the run returns no billable rows for that target.

#### Does it collect the entire channel history?

No. The public preview exposes a recent window, not the channel’s complete archive. This Actor returns posts visible on that page and caps the combined output with maxItems.

#### Why is there a channel row as well as post rows?

The first row describes the channel: username, title, description, approximate subscriber count, photo link, and channel URL. Subsequent rows represent visible posts. Each stored row is priced as one result.

#### Are photos and videos downloaded?

No media files are downloaded. Post rows include hasPhoto and hasVideo flags and the public post URL; the channel row may include a public profile photo URL.

#### Why might a subscriber count be missing?

Telegram may change its page markup or omit a count for a channel. A missing value is left empty; the Actor does not invent or estimate a count.

#### Are view counts exact?

Views are read from the visible public post page at collection time. Telegram can update them later, so treat them as a timestamped snapshot.

#### What is the maximum result size?

The form allows up to 100 combined rows per run and 20 channel inputs. The underlying public preview often exposes fewer posts than the requested cap.

#### How does the free-plan limit work?

The free Apify plan is limited to 40 requested result rows per Actor per Apify user per UTC day. Paid Apify plans are not subject to this daily quota. The count is based on the requested cap, not only the rows that happened to be returned.

#### When am I charged?

Each dataset row written by a successful run is one PAY_PER_EVENT result. That includes the channel profile row and every post row. A failed target that produces no row does not create a result event.

#### What happens if a channel does not exist?

A nonexistent public preview can still return an HTML page with HTTP 200. The Actor rejects the empty channel placeholder, returns no dataset row, and fails the run without a result charge.

#### Can I scrape a Telegram group’s members?

No. This product is for public channel pages and their visible posts. It does not enumerate members, phone numbers, private messages, or hidden group content.

#### Can I use a private invite link?

No. Only public channel names and public links are supported. A private invite, login gate, or access-denied page is not a request to bypass access controls.

#### Why can post text contain odd spacing?

Telegram’s public preview can include non-breaking spaces, carousel labels, or text formatting. The returned text follows the rendered public page; it is not a transcript of an original message file.

#### Does maxItems apply per channel?

No. maxItems is a combined cap for the whole run. The first channel can use several rows of that cap, so use separate runs when you need an equal cap for each channel.

#### How do I monitor more than one channel?

Provide a list of public usernames. The Actor processes them in order and returns rows until the combined cap is reached. Use a smaller maxItems for recurring monitoring.

#### Can I schedule a channel snapshot?

Yes. Create an Apify schedule with a known public channel username and a modest maxItems. Each run is a new snapshot; deduplicate posts in your own store using the channel and post ID.

#### Which export formats are available?

Use the Apify dataset export menu or API to download JSON, JSONL, CSV, Excel, or another supported format. The posts view keeps post fields flat for tables and spreadsheets.

#### Can the Actor retrieve deleted posts?

No. It reads what the public preview currently exposes. Removed posts, older posts outside the preview window, and content hidden by Telegram are not reconstructed.

#### Why are invalid channels not returned as blank rows?

A blank channel placeholder is not useful business data and should not be billed as a result. The wrapper drops empty channel metadata with no visible posts and records a sanitized no-data explanation.

#### Does the tool provide Telegram analytics?

It reports fields visible on the public page, such as subscriber count and post views. It does not calculate reach, engagement rate, unique viewers, or historical growth.

#### Can an AI agent run it?

Yes. Use Apify MCP or the Apify API to start a run, then inspect the channel or posts dataset view. Include explicit channel names and a row cap in automated workflows.

#### Is this an official Telegram product?

No. Telegram is a third-party service and trademark. This independent tool is not endorsed by Telegram and only targets public page data.

#### What should support receive?

Send the Actor run ID, public channel username, UTC time, and the missing field or error. Never include your Apify token, phone number, login code, or private Telegram messages.

### Related searches

Telegram channel scraper · Telegram public channel scraper · Telegram channel posts API · Telegram posts export · Telegram channel history export · Telegram subscriber count scraper · Telegram views scraper · Telegram post text dataset · t.me channel scraper · public Telegram data · Telegram JSON export · Telegram CSV export · Telegram channel monitor · Telegram announcement feed · public news channel scraper · public crypto channel posts · Telegram post timestamp · Telegram channel dataset · Apify Telegram Actor · Telegram automation · Telegram public preview API · Telegram post links · channel subscriber snapshot · Telegram scheduled scraper · public social feed collection · Telegram media indicators

### Disclaimer

This independent tool reads public Telegram web-preview data. Telegram is a third-party service and trademark; this Actor is not affiliated with or endorsed by Telegram. The Actor does not access private messages, private groups, or member lists. Users must follow applicable law, Telegram terms, privacy rules, and copyright requirements when storing or republishing data.

### Resources

- [Apify API documentation](https://docs.apify.com/api/v2)
- [Apify MCP integration](https://docs.apify.com/platform/integrations/mcp)
- [Dataset export](https://docs.apify.com/platform/storage/dataset)
- [Schedules](https://docs.apify.com/platform/schedules)
- [Integrations](https://docs.apify.com/platform/integrations)
- [All my Actors](https://apify.com/myagizm)

### 中文说明

## Telegram 频道抓取器：公开帖子与频道资料（无需登录）

<p align="center">Apify Actor · Telegram 公开频道 · 无登录 · 无手机号 · JSON / CSV 导出 · 按结果计费</p>

**收集 Telegram 公开频道资料和近期可见帖子。** 数据集会返回频道标题、简介、页面显示的订阅数，以及帖子文本、时间、浏览量、照片/视频标记和原始帖子链接。适合跟踪少量已知公开频道；私聊、成员名单和完整历史档案不在产品范围内。

> 使用预填的 `telegram` 频道开始，检查频道行和近期帖子，再添加其他公开用户名。

### 目录

- [功能](#功能)
- [适用对象](#适用对象)
- [数据字段](#数据字段)
- [运行步骤](#运行步骤)
- [输入示例](#输入示例)
- [输出示例](#输出示例)
- [覆盖范围与限制](#覆盖范围与限制)
- [价格](#价格)
- [使用建议](#使用建议)
- [其他公开数据 Actor](#其他公开数据-actor)
- [MCP 与 API](#mcp-与-api)
- [支持](#支持)
- [常见问题](#常见问题)
- [相关搜索](#相关搜索)
- [免责声明](#免责声明)
- [资源](#资源)

### 功能

- 读取 Telegram 公共网页预览中显示的频道资料。
- 将近期可见帖子作为独立的扁平数据行返回。
- 在公开页面提供时收集文本、时间、浏览量和照片/视频标记。
- 保留频道和帖子 URL，方便回查来源。
- 对所有输入频道使用统一 maxItems 上限。
- 丢弃空占位页面，不把它伪装成可计费频道行。

来源是公开预览页面。Actor 不登录 Telegram、不下载媒体、不读取私信，也不枚举订阅者。

### 适用对象

- 监控公开公告频道的传播团队。
- 收集公开帖子用于主题分析的研究人员。
- 检查媒体机构最新公开消息的新闻编辑室。
- 跟踪公开资讯流的科技或加密资产分析人员。
- 将公开帖子送入内部审核队列的自动化团队。
- 对比多次运行中的订阅数和浏览量快照的团队。

### 数据字段

有效频道行包含 `type`、`username` 和公开 `url`；帖子行包含 `type`、`channel` 和帖子 `url`。其他字段取决于 Telegram 页面实际显示内容。

| 字段 | 类型 | 说明 |
|---|---|---|
| `type` | string | channel profile 或 post。 |
| `username` | string 或 null | 频道资料行的用户名。 |
| `channel` | string 或 null | 帖子行对应的频道用户名。 |
| `title` | string 或 null | 公共页面显示的频道标题。 |
| `description` | string 或 null | 公共频道简介。 |
| `subscribers` | integer 或 null | 页面显示的订阅数。 |
| `photo` | string 或 null | 页面提供时的公开频道头像 URL。 |
| `id` | string 或 null | 公开帖子 ID。 |
| `text` | string 或 null | 公共预览显示的帖子文本。 |
| `date` | date-time 或 string | 页面提供时的帖子时间。 |
| `views` | integer 或 null | 页面提供时的浏览量。 |
| `hasPhoto` | boolean | 可见帖子是否包含照片。 |
| `hasVideo` | boolean | 可见帖子是否包含视频。 |
| `url` | string | 公开频道或帖子链接。 |
| `sourceType` | string | 固定为 telegram。 |

Actor 不下载媒体文件。`hasPhoto` 和 `hasVideo` 表示公开预览中的媒体状态；页面提供头像时，频道资料行会包含 photo 链接。

### 运行步骤

1. 打开 Input，保留 `telegram`，或填写 `durov` 这样的公开频道用户名。
2. 也可填写公开 `t.me/<username>` 链接；不支持私密邀请链接。
3. 设置 maxItems，限制频道资料行与帖子行的总数。频道资料行也占用一行。
4. 启动 Actor，查看 Overview、Public posts 或 Channel profiles 数据视图。
5. 如需比较后续快照，请保存帖子 ID 和 URL。

maxItems 是整个运行的总上限，不是每个频道各自的上限。如果前一个频道占满行数，后面的频道可能不会读取。需要每频道单独快照时，请创建独立任务。

### 输入示例

```json
{
  "channels": ["telegram", "durov"],
  "maxItems": 20
}
```

`channels` 是公开用户名或链接列表；`maxItems` 是要存储的总行数。Actor 不接受登录信息、手机号、Cookie、代理凭据或私密邀请令牌。

### 输出示例

以下记录来自真实 Telegram 公开频道运行，包含频道资料行和可见帖子。来源页面之后可能变化。

```json
[
  {
    "type": "channel",
    "username": "durov",
    "title": "Pavel Durov",
    "description": "Founder of Telegram.",
    "subscribers": 10600000,
    "url": "https://t.me/durov",
    "sourceType": "telegram"
  },
  {
    "type": "post",
    "channel": "durov",
    "id": "528",
    "text": "⛔️ The UK government wants to ban social media for children under 16.But banning social media for kids only puts them in greater danger.They will be pushed to use VPNs — and unlock far worse illegal content.We’ve seen this before.When the Russian government banned Telegram, 95% of Russian teenagers kept using it. They just moved to VPNs. Same in Iran.Parents already have the tools to restrict their kids’ digital habits: parental controls, screen-time limits — or no smartphone at all.🤦‍♂️ Instead, many parents give toddlers iPads just to keep them quiet.No amount of government regulation will fix that.Under the new law, all social media users in the UK will have to “prove” they’re over 16 — with an ID, face scan or bank card.🚨 Thousands in the UK are already arrested for political posts every year. Is this really about protecting children — or identifying more people to arrest?P. S. More about digital freedom in my speech — the source material for our $200,000 clipping contest.",
    "date": "2026-06-15T18:58:13+00:00",
    "views": 18900000,
    "hasPhoto": false,
    "hasVideo": false,
    "url": "https://t.me/durov/528",
    "sourceType": "telegram"
  },
  {
    "type": "post",
    "channel": "durov",
    "id": "529",
    "text": "🚫 India’s IT ministry banned Telegram for one week because some users shared leaked exam questions.This punishes 150 million ordinary Telegram users in India — not the insiders who leaked the exam materials.And the ban hasn't stopped anything. The leaks just moved to other apps.🛡 We’ve done a lot to help fix the problem — even though its source is not Telegram.Over the past few weeks, we removed hundreds of channels sharing leaked exam materials and related scams in India.We’ve also been making the “edited” label more visible to prevent backdating scams.🏳️ Telegram is a force for good. Banning it — even temporarily — is a mistake.",
    "date": "2026-06-16T15:05:29+00:00",
    "views": 9660000,
    "hasPhoto": false,
    "hasVideo": false,
    "url": "https://t.me/durov/529",
    "sourceType": "telegram"
  }
]
```

频道资料行与帖子行保存在同一数据集。可按 `type=post` 过滤内容行，或使用 channels 视图读取资料字段。

### 覆盖范围与限制

Telegram 决定公共网页预览显示哪些内容。Actor 只读取当前可见的近期窗口，不承诺完整频道历史。频道实际返回的帖子数可能少于 maxItems；较旧帖子可能已不在预览中。订阅数和浏览量都是快照。工具不下载媒体文件，也不访问私密或登录门槛内容。

输入最多允许 20 个频道和每次 100 行。Apify 免费方案每个 Actor 每个 UTC 日最多请求 40 行；即使页面返回较少，计数仍按请求上限计算。付费 Apify 方案不受此日限额约束。不存在的频道即使返回 HTTP 200 空页面，也不会写入结果行，并会干净失败，不产生结果费。

### 价格

Actor 使用 PAY_PER_EVENT。默认数据集写入的每一行都是一个 `apify-default-dataset-item` 事件。频道资料行和每条帖子都单独计费。没有单独启动费。空目标或不可访问目标不会生成结果事件。

### 使用建议

- 使用频道用户名，不要用显示名称；`telegram` 和 `durov` 是已验证的公开示例。
- 重复监控时，在自己的数据库中用频道名和帖子 ID 做 upsert。
- 高频定时任务使用较低 maxItems；公开页面通常只显示有限的近期窗口。
- 在分析中将频道资料行与帖子行分开处理。
- 订阅数和浏览量是快照；需要增长趋势时，请保存多次运行的时间点。
- 引用或转发文本前，先通过帖子 URL 查看原始上下文。
- 即便频道有效，也可能没有近期可见帖子；Actor 不会编造内容填满上限。
- 不要提交你无权处理的私密链接或个人数据。

### 其他公开数据 Actor

需要其他公开网络的帖子？可查看 [X Tweet Scraper](https://apify.com/myagizm/x-tweet-scraper)、[Reddit Scraper](https://apify.com/myagizm/reddit-scraper)、[Facebook Page Scraper](https://apify.com/myagizm/facebook-page-scraper) 和 [LinkedIn Profile Posts Scraper](https://apify.com/myagizm/linkedin-profile-posts-scraper)。更多工具见 [myagizm Actor 页面](https://apify.com/myagizm)。

### MCP 与 API

AI agent 可通过 Apify MCP 调用 Actor、检查运行状态并读取数据集。请明确填写公开频道名和结果上限。MCP/API 调用不会因此获得私聊或私有群组的访问权限。

同步运行并返回数据集行：

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~telegram-channel-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN&format=json' \
  -H 'content-type: application/json' \
  -d '{"channels":["telegram"],"maxItems":20}'
```

异步启动运行：

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~telegram-channel-scraper/runs?token=$APIFY_TOKEN&waitForFinish=300' \
  -H 'content-type: application/json' \
  -d '{"channels":["durov","telegram"],"maxItems":20}'
```

读取运行返回的 `defaultDatasetId` 后下载数据集：

```bash
curl 'https://api.apify.com/v2/datasets/$DATASET_ID/items?token=$APIFY_TOKEN&format=json&clean=true'
```

### 支持

请在 Actor Issues 页面提供 run ID、UTC 时间、公开频道用户名，以及缺失字段或错误。不要发送 Apify API token、手机号、验证码或私密 Telegram 内容。

### 常见问题

#### 这个 Telegram Actor 会收集什么？

它读取 Telegram 公共网页预览可见的频道资料和近期帖子。不读取私聊、私有群组或订阅者名单。

#### 支持哪些频道输入？

填写 telegram、durov 这样的公开用户名，或公开 t.me 链接。系统可处理 @ 前缀及公开 /s/ 预览格式；每个列表项填写一个频道。

#### 需要 Telegram 登录吗？

不需要手机号、会话文件或 Telegram 账户。如果频道没有公开预览，目标不会产生可计费结果行。

#### 会导出频道完整历史吗？

不会。公共预览只显示近期窗口，不代表完整档案。Actor 返回页面当前可见的帖子，并受 maxItems 限制。

#### 为什么既有频道行又有帖子行？

第一行描述频道用户名、标题、简介、近似订阅数、头像链接和频道链接；其后每行表示一个可见帖子。每行按一条结果计费。

#### 会下载照片和视频吗？

不会下载媒体文件。帖子行提供 hasPhoto、hasVideo 标记和公开帖子链接；频道行可能包含公开头像链接。

#### 为什么订阅数可能为空？

Telegram 可能更改页面结构，或不向某频道显示订阅数。缺失时保持空值，不会编造或估算数字。

#### 浏览量是准确的吗？

浏览量来自收集时显示的公开帖子页面。Telegram 之后可能更新，因此它是带运行时间的快照。

#### 每次最多返回多少行？

输入允许每次最多 100 行、最多 20 个频道。公共预览实际可见的帖子数可能低于请求上限。

#### 免费方案的限制是什么？

Apify 免费方案每个用户每天每个 Actor 最多请求 40 条结果；付费方案不受此日限额约束。额度按请求上限计算，而不只按实际返回量计算。

#### 什么时候收费？

每个写入默认数据集的行都是一个 PAY_PER_EVENT 结果；频道资料行和每条帖子都计费。失败且没有写入行的目标不会产生结果事件。

#### 频道不存在时会发生什么？

无效频道有时也会返回 HTTP 200 的 HTML 页面。Actor 会识别空频道占位内容，不写入数据行，并以失败结束且不收取结果费。

#### 能抓取群成员吗？

不能。本产品仅处理公开频道页面及其可见帖子，不枚举成员、手机号、私聊或隐藏群内容。

#### 可以输入私密邀请链接吗？

不可以。只支持公开频道名和公开链接。私密邀请、登录门槛或拒绝访问不是绕过访问控制的请求。

#### 帖子文本为什么有奇怪空格？

公共预览可能包含不换行空格、轮播标签或格式标记。文本按页面可见内容返回，不是原始消息文件的逐字转录。

#### maxItems 是每个频道的上限吗？

不是，它是整个运行的合计上限。前面的频道可能占用多数行；如需每个频道有独立上限，请分别运行。

#### 如何监控多个频道？

填写多个公开用户名。Actor 按顺序处理并在总上限达到后停止。定时监控请使用较小的 maxItems。

#### 可以定时生成频道快照吗？

可以。设置 Apify Schedule、公开频道名和适当的 maxItems。每次运行都是新快照，可在自己的系统中用频道名和帖子 ID 去重。

#### 支持哪些导出格式？

可在 Apify 数据集界面或 API 下载 JSON、JSONL、CSV、Excel 等支持格式。posts 视图将帖子字段展平，便于表格处理。

#### 能找回已删除帖子吗？

不能。工具只读取当前公共预览；已删除、超出页面近期范围或被 Telegram 隐藏的内容不会被重建。

#### 为什么不输出空白频道行？

空白占位行不是可用业务数据，也不应被计费。Wrapper 会丢弃没有标题、简介、订阅数和可见帖子的频道行，并记录安全的无数据说明。

#### 工具会提供完整 Telegram 分析吗？

只返回公共页面可见字段，例如订阅数和帖子浏览量；不会计算覆盖率、互动率、独立访客或历史增长。

#### AI agent 可以使用它吗？

可以。通过 Apify MCP 或 API 运行后读取频道或帖子视图。自动化时请指定频道和行数上限。

#### 这是 Telegram 官方产品吗？

不是。Telegram 是第三方服务和商标。本工具独立开发，仅面向公开页面数据，不代表 Telegram。

#### 联系客服要提供哪些信息？

请提供 Actor run ID、公开频道用户名、UTC 时间和缺失字段或错误。不要发送 Apify token、手机号、登录验证码或私聊内容。

### 相关搜索

Telegram 频道抓取器 · Telegram 公开频道抓取 · Telegram 频道帖子 API · Telegram 帖子导出 · Telegram 频道历史导出 · Telegram 订阅数抓取 · Telegram 浏览量抓取 · Telegram 帖子文本数据集 · t.me 频道抓取 · Telegram 公开数据 · Telegram JSON 导出 · Telegram CSV 导出 · Telegram 频道监控 · Telegram 公告 Feed · 公开新闻频道抓取 · 公开加密频道帖子 · Telegram 帖子时间戳 · Telegram 频道数据集 · Apify Telegram Actor · Telegram 自动化 · Telegram 公共预览 API · Telegram 帖子链接 · 频道订阅快照 · Telegram 定时抓取 · 公开社交 Feed 收集 · Telegram 媒体标记

### 免责声明

本工具独立开发，仅读取 Telegram 公开网页预览数据。Telegram 是第三方服务和商标；本 Actor 不隶属于 Telegram，也未获其认可。工具不访问私聊、私有群组或成员名单。用户必须遵守适用法律、Telegram 条款、隐私规则及版权要求。

### 资源

- [Apify API 文档](https://docs.apify.com/api/v2)
- [Apify MCP 集成](https://docs.apify.com/platform/integrations/mcp)
- [数据集导出](https://docs.apify.com/platform/storage/dataset)
- [定时任务](https://docs.apify.com/platform/schedules)
- [平台集成](https://docs.apify.com/platform/integrations)
- [myagizm Actor 页面](https://apify.com/myagizm)

### Errors & billing

Input errors finish with status SUCCEEDED, no results and no charge; see the OUTPUT record for the reason.

#### 错误与计费

输入错误会以 SUCCEEDED 状态结束，不产生结果且不收费；原因请查看 OUTPUT 记录。

# Actor input Schema

## `channels` (type: `array`):

Public Telegram channel usernames or t.me links. Only channels with a public web preview can be read; private groups, member lists and login-gated content are not supported. The free Apify plan is limited to 40 requested result rows per day for this Actor.

## `maxItems` (type: `integer`):

Maximum combined number of channel profile and post rows returned across all input channels. Each row is one billable result, including the channel information row.

## Actor input object example

```json
{
  "channels": [
    "telegram"
  ],
  "maxItems": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

Channel profiles and public post rows in one table.

## `posts` (type: `string`):

Post text, timestamp, views, media indicators and Telegram URL.

## `channels` (type: `string`):

Public channel name, description, subscriber count and profile links.

## `fullJson` (type: `string`):

All returned rows and fields without a view filter.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "channels": [
        "telegram"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("myagizm/telegram-channel-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "channels": ["telegram"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("myagizm/telegram-channel-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "channels": [
    "telegram"
  ],
  "maxItems": 20
}' |
apify call myagizm/telegram-channel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,myagizm/telegram-channel-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/e86iHMe90bezjPGmT/builds/uIyhsAI5eq2ET1Vbx/openapi.json
