Telegram Channel Content & Media Scraper
Pricing
from $3.50 / 1,000 post scrapeds
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
Maintained by CommunityActor stats
2
Bookmarked
4
Total users
1
Monthly active users
18 minutes ago
Last modified
Categories
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:
@mentionsin 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
| Field | Type | Description | Required | Default |
|---|---|---|---|---|
channels | Array | Telegram channel usernames or t.me links to scrape (max 25 per run). | Yes | — |
maxPostsPerChannel | Integer | Maximum posts to fetch per channel across the whole run (1–1000). | No | 100 |
daysRange | Integer | Only fetch posts published within the last N days (1–90). | No | 30 |
includeText | Boolean | Include the post text in the results. | No | true |
mediaOnly | Boolean | Only return posts that contain media. | No | false |
downloadMedia | Boolean | Download and re-host media, returning stable presigned URLs. | No | false |
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
| Field | Description |
|---|---|
channel, channelLink, channelTitle, channelDescription, subscribers | Channel metadata, repeated on every post row |
postId, postUrl, date, views, text | Core post data |
reactions, totalReactions | List of {emoji, count} and their sum |
hashtags, mentions, links | Extracted from post text and entities |
hasMedia, mediaUrls, mediaTypes | Media presence, presigned download URLs (7-day expiry), and file types |
isForward, forwardFromType, forwardFromId, forwardFromName, forwardChannelPost, forwardPostAuthor, forwardDate | Forward chain details, when the post is forwarded |
replyToMsgId, replyToPostUrl | Set when the post is a reply within the channel |
editDate | Set when the post was edited after publishing |
error, rateLimitSeconds | Set 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
- Input channels: Provide one or more channel usernames (e.g.
telegram,@telegram, orhttps://t.me/telegram). - Run the Actor: Execute to fetch posts.
- 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.
How long do media links work?
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.
🧩 Related Actors
| Next step | Actor |
|---|---|
| Find similar channels to add to your list | Telegram Similar Channels Finder |
| Export the comments under these channels' posts, with author profiles | Telegram Channel Message & Comment Scraper |
| Check subscriber counts and descriptions for a whole channel list | Telegram 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