Audio & Video Transcription: MP3, MP4 & Podcast to Text
Pricing
from $1.13 / 1,000 transcript, per minute of audios
Audio & Video Transcription: MP3, MP4 & Podcast to Text
Transcribe audio and video files to text with AI: MP3, MP4, WAV, M4A and more, from direct links or podcast RSS feeds. Word timestamps, speaker labels, SRT/VTT subtitles, 90+ languages, up to 10 hours per file. No login or API key.
Pricing
from $1.13 / 1,000 transcript, per minute of audios
Rating
0.0
(0)
Developer
deAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Audio and video transcription and speech to text for files and podcasts: transcribe MP3, MP4, WAV, M4A, FLAC, OGG, WebM, MOV and more to text from a direct link, or get a podcast transcript straight from an RSS feed. Get the transcript with timestamps, speaker labels and ready-to-use SRT/VTT subtitles, in 90+ languages, for files up to 10 hours long. No login, no API key, nothing to install.
deAPI transcription tools
- Transcribing YouTube? → YouTube Transcript AI: Subtitles, SRT & Speakers
- Working with TikTok? → TikTok Transcript from Audio: SRT, VTT & Speakers
- Twitch or Kick VODs? → Twitch & Kick VOD Transcriber: SRT, VTT & Speakers
What does Audio & Video Transcription do?
Paste links to audio or video files — or the RSS feed of a podcast — and the Actor downloads each file, extracts the audio track and transcribes it with an AI speech recognition model. Every file comes back as clean, punctuated text with timings, subtitles and the details you need to file it: the podcast name, episode title and publish date for feed episodes.
It works as a speech-to-text API for files: send links, get back text, timings, speakers and subtitle files as structured data.
Why use it?
- Any common format — MP3, M4A, AAC, WAV, FLAC, OGG, Opus, WebM, MP4, MOV, MKV, AVI, WMV, MPEG.
- Podcast RSS feeds — the newest episodes of a show, with episode titles, dates and GUIDs.
- Up to 10 hours per file — whole lectures, meetings, audiobooks and livestream recordings.
- Word-level timings — every word, with a confidence score.
- Speaker labels — who said what, for interviews, panels and meetings.
- SRT and VTT subtitles, properly split — two-line cues, ready for an editor or a player.
- Video costs the same as audio — only the audio track is transcribed, and file size is never billed.
- Priced at cost — about $0.08 for a one-hour podcast.
What data can you get?
| Data | Details |
|---|---|
| 📝 Full transcript | Clean, punctuated text of everything spoken in the file. |
| ⏱️ Timestamps | One per sentence, one for every word, or none at all. Sentence timing is in the base price. |
| 🗣️ Speaker labels | SPEAKER_00, SPEAKER_01 … on every segment and word. |
| 🎬 SRT and VTT subtitles | Properly split, two lines, readable. |
| 🎙️ Episode details | For RSS feeds: podcast name, episode title, publish date, GUID, episode page and declared duration. |
| 🌍 Language | 90+ languages. Set the spoken language for the most reliable result, or leave it on auto-detect. |
| 🔢 Confidence | A 0–1 score on every word (with word timing), avg_logprob on every segment, and the language-detection confidence per file. |
How to transcribe an audio or video file
- Paste one or more links into Audio or video file URLs — the link must open the file itself — and/or podcast feeds into Podcast RSS feeds.
- Pick a timestamp level — segment is the default and suits subtitles and reading.
- Switch on Label speakers if the recording has more than one voice.
- Pick the spoken language if you know it. Auto-detect can misidentify the language, which lowers accuracy.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.
Which links work
| Link | Works |
|---|---|
https://example.com/episode.mp3 (or .m4a, .wav, .mp4, .mov …) | ✅ direct file link |
A podcast RSS feed, e.g. https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast | ✅ in Podcast RSS feeds |
| Dropbox / Google Drive share pages, web pages with a player | ❌ use the direct download link of the file |
| YouTube, TikTok, Twitch, Kick | ❌ use the dedicated deAPI transcript Actors above |
| Files behind a login | ❌ the link must be public |
How fast is it?
A one-hour podcast is downloaded, re-encoded and transcribed in about a minute and a half. Several files run in parallel.
Long recordings
Files over 2.5 hours are transcribed in parts and stitched back onto one timeline, so timestamps run continuously from start to finish. Speaker labels are numbered within each part and prefixed with it (P2_SPEAKER_00), because the same voice can be numbered differently in different parts. Each part is a separate transcription job, so the per-file fee is charged once per started 2.5 hours; the per-minute rate is unchanged.
Input
{"fileUrls": ["https://www.nasa.gov/wp-content/uploads/2015/01/590331main_ringtone_smallStep.mp3"],"rssFeeds": ["https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast"],"maxEpisodesPerFeed": 1,"timestampLevel": "segment","diarize": false,"language": "en","includeSubtitles": true,"maxConcurrency": 2}
Output
One row per file or episode. This is the real result for the NASA podcast episode above, shortened:
{"url": "https://traffic.megaphone.fm/NATIONALAERONAUTICSANDSPACEADMINISTRATION6740428946.mp3","sourceType": "podcast-episode","source": {"feedUrl": "https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast","podcast": "Houston We Have a Podcast","title": "Reflections After Artemis II with Victor and Jeremy","publishedAt": "Fri, 16 Oct 2026 13:00:00 -0000","declaredDuration": "3617"},"status": "success","hasSpeech": true,"durationSeconds": 3572.402,"language": "en","languageConfidence": 0.99,"wordCount": 11314,"text": "Houston, we have a podcast. Welcome to the official podcast of the NASA Johnson Space Center...","segments": [{ "start": 0.0, "end": 9.4, "text": "Houston, we have a podcast..." }],"srt": "1\n00:00:00,000 --> 00:00:03,120\nHouston, we have a podcast.\n\n...","timestampLevel": "segment","speakers": [],"parts": 1,"downloadedMB": 41.21,"billedMinutes": 60,"billedFiles": 1,"pricingOption": "standard"}
With word-level timestamps each segment carries a words list, and with speaker labels every segment and word carries a speaker. Very long transcripts that do not fit one dataset row are saved as files and linked from textUrl, srtUrl, vttUrl and segmentsUrl — nothing is truncated.
How much does it cost?
$0.0075 per file + $0.00113 per minute (standard). Word-level timings or speaker labels are $0.01063 per file + $0.00181 per minute.
Every price is the cost of the speech recognition plus Apify's platform costs and fee, with no markup beyond that. File size does not matter: a one-hour 1080p video costs exactly the same as the same hour as an MP3, because only the audio is transcribed. Recordings over 2.5 hours are transcribed in parts and pay the per-file fee once per part.
| What you asked for | Per file | Per minute |
|---|---|---|
| Plain text, or sentence timestamps | $0.0075 | $0.00113 |
| Word-level timings, or speaker labels, or both | $0.01063 | $0.00181 |
| File | Sentence timing | Word timing or speakers |
|---|---|---|
| A 1-minute voice note (1 MB) | $0.0086 | $0.0124 |
| A 30-minute interview MP3 (30 MB) | $0.0414 | $0.0649 |
| A 1-hour podcast episode (42 MB) | $0.0753 | $0.1192 |
| A 1-hour lecture as 720p MP4 (500 MB) | $0.0753 | $0.1192 |
| A 3-hour livestream recording, audio (170 MB) | $0.2184 | $0.3471 |
Files that fail — unreachable, not audio, too long, too big — are never charged, and neither are files skipped by a run cost limit or a free-plan allowance. Every one still gets a row explaining what happened.
Set maximum cost per run to cap your spend: the Actor measures each file before it transcribes it and skips anything the remaining budget cannot cover.
Free plan: 3 files per run, 30 minutes and 200 MB maximum each, 60 transcribed minutes per calendar month (resets at 00:00 UTC on the 1st), within a daily capacity shared by all free users. Any paid Apify plan removes the free-plan limits.
Use cases
| Use case | Why it needs a transcript |
|---|---|
| Podcast show notes and SEO | Publish searchable episode pages, quotes and chapter markers. |
| Content repurposing | Turn recordings into articles, newsletters and social posts. |
| Meetings, interviews and research | Speaker-labelled transcripts of calls, focus groups and interviews. |
| Media monitoring | Track what is said across a set of podcasts, every day. |
| Accessibility | Real SRT and VTT subtitles for recordings that were never captioned. |
| RAG and AI agents | Timestamped, speaker-labelled text ready for a vector store or an LLM. |
Tutorial: transcribe audio files and podcasts with the API
1. One file in the Console
Open the Actor, keep the prefilled NASA link, set Spoken language to English and click Start. In a few seconds the Transcripts view shows "That's one small step for man, one giant leap for mankind."
2. A podcast feed
Put https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast into Podcast RSS feeds and set Episodes per feed to 1. The newest episode is transcribed, and the Files & episodes view shows its title and publish date.
3. From Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("deapi/audio-video-to-text").call(run_input={"rssFeeds": ["https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast"],"maxEpisodesPerFeed": 3,"language": "en",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row["status"] == "success":print(row["source"].get("title"), row["wordCount"], "words")
4. From JavaScript or cURL
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('deapi/audio-video-to-text').call({fileUrls: ['https://www.nasa.gov/wp-content/uploads/2015/01/590331main_ringtone_smallStep.mp3'],language: 'en',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].text);
curl -X POST "https://api.apify.com/v2/acts/deapi~audio-video-to-text/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"fileUrls": ["https://www.nasa.gov/wp-content/uploads/2015/01/590331main_ringtone_smallStep.mp3"], "language": "en"}'
The synchronous endpoint waits at most 5 minutes. For long files or whole feeds, start the run with POST /v2/acts/deapi~audio-video-to-text/runs and read the dataset when it finishes, or use the Python and JavaScript clients above, which wait for you.
5. Keep a podcast transcribed automatically
Save an input with your feed and Episodes per feed set to 1 as a Task, add a daily Schedule, and attach a webhook or an integration (Make, Zapier, n8n, Google Drive) to send each new transcript where you need it.
Audio transcription API and integrations
Every Apify Actor has a REST API, a scheduler, webhooks and official JavaScript and Python clients. It also runs from Make, Zapier, n8n and as a tool for AI agents through the Apify MCP server.
FAQ
How do I convert an MP3 to text?
Paste the direct link to the MP3 into Audio or video file URLs and click Start. The text field of the result is the transcript.
Can I transcribe a video file? How do I convert MP4 to text?
Yes — MP4, MOV, MKV, AVI, WMV, WebM and MPEG all work. Paste the direct link to the video; only the audio track is transcribed, so a video costs exactly the same per minute as its audio.
Is there a speech-to-text API? Do I need an API key?
Yes — this Actor is one. Call it through the Apify API or the Python and JavaScript clients shown above with your Apify token. You do not need an account or a key with any speech recognition provider.
Can I transcribe many files in bulk?
Yes. Put as many links and feeds as you like into one run; up to 5 files are processed in parallel (set Files in parallel). Every file gets its own row, and failures never stop the rest of the batch.
Can I transcribe Spotify or Apple Podcasts links?
Not the show pages themselves, because they are players, not files. Use the show's RSS feed instead — almost every podcast has one, usually linked on the show's website or its hosting page — and paste it into Podcast RSS feeds.
How accurate is it?
Clear speech in a known language transcribes very reliably; heavy background music, cross-talk and poor microphones lower accuracy. Setting the spoken language helps more than anything else. Word-level score values let you find the passages the model was unsure about.
How do I transcribe a podcast?
Put the show's RSS feed into Podcast RSS feeds. The newest episodes are transcribed (3 by default, up to 50), each with its episode title and publish date. Most podcast hosts publish the RSS link on the show page; Apple Podcasts and Spotify pages are not feeds.
Can I upload a file from my computer?
Not directly — the Actor reads files from a link. Upload the file to any storage that gives a direct download link (an S3 or Google Cloud bucket, a Dropbox direct link, the Apify key-value store), and paste that link.
How long and how large can a file be?
Up to 10 hours and 1.5 GB on paid plans; 30 minutes and 200 MB on the free plan. A larger video is usually fine as its audio: an M4A or MP3 of the same recording is a fraction of the size.
Can I get SRT or VTT subtitles?
Yes, both, free of charge, on every file with timing, split into readable two-line cues.
Which languages are supported?
More than 90, auto-detected by default. Set the spoken language whenever you know it — auto-detect can misidentify the language, which lowers accuracy. The setting applies to every file in the run.
What happens if a file has no speech?
You get a row with hasSpeech: false and an empty transcript, not an error. Music and silence are valid outcomes. The file is still billed, because the audio was still processed.
Why did a file fail?
Usually because the link is not a direct file link (a web page with a player, a share page), the file is behind a login, or it has no audio track. Failures are never charged; the reason is in the row's error field.
Is my file stored?
The file is downloaded into the run, transcribed and deleted when the run's work on it is done. Your transcript stays in your own Apify storage.
Support / feedback
Found a bug, hit a file that will not transcribe, or want a feature? Open a ticket in this Actor's Issues tab on its Apify Store page and include the file URL and run ID where you can.