Telegram Media Downloader avatar

Telegram Media Downloader

Pricing

from $0.01 / 1,000 media items

Go to Apify Store
Telegram Media Downloader

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é

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

50

Total users

1

Monthly active users

7 days ago

Last modified

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/s archive 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 - video or photo.
  • extension, thumbnailUrl, and quality when Telegram or the media URL exposes them.
  • postUrl and postId for tracing the media back to the source post.
  • channelHandle and authorName when visible.
  • postText, postDate, and viewsText when 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

  1. Paste one or more public Telegram targets in Telegram targets.
  2. Set Post limit per channel for channel, group, archive, or handle targets.
  3. Set Total media item limit for a small test run or predictable spend.
  4. Choose Media types: all media, videos, or photos.
  5. Optionally set Start date and End date for dated channel or archive scans.
  6. 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

FieldWhat to enter
targetsPublic Telegram post URLs, channel URLs, group URLs, t.me/s archive URLs, or @handles.
maxPostsPerChannelHow many recent public posts to inspect for each channel, group, archive, or handle target.
maxMediaItemsOptional cap for saved media items across the run.
mediaTypesall, video, or photo.
startDateOptional earliest post date for channel or archive scans, formatted as YYYY-MM-DD.
endDateOptional 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

Made with ❤️ by Maxime Dupré