Telegram Channel Messages Scraper avatar

Telegram Channel Messages Scraper

Pricing

from $0.25 / 1,000 telegram messages

Go to Apify Store
Telegram Channel Messages Scraper

Telegram Channel Messages Scraper

Get public Telegram channel messages from channel URLs, t.me/s archive links, @handles, bare handles, or direct post URLs. Start with the prefilled channel for a small test run. Private /c/ links, invite-only channels, DMs, and Telegram login are not supported.

Pricing

from $0.25 / 1,000 telegram messages

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

5 days ago

Last modified

Share

Telegram Channel Messages Scraper

Telegram Channel Messages Scraper gets public posts from Telegram channels and saves them as clean dataset rows. Paste a t.me channel URL, t.me/s archive URL, @handle, bare handle, or direct public post URL to collect message text, dates, source links, views, replies when visible, reactions when visible, links, hashtags, and media metadata.

No Telegram login, phone number, cookies, or API key is needed. The actor is built for public channel archives, so you can start with a small run, check the rows, then use the same input through the Apify API, scheduler, integrations, or dataset export.

What This Telegram Scraper Does

Use this actor when you need a Telegram message scraper for public channel content, not private chats or member lists. It reads public channel message pages and saves one row per message, with enough context to use the data in monitoring, research, reporting, or downstream analysis.

Good use cases include:

  • Track public Telegram channel posts for news, product updates, crypto announcements, community monitoring, or market research.
  • Export recent Telegram channel messages to JSON, CSV, Excel, or another Apify dataset format.
  • Collect source message URLs so each row can be checked back on Telegram.
  • Pull links, hashtags, visible engagement, and media metadata without copying posts by hand.
  • Schedule repeat runs to keep a public channel dataset fresh.

Data You Can Get

Each Telegram channel message row can include:

  • channelUsername and channelUrl
  • messageId, messageUrl, and sourceUrl
  • date and scrapedAt
  • text
  • views and viewsText
  • replyCount when Telegram shows it
  • reactions when Telegram shows them
  • hashtags and urls
  • media metadata for public photos, videos, or documents when Telegram exposes it
  • inputTarget, normalizedTarget, position, and rawMessageId

Some fields can be empty. Telegram does not show every engagement or media field on every public message, so the actor keeps those values as null, {}, or [] instead of guessing.

How To Run It

  1. Add one or more public Telegram channel targets.
  2. Set a message limit. The default is 50 messages.
  3. Keep media metadata on if you want media type and source URL fields.
  4. Run the actor and open the dataset.

For a quick test, use:

{
"targets": ["https://t.me/durov"],
"maxMessages": 25,
"mediaMode": "metadata"
}

You can also use the same input with the Apify API, webhooks, schedules, or integrations.

Input

The targets field accepts these public Telegram target forms:

  • https://t.me/durov
  • https://t.me/s/durov
  • @durov
  • durov
  • https://t.me/durov/500

Use maxMessages to cap saved rows and keep the run small. Use dateFrom and dateTo when you only want messages in a date range. Use sortOrder to save rows newest first or oldest first.

Private /c/ links, invite-only channels, private chats, DMs, and member scraping are not part of this actor.

Output Example

{
"inputTarget": "https://t.me/durov",
"normalizedTarget": "https://t.me/durov",
"channelUsername": "durov",
"channelUrl": "https://t.me/durov",
"messageId": "500",
"messageUrl": "https://t.me/durov/500",
"sourceUrl": "https://t.me/s/durov",
"position": 1,
"date": "2026-04-24T19:32:04+00:00",
"text": "Public message text...",
"views": 7570000,
"viewsText": "7.57M",
"forwards": null,
"replyCount": null,
"reactions": {},
"hashtags": [],
"urls": [],
"media": [],
"rawMessageId": "durov/500",
"scrapedAt": "2026-05-21T17:23:48.968Z"
}

Pricing

This actor uses pay-per-event pricing. You pay for each Telegram message row saved to the dataset, plus the standard Actor start event shown on the Actor page before you run it. Keep maxMessages low for a small first run.

Limits And Caveats

This actor works with public Telegram channel message pages. It does not log in to Telegram, join private channels, read private chats, scrape members, or monitor messages in real time.

Telegram may hide or omit some fields. For example, reply counts, reactions, and media URLs are saved only when they are visible in the public page. Media metadata is not the same as guaranteed long-term file hosting.

FAQ

Can I scrape private Telegram channels?

No. This actor is for public Telegram channel messages only. Private /c/ links, invite-only channels, private chats, and DMs are not supported.

Do I need Telegram cookies or an API key?

No. Add public channel URLs or handles and start the run.

Can I scrape Telegram groups?

This actor is focused on channel messages. Some public Telegram pages may look similar, but group scraping is not the product contract here.

Can I download media files?

This actor saves media metadata when Telegram exposes it. For a media-first workflow, use a dedicated Telegram media downloader.