Telegram Channel Content & Media Scraper avatar

Telegram Channel Content & Media Scraper

Pricing

from $3.50 / 1,000 post scrapeds

Go to Apify Store
Telegram Channel Content & Media Scraper

Telegram Channel Content & Media Scraper

Scrape Telegram channel posts — text, reactions, hashtags, mentions, forwards, replies, and downloadable media — straight to your dataset, no webhook needed. Multi-session pool means no queue wait and no 10-channel cap: up to 25 channels, 1,000 posts each. Pay only for posts scraped.

Pricing

from $3.50 / 1,000 post scrapeds

Rating

5.0

(1)

Developer

akula.marketing

akula.marketing

Maintained by Community

Actor stats

2

Bookmarked

4

Total users

1

Monthly active users

18 minutes ago

Last modified

Share

Telegram Channel Post & Media Scraper

💬 Questions, bulk pricing, or a custom solution? Talk to us on Telegram — @KoteamSupport.

Collect posts from public Telegram channels: text, views, reactions, hashtags, mentions, links, forwards, replies, and optional media files. Results go directly to the Apify dataset. You don't need to configure a webhook or download an Excel file.

No queue, bigger runs. Runs are processed in parallel instead of waiting in a shared line, so you get up to 25 channels and 1,000 posts per channel in one job.

What it's for

  • Channel vetting before ad placement: check real views, reactions, and posting frequency before you buy a sponsored post.
  • Competitor and market research: see what channels in a niche publish and which posts get engagement.
  • Content analysis and trend tracking: hashtags, links, and topics over the last 1–90 days.
  • Archiving: keep a copy of a channel's public posts and media for research.

Don't have a channel list yet? Start with Telegram Similar Channels Finder: it turns one seed channel into a list of similar channels you can pass here.

🛡️ Data & compliance

  • Public channels only. The Actor reads a channel's public post history through the official Telegram API method channels.getHistory. It's the same posts anyone sees when opening the channel. Private channels, private chats, and groups are not supported: they return an error row.
  • Posts, not people. It doesn't collect channel subscribers, member lists, or user profiles. Post data can still include names a channel published: @mentions in the text, a post author signature, or the original source of a forwarded post.
  • Nothing to set up. You don't need a Telegram account, login, admin rights, or API keys.
  • Your responsibility. Use the data in line with Telegram's terms and the privacy laws that apply to you (for example, GDPR).

To get more functionality use akula.marketing

📥 Input

The Actor accepts the following input fields:

📋 Input Schema

FieldTypeDescriptionRequiredDefault
channelsArrayTelegram channel usernames or t.me links to scrape (max 25 per run).Yes—
maxPostsPerChannelIntegerMaximum posts to fetch per channel across the whole run (1–1000).No100
daysRangeIntegerOnly fetch posts published within the last N days (1–90).No30
includeTextBooleanInclude the post text in the results.Notrue
mediaOnlyBooleanOnly return posts that contain media.Nofalse
downloadMediaBooleanDownload and re-host media, returning stable presigned URLs.Nofalse

Channels can be provided as @channelname, channelname, or a Telegram URL like https://t.me/channelname.

📤 Output

Results are pushed directly to the Actor's default dataset — one row per scraped post. If a channel can't be scraped (private, not found, or rate-limited), a single row with an error field is added for that channel instead of failing the whole run.

Post fields

FieldDescription
channel, channelLink, channelTitle, channelDescription, subscribersChannel metadata, repeated on every post row
postId, postUrl, date, views, textCore post data
reactions, totalReactionsList of {emoji, count} and their sum
hashtags, mentions, linksExtracted from post text and entities
hasMedia, mediaUrls, mediaTypesMedia presence, presigned download URLs (7-day expiry), and file types
isForward, forwardFromType, forwardFromId, forwardFromName, forwardChannelPost, forwardPostAuthor, forwardDateForward chain details, when the post is forwarded
replyToMsgId, replyToPostUrlSet when the post is a reply within the channel
editDateSet when the post was edited after publishing
error, rateLimitSecondsSet on channel-level failures instead of post data

Example Output

{
"channel": "@telegram",
"postId": 454,
"postUrl": "https://t.me/telegram/454",
"date": "2026-07-19T17:58:20+00:00",
"views": 1057413,
"text": "For all the details on these new features, check out our blog...",
"reactions": [{"emoji": "👍", "count": 120}],
"totalReactions": 120,
"hashtags": [],
"mentions": [],
"links": ["https://telegram.org/blog/..."],
"hasMedia": true,
"mediaUrls": ["https://.../channel-content/telegram/454_0.jpg?..."],
"mediaTypes": ["jpg"],
"isForward": false,
"error": null
}

Usage

  1. Input channels: Provide one or more channel usernames (e.g. telegram, @telegram, or https://t.me/telegram).
  2. Run the Actor: Execute to fetch posts.
  3. Read the dataset: Results appear directly in the run's dataset — no webhook or polling required.

FAQ

Can I scrape private channels or groups?

No. Only public channels are supported. A private channel, a group, or a channel that doesn't exist gets one row with an error field, and the rest of the run continues.

How many posts can I get?

Up to 1,000 posts per channel and 25 channels per run, from the last 1–90 days (daysRange). For more, split your list across several runs.

Media URLs are presigned and expire after 7 days. Download the files you need, or run again to get fresh links.

Do I need a Telegram account or API keys?

No. You don't need a Telegram account, login, admin rights, or API keys.

Am I charged for channels that fail?

You pay per post scraped. A channel that returns an error row adds no posts, so there's no charge for it.

How is this different from the Telegram API?

With the Telegram API you need your own account, API keys, session handling, and flood-limit handling, and you have to parse reactions, forwards, and media yourself. This Actor returns ready rows with all of that already extracted.

🔁 Run it on a schedule

Apify Schedules run this Actor for you: Console → Schedules → Create new → add this Actor or one of your saved tasks → set how often it runs.

Weekly is a good default for monitoring competitors or a niche. Schedule a saved task with your channel list and daysRange: 7, so each run returns only that week's posts. For a one-time check before an ad placement, a single run is enough.

Pricing

This Actor uses pay-per-event pricing — you're charged per post scraped (post-scraped event), not per Actor run. Media downloads, hashtag/mention/reaction extraction, and forward/reply metadata are all included at no extra cost.

🔌 Automate with Zapier & Make

No code needed — trigger this Actor from your existing tools.

  • Zapier: search for the "Apify" app → action Run Actor → select akula.marketing/telegram-get-channel-content-media → since this Actor returns results directly in the dataset, use the Get Dataset Items action after the run completes to pull the scraped posts into your Zap. Docs
  • Make: add the Apify → Run an Actor module, then the Apify → Get Dataset Items module to fetch the results once the run finishes. Docs

🤖 Use with AI agents (MCP)

This Actor works as a tool in Claude, ChatGPT, Cursor, and other MCP clients through the Apify MCP server. Add this server URL to your client:

https://mcp.apify.com?tools=akula.marketing/telegram-get-channel-content-media

The first time you connect, the client asks you to sign in to Apify. Runs are billed to your Apify account, the same as runs from the Console.

Then ask in plain language, for example: "Get the last 30 days of posts from @telegram and tell me which ones got the most reactions". The agent reads the input schema, fills in the fields, and gets the results back as structured data.

Next stepActor
Find similar channels to add to your listTelegram Similar Channels Finder
Export the comments under these channels' posts, with author profilesTelegram Channel Message & Comment Scraper
Check subscriber counts and descriptions for a whole channel listTelegram Username Checker

Support

Support 24/7 - @KoteamSupport. We also offer specialized solutions for Telegram-related tasks — contact us to learn more

⭐ Found this useful? Leave a review — it helps others find this Actor and tells us what to build next.

🏷️ Find This Tool When You Search For "telegram channel scraper" - Export posts from any public channel "telegram channel content scraper" - Extract post text, media, and metadata "telegram channel analytics" - Views, reactions, and posting frequency per channel "telegram ad placement research" - Vet channels before buying sponsored posts "telegram media downloader" - Bulk download photos, videos, and documents from channel posts "telegram post reactions scraper" - Track engagement and view counts over time "telegram hashtag and mention extractor" - Mine posts for hashtags, mentions, and links "telegram forward tracking tool" - Trace forward chains and original post sources "telegram content archiving" - Preserve public channel posts and media for research 🎯 Turn a channel's post history into structured, exportable data with media included 📊 Check real engagement before you pay for a placement