Telegram Media Downloader
Pricing
from $0.01 / 1,000 media items
Telegram Media Downloader
Download public Telegram photos and videos from post URLs, channels, groups, or @handles. Get direct media URLs, post text, dates, views, thumbnails, and source links in a clean Apify dataset.
Pricing
from $0.01 / 1,000 media items
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
50
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
📥 Telegram media downloader for public posts
Telegram Media Downloader gets direct media URLs and post context from public Telegram posts, channels, groups, t.me/s archives, and @handles. Add Telegram targets and export photos and videos with post text, dates, views, thumbnails, source links, and channel details in a clean Apify dataset.
Use it when you need a Telegram media scraper for research, content review, social monitoring, reporting, archiving workflows, or API-based media extraction. You do not need a Telegram login, cookies, phone number, or API key. The Actor works with public Telegram pages only.
For a small first run, keep the prefilled targets, set Total media item limit to 25, and leave Media types on All media. Once the output shape looks right, add your own Telegram post URLs, channel URLs, t.me/s archive URLs, group URLs, or @handles.
✅ What this Actor does
- Accepts public Telegram post URLs, channel URLs, group URLs,
t.me/sarchive URLs, and@handles. - Saves one dataset row per successful media item, so every photo or video is easy to export and process.
- Returns direct source-hosted Telegram media URLs, not placeholder rows.
- Adds post URL, post ID, channel handle, author name, post text, post date, visible views, thumbnail URL, file extension, quality marker, and media position when Telegram exposes them.
- Lets you filter for all media, videos, or photos.
- Supports optional start and end dates for channel or archive scans when Telegram exposes comparable post dates.
- Finishes gracefully when a target is private, missing, unsupported, empty, or has no matching media.
This Actor is focused on public Telegram media URLs. It does not join private channels, open invite-only groups, read DMs, use a Telegram account, bypass access controls, or create Apify-hosted copies of Telegram media files.
📊 Data you can export
Each output item represents one successful Telegram media asset. Core fields include:
mediaUrl- direct source-hosted Telegram media URL.mediaType-videoorphoto.extension,thumbnailUrl, andqualitywhen Telegram or the media URL exposes them.postUrlandpostIdfor tracing the media back to the source post.channelHandleandauthorNamewhen visible.postText,postDate, andviewsTextwhen Telegram shows them.position- one-based media position inside the Telegram post.
You can open the dataset in Apify, export it as JSON, CSV, Excel, XML, RSS, or HTML, call it through the Apify API, schedule recurring runs, or connect it to webhooks and integrations.
🚀 How to run it
- Paste one or more public Telegram targets in Telegram targets.
- Set Post limit per channel for channel, group, archive, or handle targets.
- Set Total media item limit for a small test run or predictable spend.
- Choose Media types: all media, videos, or photos.
- Optionally set Start date and End date for dated channel or archive scans.
- Start the Actor and open the dataset.
Example input:
{"targets": ["https://t.me/s/telegram","https://t.me/telegram/300","@telegram"],"maxPostsPerChannel": 50,"maxMediaItems": 25,"mediaTypes": ["all"],"startDate": "2026-01-01","endDate": "2026-06-30"}
Direct post URLs process that post. Channel, group, archive, and handle targets scan public recent posts up to your post limit, then stop when the total media item limit is reached.
⚙️ Input options
| Field | What to enter |
|---|---|
targets | Public Telegram post URLs, channel URLs, group URLs, t.me/s archive URLs, or @handles. |
maxPostsPerChannel | How many recent public posts to inspect for each channel, group, archive, or handle target. |
maxMediaItems | Optional cap for saved media items across the run. |
mediaTypes | all, video, or photo. |
startDate | Optional earliest post date for channel or archive scans, formatted as YYYY-MM-DD. |
endDate | Optional latest post date for channel or archive scans, formatted as YYYY-MM-DD. |
Keep limits small for your first run. Raise them after you confirm that the dataset fields match your workflow.
📦 Output example
{"mediaUrl": "https://cdn4.telesco.pe/file/video.mp4?token=abc","mediaType": "video","extension": "mp4","thumbnailUrl": "https://cdn4.telesco.pe/file/thumb.jpg","quality": "source","postUrl": "https://t.me/example/123","postId": "123","channelHandle": "example","authorName": "Example Channel","postText": "Visible Telegram post text","postDate": "2026-05-20T10:00:00+00:00","viewsText": "1.2K","position": 1}
The dataset contains successful media rows only. Private, missing, unsupported, deleted, empty, or no-media targets do not create placeholder rows.
💰 Pricing
This Actor uses pay-per-event pricing. You pay for each successful media item saved to the dataset.
The Actor is configured at $0.00001 per media item, which is $0.01 per 1,000 media items. No actor-start event is defined in the pricing file, and no-result targets are not charged as media items.
⚠️ Limits and caveats
- Public Telegram pages only are supported.
- Private channels, private groups,
/c/links, invite-only chats, deleted posts, DMs, and login-only content are not supported. - Telegram may not expose every field on every public post. Missing post text, dates, views, thumbnails, extensions, or quality labels are saved as
null. - Source-hosted Telegram media URLs can expire or become unavailable later. Use them soon after the run if your workflow needs the file bytes.
- Date filters depend on source-visible post dates. If Telegram does not expose a comparable date for a post, the Actor keeps the row instead of guessing.
❓ FAQ
🔒 Can I download media from private Telegram channels?
No. This Actor works with public Telegram pages only. Private channels, invite-only groups, DMs, and /c/ links are outside the product scope.
🧭 Can I use channel handles instead of full URLs?
Yes. You can use @handle, https://t.me/handle, or https://t.me/s/handle when the target has a public preview page.
📎 Does it return files or media URLs?
It returns direct source-hosted media URLs and metadata in the dataset. It does not copy Telegram media files into Apify storage.
🎥 Can I get only Telegram videos?
Yes. Set Media types to Videos.
🕵️ Why is my dataset empty?
The target may be private, unsupported, deleted, outside your filters, or it may not contain public media that Telegram exposes on the page. Try a known public t.me/s archive target with a small media limit first.
📝 Changelog
- 1.0: Focused media output on public Telegram photos and videos with direct source-hosted media URLs, refreshed pricing copy, and cleaner dataset fields.
- 0.0: Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Other actors
- Telegram Channel Messages Scraper ↗ - Export public Telegram channel messages with text, dates, views, links, reactions, and media metadata.
- Telegram Channels Scraper ↗ - Discover public Telegram channels from keywords and enrich known handles with channel metadata.
- Telegram Info Scraper ↗ - Resolve public Telegram users, bots, channels, groups, and handles into profile and entity data.
- Facebook Media Downloader ↗ - Export direct media links and metadata from public Facebook videos and reels.
- Twitter Media Scraper ↗ - Extract images, videos, and GIF media URLs from public Twitter/X posts and discovery targets.
Made with ❤️ by Maxime Dupré