Telegram Media Downloader
Pricing
$1.05 / 1,000 media files
Telegram Media Downloader
Get photos and videos from public Telegram posts, channels, groups, archives, and handles. Export media links and post details to an Apify dataset.
Pricing
$1.05 / 1,000 media files
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
88
Total users
4
Monthly active users
4 days ago
Last modified
Categories
Share
📥 Get public Telegram media by link
Telegram Media Downloader is for researchers, media teams, and developers who need direct links to photos, videos, or audio from public Telegram pages. Add a public post URL, channel or group archive URL, or public handle. The Actor saves each media file with its source post and public post details in an Apify dataset. Source links may expire, so use them while Telegram makes them available.
- Use Telegram Media Downloader By Link to collect media links from one known public Telegram post.
- Use Telegram Video Downloader to collect direct video links from public Telegram posts.
- Use Telegram Photo Downloader to collect photo links from public Telegram posts.
- Use Telegram Channel Media Downloader to check recent posts from a public channel, group, archive, or handle.
- Use Telegram Media Date Filter to keep media from an exact publication date range.
- Use Telegram Media Metadata Export to export media type, file details, post text, dates, views, and source links.
The Actor does not need a Telegram login, cookies, phone number, or API key. It cannot open private channels, invite-only groups, direct messages, deleted posts, or /c/ links.
📦 Telegram media rows
Each dataset row is one saved media file from a public Telegram post. The schema supports photos, videos, and audio. It can include:
mediaUrl: the direct Telegram media link. It may expire.mediaType:video,photo, oraudio.extension,thumbnailUrl, andquality: file details when known.postUrlandpostId: the source post link and ID.channelHandleandauthorName: public source details when shown.postText,postDate, andviewsText: public post details when shown.position: the media file's place in its post, starting at 1.
The dataset has media rows only. A private, missing, unsupported, deleted, empty, or filtered target does not create a row. No row is saved when no matching public media is found.
🚀 Collect Telegram media
- Choose one target type: Post URL, Channel or archive, or Public handle.
- Add one or more values for that target type.
- For Channel or archive and Public handle targets, set how many recent posts to check, or leave the limit empty to return all available results until the source is exhausted.
- Set a total media limit, or leave it empty to return all available results until the source is exhausted.
- Choose All media, Videos, Photos, or Audio.
- Add a start date or end date if needed.
- Start the Actor and open the dataset.
⚙️ Input
Choose one target type, then add values in the matching field. A post URL fetches one post. A Channel or archive URL or Public handle scans recent posts.
Input fields
| Field | Type | What it does |
|---|---|---|
target | string | Selects post, channel, or handle. |
postUrls | array of strings | Adds public Telegram post URLs. Each URL points to one post. |
channelUrls | array of strings | Adds public Telegram channel or group archive URLs, such as https://t.me/s/telegram. |
handles | array of strings | Adds public Telegram handles, such as @telegram. |
maxPostsPerChannel | integer | For Channel or archive and Public handle targets, checks this many recent posts. Leave it empty to return all available results until the source is exhausted. |
maxMediaItems | integer | Sets the total number of matching media files to keep. Leave it empty to return all available results until the source is exhausted. |
mediaTypes | array of strings | Keeps all, video, photo, or audio. Select all by itself to keep every supported type. |
startDate | string | Keeps media from posts published on or after this YYYY-MM-DD date. |
endDate | string | Keeps media from posts published on or before this YYYY-MM-DD date. |
Example input
This example is copied from a successful current-beta default-input run:
{"target": "channel","channelUrls": ["https://t.me/s/telegram"],"maxPostsPerChannel": 100,"maxMediaItems": 100,"mediaTypes": ["all"]}
🧾 Output
The output schema links to the default dataset. Each dataset row has the same shape. Values are null when Telegram does not show them.
Output fields
| Field | Type | What it does |
|---|---|---|
results | string | Links to the saved media rows in the default dataset. |
mediaUrl | string | Direct Telegram URL for the media file. This link may expire. |
mediaType | string | Says whether the row contains a video, photo, or audio file. |
extension | string or null | Gives the file extension when known. |
thumbnailUrl | string or null | Gives a direct thumbnail URL when Telegram provides one. |
quality | string or null | Gives Telegram's quality label when known. |
postUrl | string | Links to the public Telegram post that holds the media. |
postId | string | Gives the Telegram post ID shown in the channel or group. |
channelHandle | string or null | Gives the public channel or group handle when shown. |
authorName | string or null | Gives the channel, group, or author name when shown. |
postText | string or null | Gives visible Telegram post title, description, or text when shown. |
postDate | string or null | Gives the exact Telegram post date and time when shown. |
viewsText | string or null | Gives the view count text shown by Telegram. |
position | integer | Gives this media file's place in the post, starting at 1. |
Example media row
This complete row is from a successful current-beta run:
{"mediaUrl": "https://cdn1.telesco.pe/file/40c44c8ea6.mp4?token=T2aBjxP72FsZerHWOQqlZUkY94hBQ6Vm_YTTIVT7ZfAzn1cSEGlSXrQ3ldxs7Zgkzlr6iBv5ltcDBWRYdHrUiWTGSCAA8MXRCamhYBKoqfRjSvLYLzyBK0pg7mBNJ6jKaP9u0JaiCaOSaC4KKjK9oiWCJuMy64fjEsk5AkAPI44FRe0fJe5pZqjxW7rWCyWU_Tub1vAXQROFOQ-dRLlIEHt0xWbD0ZMVegBfIcppXS9VkzGzjF0qF1zPsc7OX_1eoFCBfnoHH04tCb3SxOI75sP4RX5xB8PKKBkvqnw_HGP5Ikryv-wVdOjeWhmIM_8VxI9xyzfCudxdgKS1kmOKlg","mediaType": "video","extension": "mp4","thumbnailUrl": "https://cdn1.telesco.pe/file/qgW24ZJUBkwp8fq9JmWGv7egPJ9SQ2puBjWiDuPfotPH1c8DoQ-1YIQ27Lp4Vrst95COxGbwybC69ccDJTYIyaUwQ3_GqVrhU3ep2_WmlQnPrAiQdSxDU7usMUo8O_Dr1NTBOWIodQvEb4Ii2IJPwr60dPeElzMMycMZ3cjtc3x7sPOpQCi4-TBc5udJludSNbseB3A8RHsibZ0YpE2vHR4gjrCqxqkxm6TH77SEYaJIoRwic1xJ6oWv09ffBoROFLrtXDAFhSkKElSTFMs6-qgiqRJfrav569WZq3Nutt6BgvMoGgk9QpzO4tTqvIfZhiKcBzGun6Wxfmshxbl2eg","quality": null,"postUrl": "https://t.me/telegram/383","postId": "383","channelHandle": "telegram","authorName": "Telegram News","postText": "Sell Your Gifts for Stars. Your collectible gifts can now be resold to other users for Telegram Stars.May Features1 • 2 • 3 • 4 • More","postDate": "2025-05-13T13:35:13+00:00","viewsText": "1.95M","position": 1}
A source-hosted mediaUrl can expire. Save or use it while Telegram still makes it available.
💳 Pricing
This Actor uses pay-per-event pricing. You are charged for each public Telegram photo, video, or audio file saved to the dataset. The event price for your Apify plan is shown before you start a run.
🔌 Integrations
Open the results in an Apify dataset or use the Apify API to read and export the saved rows.
❓ FAQ
Can I use a private Telegram link?
No. The Actor reads publicly reachable Telegram pages without a login. It cannot open private channels, invite-only groups, direct messages, deleted posts, or /c/ links.
Can I mix post URLs, channel URLs, and handles in one run?
No. Choose one target type for each run. Use separate runs for separate target types.
What does a public post URL do?
It checks the linked post only. Use a Channel or archive URL or a Public handle when you want to scan recent posts.
Why did a public target return no media?
The checked posts may have no supported media. Your media or date filters may also leave out every file, so no row is saved for that target.
Can I collect only videos, photos, or audio?
Yes. Set mediaTypes to video, photo, or audio. Choose all by itself to keep every supported type.
Is this a Telegram downloader app?
No. It runs as an Apify Actor. Add a public Telegram target and open the media links in the Apify dataset.
Do I need a Telegram account or API key?
No. The Actor reads public Telegram pages without a Telegram login, cookies, phone number, or API key.
Are Telegram media links permanent?
No. The files stay at Telegram, and Telegram can end access to a link after the run. Use the link while it is available.
How do the date filters work?
startDate keeps posts published on or after that date. endDate keeps posts published on or before that date. Both dates use YYYY-MM-DD.
📝 Changelog
2.0: New target controls and broader media coverage
- Choose Post URL, Channel or archive, or Public handle targets.
- Collect photos, videos, and audio with optional post and media limits.
- Treat unavailable Telegram posts as clean no-result targets while retrying temporary source problems.
v1.0
- Focused media output on public Telegram photos and videos with direct source-hosted media URLs.
- Refreshed buyer-facing pricing copy.
- Cleaned dataset fields.
v0.0
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Telegram Channel Messages Scraper for public channel posts, text, dates, source links, and media metadata.
- Telegram Channels Scraper to find or enrich public Telegram channels before collecting their media.
- Telegram Info Scraper to inspect public Telegram profile and channel details.
- Facebook Media Downloader for direct media links from known public Facebook URLs.
- Twitter X Media Scraper for direct media links from public X posts.
Made with ❤️ by Maxime Dupré