Telegram Media Downloader — Photos, Videos & Files, No Login
Pricing
from $5.00 / 1,000 media item extracteds
Telegram Media Downloader — Photos, Videos & Files, No Login
Download photos, videos, voice notes and stickers from public Telegram channels, with direct media URLs and optional file saving to Apify storage. No API key or login needed.
Pricing
from $5.00 / 1,000 media item extracteds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
19
Total users
2
Monthly active users
23 days ago
Last modified
Categories
Share
What is Telegram Media Downloader?
Telegram Media Downloader collects the photos, videos, round videos, voice notes and documents posted in public Telegram channels and returns one dataset row per media item. Each row has the direct media URL, media type, caption, message link and post date. Turn on downloadFiles and the Actor also saves each file to Apify storage with a permanent download link. Researchers, archivists, content teams and AI agents use it to back up or analyse channel media, with no Telegram account, phone number or API key.
Why people use it for Telegram media
- No Telegram login. It reads the public web preview of each channel (
t.me/s/<channel>). - Direct media URLs. Every row links straight to the image or video file.
- Optional file saving.
downloadFilesstores each file in the key-value store and returnsapify_download_url. - Filter by type and date. Pick photos only, videos only or any mix, and set
oldestMediaDateto stop at a date. - Album aware. Each photo in an album becomes its own row with
media_index.
How to use it
The 50 latest photos and videos from one channel:
{"channels": ["telegram"],"maxMediaPerChannel": 50,"mediaTypes": ["photo", "video"]}
Save photos from two channels since 1 January 2026:
{"channels": ["durov", "https://t.me/telegram"],"maxMediaPerChannel": 100,"mediaTypes": ["photo"],"oldestMediaDate": "2026-01-01","downloadFiles": true}
| Input | What it controls |
|---|---|
channels | Channel usernames, @handles or t.me URLs |
maxMediaPerChannel | Media items per channel; each album photo counts once (default 50) |
mediaTypes | Any of photo, video, roundvideo, voice, sticker, document (stickers are off by default) |
oldestMediaDate | Collect media posted on or after this YYYY-MM-DD date |
downloadFiles | Save each file to Apify storage and return a download link (default off) |
maxFileSizeMb | Size ceiling for saved files, in MB (default 25) |
proxyConfiguration | Proxy for Telegram requests; the default works for public channels |
Output: Telegram media data you receive
A real row with downloadFiles on (media URL shortened):
{"record_type": "media","channel_username": "durov","channel_url": "https://t.me/durov","message_id": "536","message_url": "https://t.me/durov/536","posted_at": "2026-07-30T16:55:01+00:00","media_type": "photo","media_url": "https://cdn4.telesco.pe/file/pFGsbBXCx7Qlei...jpg","caption": "🇦🇫😈","requires_telegram_app": false,"downloaded": true,"apify_download_url": "https://api.apify.com/v2/key-value-stores/<storeId>/records/media_durov_536_0.jpg","media_index": 0,"source_url": "https://t.me/s/durov","scraped_at": "2026-10-02T10:41:17.415Z"}
| Field | What it contains |
|---|---|
media_type, media_url | Type of media and its direct file URL |
apify_download_url, downloaded | Permanent link to the saved copy when downloadFiles is on |
caption, posted_at | Message text and post time |
message_id, message_url | The Telegram message the media belongs to |
media_index | Position inside an album |
requires_telegram_app | true for large videos and documents that Telegram serves only inside its app; the row keeps the message link |
channel_username, channel_url, source_url | Which channel the row came from |
The dataset also ends with one run_summary row listing channels processed, media found and files saved. OUTPUT and RUN_SUMMARY in the key-value store hold the same totals.
Example workflow: a channel media archive
A news researcher follows a channel that posts field photos. Every week they collect the latest photos with oldestMediaDate set to last week's date and downloadFiles on. The saved files stay available through apify_download_url, and the captions and dates go into a spreadsheet for review. Then they continue with Telegram Channels Scraper to pull the full message text and views for the same period.
Pricing
This Actor uses Pay per event. Apify platform usage is included in the event price. You pay a start event, one event per media item collected and one more event per file saved when downloadFiles is on. The live Pricing tab on this page shows the current prices.
- 1 channel × 50 photos, links only = 50 media events.
- The same job with
downloadFiles= 50 media events plus one download event per saved file. maxMediaPerChannelandoldestMediaDateboth cap the cost.
Telegram media with AI agents (MCP)
Connect this Actor to an AI agent through Apify MCP and ask in plain language:
Get the last 20 photos posted in the Telegram channel "durov" with their captions and dates.
Agent checklist:
- Put channel names or URLs in
channels. - Set
mediaTypesto what the user asked for andmaxMediaPerChannelto the requested count. - Read rows with
get-dataset-items; skip the finalrun_summaryrow. - Use
media_urlfor previews andapify_download_urlfor saved copies.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~telegram-media-downloader/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"channels": ["telegram"], "maxMediaPerChannel": 20, "mediaTypes": ["photo", "video"]}'
Related Telegram tools from the same developer
| Your next step | Use | Why |
|---|---|---|
| When you want the full message text, views and links | Telegram Channels Scraper | Every message with engagement data |
| When you want channel size and profile details first | Telegram Channel Info Scraper | Subscribers, bio and verification per channel |
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| Only images needed | Set mediaTypes to ["photo"] | Photo rows only, lower cost |
| A regular archive | Set oldestMediaDate to the last collection date | Only new media since then |
| Files must stay available | Turn on downloadFiles | Permanent copies in Apify storage |
| Large video files | Raise maxFileSizeMb | Bigger files saved to storage |
Builder's note
I found that most people asking for a Telegram downloader want working file links more than message text, so every row leads with media_url and the saved-file link. I learned that Telegram's public preview shows small and medium media directly while larger videos and documents stay inside the app, so those rows are marked with requires_telegram_app and keep the message link.
FAQ
Do I need a Telegram account or API key?
No. The Actor reads the public web preview of each channel.
Which channels work?
Public channels with a web preview. Open https://t.me/s/<channel> in a browser; if posts show there, the Actor can read them.
Where are downloaded files stored?
In the default key-value store of the job. Each row's apify_download_url links to its file.
Why do some rows have no saved file?
Large videos and documents that Telegram serves only in its app are marked with requires_telegram_app: true. Files above maxFileSizeMb keep their media_url.
Can I collect stickers?
Yes. Add sticker to mediaTypes.
Responsible use
This Actor collects media from public Telegram channels. Download and reuse media only where you have the rights to do so, and follow Telegram's terms and the copyright and privacy laws that apply to you. Read Apify's guide on whether web scraping is legal for more context. Telegram is a trademark of Telegram FZ-LLC. This independent Actor is not affiliated with, associated with, or endorsed by Telegram. For questions or bugs, open a ticket in the Issues tab.