Telegram Media Downloader — Photos, Videos & Files, No Login avatar

Telegram Media Downloader — Photos, Videos & Files, No Login

Pricing

from $5.00 / 1,000 media item extracteds

Go to Apify Store
Telegram Media Downloader — Photos, Videos & Files, No Login

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

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

FieldDescription
media_typephoto, video, roundvideo, voice, sticker, or document
media_urlDirect downloadable CDN URL of the media file
thumbnail_urlPoster/preview image (mainly videos)
file_name / file_sizeOriginal name and human-readable size (documents)
durationPlayback length for videos and voice notes (m:ss)
captionText the media was posted with
posted_atISO 8601 timestamp of the source message
message_urlPermanent link to the source post
requires_telegram_apptrue when the preview exposes no direct file (large videos, documents)
apify_download_urlPermanent 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)

EventPrice
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, or t.me URLs. They're normalized automatically.
  • maxMediaPerChannel — cap per channel (default 50). Counts individual media.
  • mediaTypes — subset of photo, video, roundvideo, voice, sticker, document. sticker is off by default.
  • downloadFiles — when true, fetch the bytes and save each file to storage, returning apify_download_url.
  • maxFileSizeMb — skip downloading any single file larger than this (default 25 MB). Only applies in download mode.
  • oldestMediaDateYYYY-MM-DD floor; 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}'


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.