Telegram Channel Scraper Goat avatar

Telegram Channel Scraper Goat

Pricing

Pay per usage

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

Pay per usage

Rating

0.0

(0)

Developer

Goutam Soni

Goutam Soni

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day 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

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.
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.