Video & Audio Transcriber avatar

Video & Audio Transcriber

Pricing

from $5.94 / 1,000 started transcription minutes

Go to Apify Store
Video & Audio Transcriber

Video & Audio Transcriber

Transcribe public audio and video URLs into searchable text, timestamps, and subtitles for captioning, research, archives, and AI workflows.

Pricing

from $5.94 / 1,000 started transcription minutes

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Convert public audio and video into searchable transcript text, timestamped segments, and subtitle files. Provide one public media link or a batch, then export source-bound records for captioning, research, archives, and AI workflows.

Who is it for?

Use this Actor when you need reusable text from spoken content without manually copying timestamps:

  • Content and video teams preparing captions and searchable archives.
  • Researchers and journalists creating notes from public interviews, lectures, and recordings.
  • Podcast teams turning recent public episodes into text for editorial workflows.
  • AI builders supplying speech-derived text to retrieval, analysis, or summarization pipelines.

What you get

Each completed item includes transcript text, timed segments, subtitle text, language metadata, duration information, and the submitted source link. Batch results preserve item-level errors so one unavailable source does not hide successful work.

  • Plain transcript text for search and analysis.
  • Start/end timestamps for every transcript segment.
  • SRT and WebVTT subtitle content.
  • Source URL, resolved URL where available, title, and source classification.
  • Language, selected model, processing task, and duration metadata.

Input recipes

One public audio file

{
"mediaUrls": [{ "url": "https://raw.githubusercontent.com/ggml-org/whisper.cpp/master/samples/jfk.wav" }],
"language": "en",
"model": "base.en",
"maxMinutesPerItem": 10
}

A batch with language detection

{
"mediaUrls": [
{ "url": "https://example.com/interview.mp3" },
{ "url": "https://example.com/presentation.mp4" }
],
"language": "auto",
"model": "base",
"task": "transcribe",
"maxMinutesPerItem": 30
}

Recent public podcast episodes

{
"feedUrls": [{ "url": "https://example.com/podcast.xml" }],
"maxEpisodesPerFeed": 5,
"language": "auto",
"model": "base"
}

Input settings

SettingWhat it controls
mediaUrlsPublic audio/video links and supported public media pages.
feedUrlsPublic podcast feed links for recent episodes.
maxEpisodesPerFeedMaximum recent episodes to include from each feed.
languageauto detection or an ISO 639-1 code such as en, es, de, fr, or ja.
modeltiny, base, small, or English-focused base.en.
taskKeep spoken language with transcribe, or use translate for English text.
maxMinutesPerItemMaximum audio duration to include for each item.

Exact duplicate source links are handled once per run. Start with a short duration limit when checking an unfamiliar source.

Output fields

One dataset row is returned for each unique submitted media item. Successful rows contain transcript content; unavailable or unsupported items contain a clear error value.

FieldDescription
inputUrlPublic source link submitted for this result.
urlFinal publicly reachable media link when available.
sourceTypeSource category, such as public media or podcast episode.
platformDirect or resolved public source classification.
titleAvailable source title or file name.
uploaderPublic uploader metadata when supplied by the source.
durationSecondsAvailable source duration in seconds.
transcribedSecondsDuration included in this transcript.
languageDetected or selected transcript language.
languageProbabilityLanguage-detection confidence when available.
modelSpeech model selected for the item.
tasktranscribe or translate.
textPlain transcript text.
wordCountNumber of words in text.
segmentsTimed transcript segments with text.
srtSubtitle content in SRT format.
vttSubtitle content in WebVTT format.
srtUrl, vttUrlDownload links for saved subtitle files when available.
feedUrl, feedGuidPodcast origin and episode identifier when applicable.
errorItem-specific outcome information, or null after success.
scrapedAtISO timestamp for processing completion.

Example result

{
"inputUrl": "https://example.com/interview.mp3",
"sourceType": "public-media",
"durationSeconds": 132,
"transcribedSeconds": 132,
"language": "en",
"model": "base",
"task": "transcribe",
"text": "Thank you for joining us today.",
"segments": [{ "start": 0, "end": 2.4, "text": "Thank you for joining us today." }],
"srt": "1\n00:00:00,000 --> 00:00:02,400\nThank you for joining us today.",
"error": null
}

Use cases

  • Create captions and subtitle drafts for public video.
  • Search spoken interviews, calls, lectures, and meetings that are publicly shared.
  • Build a text archive for podcast editorial planning.
  • Send transcript rows to an AI agent, vector database, spreadsheet, or reporting workflow.
  • Keep source links with every exported transcript for traceability.

Pricing

You are charged per started minute of successfully transcribed speech. Items that cannot be processed or do not produce speech are not charged. Current rates and tier discounts are shown on the live Pricing tab. Use maxMinutesPerItem to control the maximum duration of each item.

Limits and supported sources

Use publicly reachable media. Private links, login-only pages, DRM-protected media, and speaker diarization are outside this Actor's scope. Results can vary with source availability, audio quality, language, and selected model. Direct public media links are the most predictable starting point.

Tips for better transcripts

  • Choose the correct language when you already know it.
  • Use base.en for English-only recordings; use multilingual models for other languages.
  • Choose small when accuracy matters more than run time.
  • Use shorter per-item limits to test a source before a longer batch.
  • Export segments, srt, or vtt when your downstream workflow needs timestamps.

API usage

Run the Actor through the Apify API using the same input object shown above. Replace APIFY_TOKEN with an Apify API token.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/video-audio-transcriber-scraper').call({
mediaUrls: [{ url: 'https://example.com/interview.mp3' }],
language: 'auto',
model: 'base',
maxMinutesPerItem: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("APIFY_TOKEN")
run = client.actor("fetch_cat/video-audio-transcriber-scraper").call(run_input={
"mediaUrls": [{"url": "https://example.com/interview.mp3"}],
"language": "auto",
"model": "base",
"maxMinutesPerItem": 10,
})
print(client.dataset(run["defaultDatasetId"]).list_items().items)

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~video-audio-transcriber-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mediaUrls":[{"url":"https://example.com/interview.mp3"}],"language":"auto","model":"base","maxMinutesPerItem":10}'

MCP and AI agents

Add this Actor to an Apify MCP client to let an agent request transcription and read the resulting dataset. Configure the tool using Apify MCP, then give your agent a public source URL and the desired transcript language or duration limit.

$claude mcp add apify -- npx -y @apify/mcp-server
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/mcp-server"],
"env": { "APIFY_TOKEN": "APIFY_TOKEN" }
}
}
}

Example prompts: “Transcribe this public WAV in English” and “Run the Video & Audio Transcriber on these public episode URLs, then summarize the dataset.”

FAQ

Can I submit a video page URL?

Yes, for supported publicly reachable pages. A direct public media link is the most predictable option.

Can I translate speech to English?

Yes. Set task to translate and select a multilingual model.

How does automatic language work?

Set language to auto to return language metadata when it can be determined. If certainty is low, language fields may be empty rather than guessed.

Why does a batch item show an error?

The item may be unavailable, too large, unsupported, or contain no detected speech. Other valid batch items continue normally.

Is speaker diarization included?

No. This release provides transcript text and timed segments, not speaker labels.

Support

For help, share a sanitized input, the affected inputUrl, and the dataset error value. Do not send credentials or private-media links.