Telegram Channel Scraper Goat avatar

Telegram Channel Scraper Goat

Pricing

from $1.00 / 1,000 messages

Go to Apify Store
Telegram Channel Scraper Goat

Telegram Channel Scraper Goat

Scrape messages from public Telegram channels in bulk. Returns one clean row per message with id, date, text, views, media flags, media URLs, forwards, and links, plus an optional channel info summary.

Pricing

from $1.00 / 1,000 messages

Rating

5.0

(1)

Developer

Goutam Soni

Goutam Soni

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

2

Monthly active users

13 days

Issues response

4 days ago

Last modified

Share

Telegram Channel Scraper

Scrape messages from public Telegram channels in bulk. Give it a list of channel handles or links and it returns one clean row per message, newest first, with the text, date, view count, media flags, media URLs, forwards, and links. It can also return a short channel info summary (title, subscriber count, description, photo).

No login. No API key. No cookies. Public channels only.

What you get

For every message:

  • channel and messageId
  • url (direct link to the message)
  • datetime (ISO 8601, with timezone)
  • views (parsed to a number)
  • text (cleaned, line breaks preserved)
  • hasPhoto, hasVideo, hasDocument, hasVoice flags
  • photoUrls, videoUrls (media URLs where the channel exposes them)
  • forwardedFrom, forwardedFromUrl (when the message is a forward)
  • links (outbound links found in the message text)

When channel info is enabled, you also get one summary row per channel:

  • title, subscribers, description, photoUrl
  • photoCount, videoCount, fileCount, linkCount

Export members (optional)

Turn on exportMembers to also export a channel's visible members. These are the people who publicly take part in the channel's discussion. To take part, a user has to be a member of the channel's linked discussion group, so each one is a real, identifiable member.

Each member row gives you:

  • type ("member")
  • channel
  • username (the member's public handle, without the @)
  • profileUrl (direct link to their public profile)
  • displayName
  • avatarUrl

The scraper pages through the discussion and returns distinct members, deduplicated, up to maxMembersPerChannel.

What this returns, and what it does not. Telegram does not show a channel's full subscriber list to anyone who is not signed in, so no scraper can hand you the entire subscriber roster of a public channel. What is public is the set of members who take part in the discussion. That is what this option returns: the members who are publicly visible, not the whole subscriber count.

A channel only has visible members when it has discussion (comments) turned on and people have commented. When a channel has no public discussion, you get one row per channel instead:

{ "type": "member_export", "channel": "example-community", "result": "not_available" }

Member export runs in addition to the normal message scrape. If you only want members, set maxMessagesPerChannel to 1 to keep the message rows to a minimum.

Example member row

{
"type": "member",
"channel": "example-community",
"username": "example_user",
"profileUrl": "https://t.me/example_user",
"displayName": "Example User",
"avatarUrl": "https://example.com/avatar.jpg"
}

Input

FieldTypeDescription
channelsarrayChannel handles or URLs. Accepts example_channel, @example_channel, or https://t.me/example_channel.
maxMessagesPerChannelintegerCap on messages returned per channel, newest first. Default 50.
includeChannelInfobooleanAlso return a channel info summary row per channel. Default true.
exportMembersbooleanAlso export the channel's visible members (people who take part in the discussion). Default false.
maxMembersPerChannelintegerCap on distinct members returned per channel when exportMembers is on. Default 200.
concurrencyintegerChannels processed in parallel. Default 4.
delayBetweenRequestsnumberSeconds to wait between page fetches inside one channel. Default 1.0.
proxyConfigurationobjectOptional proxy. Works without a proxy by default.

Example input

{
"channels": [
"example_channel",
"@another_example",
"https://t.me/one_more_example"
],
"maxMessagesPerChannel": 100,
"includeChannelInfo": true,
"concurrency": 4
}

Example output row

{
"channel": "example_channel",
"messageId": 1234,
"url": "https://t.me/example_channel/1234",
"datetime": "2026-02-10T17:43:45+00:00",
"views": 1740000,
"text": "Big news today. Read the full post here.",
"hasPhoto": false,
"hasVideo": true,
"hasDocument": false,
"hasVoice": false,
"photoUrls": [],
"videoUrls": ["https://example.com/video.mp4"],
"forwardedFrom": null,
"forwardedFromUrl": null,
"links": ["https://example.com/full-post"]
}

Use cases

  • Track announcements and news from public channels.
  • Archive a channel's message history with dates and view counts.
  • Build a dataset of posts for analysis, alerting, or reporting.
  • Track channels in your space.

Notes

  • Only public channels are supported. Private channels and ones that hide their message preview return no messages.
  • View counts and media availability depend on what the channel exposes publicly.
  • The scraper pages backwards through a channel's history until your limit is reached or the channel runs out of messages.

FAQ

Do I need a Telegram account or API key?

No. This actor reads public Telegram channels without any login, account, or API key.

Can it scrape private channels or groups?

No. Only public channels that are viewable without joining are supported.

Can it export a channel's members or subscribers?

It exports the members who are publicly visible: the people who take part in the channel's discussion. Turn on exportMembers for this. Telegram never exposes a channel's full subscriber list to anyone who is not signed in, so the complete subscriber roster is not available to any scraper. Channels with no public discussion return a not_available result.

How many messages can I get per channel?

You set the limit with maxMessagesPerChannel. The actor walks the channel history page by page up to your chosen maximum.

What data does each message include?

Message text, timestamp, view count, the channel name and metadata, and any media or link references the message exposes.

Can I export to CSV, Excel, or Google Sheets?

Yes. Every Apify dataset exports to JSON, CSV, Excel, or pushes to your own storage and integrations.

To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.