Telegram Voice Transcriber
Pricing
from $8.00 / 1,000 audio minute transcribeds
Telegram Voice Transcriber
Transcribe voice messages, video notes and videos from public Telegram channels into searchable text.
Pricing
from $8.00 / 1,000 audio minute transcribeds
Rating
0.0
(0)
Developer
Stanislav Shupilkin
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 hours ago
Last modified
Categories
Share
Turn the audio half of Telegram into searchable text. Point this Actor at any public Telegram channel and it returns every voice message, video note (circle) and video as clean, readable text — so the content your keyword alerts, brand monitors and OSINT tooling silently skip finally shows up in your data.
No Telegram account, no phone number, no API keys, no browser. Channel names in, transcripts out. It reads Telegram's own public web preview and transcribes with Whisper Large v3 Turbo, which handles 90+ languages and auto-detects each one.
What you can do with Telegram transcripts
- Brand and reputation monitoring — competitors, agencies and niche communities announce prices, complaints and partnerships in 40-second voice notes that no text scraper can see. Search the transcripts for your brand, your competitors, or your product category.
- Lead generation — channels where people post "looking for X" as a voice message are invisible to text search. Transcribe them and filter for buying intent.
- Sentiment and narrative tracking — feed transcripts to your LLM or sentiment model with the post date, the channel and the view count already attached.
- OSINT and news monitoring — field reports, eyewitness circles and off-the-record commentary get published as audio precisely because audio does not get indexed. Now it does.
- Content repurposing — turn a channel's voice diary into blog drafts, newsletters or subtitles.
Output fields
One dataset row is one piece of media. Every row carries:
| Field | Type | What it is |
|---|---|---|
channel | string | Channel username the message came from |
message_id | integer | Telegram message id |
date | string | When it was posted, ISO 8601 UTC |
message_url | string | Direct t.me link to the message |
media_type | string | voice, round_video, video, or null for a text-only post |
duration_sec | integer | Length of the audio in seconds |
text | string | The transcript — the whole point |
language | string | Language Whisper detected (Russian, English, …) |
views | string | View count as Telegram shows it (4.53K) |
post_text | string | The caption written next to the media (present when includePostText is on) |
error | string | Present only on a row whose media could not be transcribed, with the reason — the run keeps going and this row is not charged |
Example output
{"channel": "BuroBobkova","message_id": 785,"date": "2026-08-30T12:11:34+00:00","message_url": "https://t.me/BuroBobkova/785","media_type": "round_video","duration_sec": 44,"text": "Вообще, в целом, если абстрагироваться от всего того, всей той скетичности, которая меня ждет, этот отпуск будет везде с какой запоминающейся, потому что в таких условиях так далеко я еще не ходил…","language": "Russian","views": "4.53K","post_text": ""}
Export it as JSON, CSV, Excel or XML, or pull it straight from the Apify API into your own pipeline.
How to transcribe a Telegram channel
- Paste one or more public channels into Telegram channels —
@durov,t.me/durovandhttps://t.me/durovall point at the same channel and all work. - Pick what to transcribe under What to transcribe: voice messages, video notes (circles), regular videos, or any combination.
- Optionally set a date range and how deep into the channel history to go.
- Run it. Results stream into the dataset as they are transcribed, so the first transcripts arrive within seconds.
Input options
| Field | What it does | Default |
|---|---|---|
channels | Public channels to scan (@name, t.me/name or a full link) | required |
mediaTypes | Which media to transcribe: voice, round_video, video | all three |
maxMessagesPerChannel | How many recent messages to look at per channel | 50 |
dateFrom / dateTo | Only messages inside this date range | no limit |
language | ISO-639-1 hint (en, ru, de, …) | auto-detect |
includePostText | Add the caption written next to the media to every row | true |
includeTextOnlyPosts | Also output regular text posts (free — nothing is transcribed) | false |
maxAudioDurationSeconds | Skip anything longer, so one 4-hour recording can't eat the budget | 3600 |
maxPagesPerChannel | How many preview pages (~16–20 messages each) to page through | 20 |
Pricing: pay per event
You are charged for results, not for runtime:
| Event | Price |
|---|---|
message-transcribed — one transcribed message | $0.001 |
audio-minute — one minute of audio, rounded up per file | $0.008 |
A 40-second voice message costs $0.009. A hundred of them cost about $0.90. Messages that fail to download, media that exceeds your duration cap, and text-only posts are not charged.
If you set a maximum spend on the run, the Actor stops as soon as your limit is reached and finishes successfully with everything transcribed up to that point — you keep the partial dataset and pay nothing extra.
How it works
- It reads the public web preview,
https://t.me/s/<channel>— the same page Telegram serves to a logged-out browser. No account, no phone number, no Telegram API, no headless browser. That is why only public channels are reachable. - Media is downloaded and stripped, not rehosted. For a video note or a video, the picture track is thrown away with ffmpeg before anything is sent to speech recognition — a 6 MB circle becomes ~130 KB of audio — so runs stay fast and cheap.
- Long recordings are chunked and stitched. Anything long is split into 15-minute segments, transcribed in order, and joined back into one continuous transcript, so a two-hour audio post comes back as a single
text. - Recognition is Whisper Large v3 Turbo, multilingual and self-switching — Russian, Ukrainian, English, German, Spanish, Turkish, Arabic and 80+ more. The detected language is reported in every row. Transient provider errors are retried; a message that still fails is written out with an
errorand skipped, never crashing the run.
Limits worth knowing before you run it
- Public channels only. Private channels, groups and DMs are not reachable without a Telegram account, and this Actor deliberately does not use one.
- Audio sent as a file attachment cannot be transcribed. Telegram's public web preview shows those as a name and a size, with no downloadable link. Voice messages, video notes and videos are all fine.
- Voice messages are rarer in channels than in chats. Many channels post none at all — keep
round_videoandvideoenabled to capture a channel's full spoken content. - A channel that is missing, private or briefly unreachable is skipped, not fatal. The run logs a warning, moves on to the next channel and finishes successfully with whatever it did collect.
- Media links on Telegram's CDN are signed and expire, so everything is downloaded during the same run.