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. Returns direct downloadable media URLs plus optional file save to Apify storage. No API key or login required. MCP-ready.
Pricing
from $5.00 / 1,000 media item extracteds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Telegram Media Downloader
Download photos, videos, voice notes, and stickers from public Telegram channels — direct downloadable media URLs, with an optional one-click save to storage. No login, no API key, no phone number.
Point it at any public Telegram channel and get back a clean, structured list of every media item: the direct CDN URL you can download, the media type, dimensions, duration, file name/size, the caption it was posted with, and a link back to the source message. Flip on Download files to storage and the actor also fetches the bytes and saves each file to Apify storage, handing you a permanent download URL.
Built for OSINT researchers, content archivists, ML-dataset builders, and marketers who want the files from a channel — not just the text. MCP-ready for AI agents.
What you get
| Field | Description |
|---|---|
media_type | photo, video, roundvideo, voice, sticker, or document |
media_url | Direct downloadable CDN URL of the media file |
thumbnail_url | Poster/preview image (mainly videos) |
file_name / file_size | Original name and human-readable size (documents) |
duration | Playback length for videos and voice notes (m:ss) |
caption | Text the media was posted with |
posted_at | ISO 8601 timestamp of the source message |
message_url | Permanent link to the source post |
requires_telegram_app | true when the preview exposes no direct file (large videos, documents) |
apify_download_url | Permanent Apify storage URL of the saved file (download mode) |
One record is emitted per media item — a 10-photo album becomes 10 rows.
When to use this actor
- Archive a channel's media — bulk-collect every photo and video a public channel has posted.
- Build image/video datasets — pull a media corpus for ML training from open channels.
- Competitor / brand monitoring — grab the creative assets a competitor's channel publishes.
- OSINT & research — capture media evidence with source links and timestamps.
When NOT to use it: for message text, reactions, links, and emails, use the sibling telegram-channel-scraper. This actor is media-first. It also cannot reach private/invite-only channels or channels with public web preview disabled — those need a Telegram API (MTProto/bot) tool.
Pricing (pay per event)
| Event | Price |
|---|---|
| Actor start | $0.003 (per GB RAM, once per run) |
| Media item extracted | $0.005 per item (URL + metadata) |
| File downloaded to storage | $0.005 per saved file (only when download mode is on) |
A typical 50-item URL-only run costs about $0.25 + start. Turning on file download roughly doubles the per-item cost because the bytes are fetched and stored. Both pay-per-event and usage-based billing are available — pick whichever fits your job at run time.
Input
{"channels": ["telegram", "durov"],"maxMediaPerChannel": 50,"mediaTypes": ["photo", "video", "roundvideo", "voice", "document"],"downloadFiles": false,"maxFileSizeMb": 25,"oldestMediaDate": "2024-01-01"}
- channels (required) — usernames,
@handles, ort.meURLs. They're normalized automatically. - maxMediaPerChannel — cap per channel (default 50). Counts individual media.
- mediaTypes — subset of
photo,video,roundvideo,voice,sticker,document.stickeris off by default. - downloadFiles — when
true, fetch the bytes and save each file to storage, returningapify_download_url. - maxFileSizeMb — skip downloading any single file larger than this (default 25 MB). Only applies in download mode.
- oldestMediaDate —
YYYY-MM-DDfloor; pagination stops once older media is reached.
Tip: which channels work?
A channel works if its public web preview is on. Open https://t.me/s/CHANNELNAME in a browser — if you see posts, the actor can read it. If it's blank, the owner disabled public preview, and the actor returns a clear channel_error record explaining why (never a silent empty result).
How it works
The actor reads Telegram's public web preview at t.me/s/<channel> — the same server-rendered pages Telegram serves for link previews and search engines. No login, cookies, or API credentials are involved. It paginates backward through a channel's history (?before=<id>), extracts the direct CDN URL for each media item, and optionally downloads the file. Requests run through Apify datacenter proxies by default; switch to residential only if you hit blocks.
Honest limitations
The public preview exposes direct download URLs for photos, previewable videos/GIFs, voice notes, and stickers. Large videos and document/file attachments render as preview cards only — the file itself is gated behind the Telegram app. Those items still appear in your results with full metadata and requires_telegram_app: true, so nothing is silently dropped.
Output example
{"record_type": "media","channel_username": "telegram","message_id": "395","message_url": "https://t.me/telegram/395","posted_at": "2026-03-28T12:00:00+00:00","media_type": "photo","media_url": "https://cdn5.cdn-telegram.org/file/abc123.jpg","thumbnail_url": null,"duration": null,"caption": "New feature rolling out today 🚀","requires_telegram_app": false,"apify_download_url": null,"media_index": 0,"source_url": "https://t.me/s/telegram","scraped_at": "2026-06-30T14:22:05.123Z"}
Two dataset views are provided: Media (browse every item) and Downloaded files (only items saved to storage).
Use via API / MCP
This actor is exposed in the Apify MCP server as apify--telegram-media-downloader, so AI agents (Claude, ChatGPT, Gemini) can call it directly: pass a channel, get structured media back. It's also callable from the standard Apify API and SDKs (JavaScript, Python).
apify call khadinakbar/telegram-media-downloader \--input='{"channels":["telegram"],"maxMediaPerChannel":20}'
Related actors
- telegram-channel-scraper — messages, view counts, reactions, links, and emails from public channels.
Legal & compliance
This actor collects only publicly available data from Telegram's public web preview — no login, no private content, no circumvention of access controls. You are responsible for using the output in compliance with Telegram's Terms of Service, applicable copyright, and data-protection laws (including GDPR/CCPA where relevant). Do not download or redistribute copyrighted media without permission. Use for lawful research, archival, and analysis only.