Audio & Video Transcription: MP3, MP4 & Podcast to Text avatar

Audio & Video Transcription: MP3, MP4 & Podcast to Text

Pricing

from $1.13 / 1,000 transcript, per minute of audios

Go to Apify Store
Audio & Video Transcription: MP3, MP4 & Podcast to Text

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

deAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

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?

DataDetails
📝 Full transcriptClean, punctuated text of everything spoken in the file.
⏱️ TimestampsOne per sentence, one for every word, or none at all. Sentence timing is in the base price.
🗣️ Speaker labelsSPEAKER_00, SPEAKER_01 … on every segment and word.
🎬 SRT and VTT subtitlesProperly split, two lines, readable.
🎙️ Episode detailsFor RSS feeds: podcast name, episode title, publish date, GUID, episode page and declared duration.
🌍 Language90+ languages. Set the spoken language for the most reliable result, or leave it on auto-detect.
🔢 ConfidenceA 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

  1. 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.
  2. Pick a timestamp level — segment is the default and suits subtitles and reading.
  3. Switch on Label speakers if the recording has more than one voice.
  4. Pick the spoken language if you know it. Auto-detect can misidentify the language, which lowers accuracy.
  5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.
LinkWorks
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 forPer filePer minute
Plain text, or sentence timestamps$0.0075$0.00113
Word-level timings, or speaker labels, or both$0.01063$0.00181
FileSentence timingWord 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 caseWhy it needs a transcript
Podcast show notes and SEOPublish searchable episode pages, quotes and chapter markers.
Content repurposingTurn recordings into articles, newsletters and social posts.
Meetings, interviews and researchSpeaker-labelled transcripts of calls, focus groups and interviews.
Media monitoringTrack what is said across a set of podcasts, every day.
AccessibilityReal SRT and VTT subtitles for recordings that were never captioned.
RAG and AI agentsTimestamped, 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 ApifyClient
client = 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.

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.