Video & Audio Transcriber
Pricing
from $5.94 / 1,000 started transcription minutes
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
Maintained by CommunityActor 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
| Setting | What it controls |
|---|---|
mediaUrls | Public audio/video links and supported public media pages. |
feedUrls | Public podcast feed links for recent episodes. |
maxEpisodesPerFeed | Maximum recent episodes to include from each feed. |
language | auto detection or an ISO 639-1 code such as en, es, de, fr, or ja. |
model | tiny, base, small, or English-focused base.en. |
task | Keep spoken language with transcribe, or use translate for English text. |
maxMinutesPerItem | Maximum 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.
| Field | Description |
|---|---|
inputUrl | Public source link submitted for this result. |
url | Final publicly reachable media link when available. |
sourceType | Source category, such as public media or podcast episode. |
platform | Direct or resolved public source classification. |
title | Available source title or file name. |
uploader | Public uploader metadata when supplied by the source. |
durationSeconds | Available source duration in seconds. |
transcribedSeconds | Duration included in this transcript. |
language | Detected or selected transcript language. |
languageProbability | Language-detection confidence when available. |
model | Speech model selected for the item. |
task | transcribe or translate. |
text | Plain transcript text. |
wordCount | Number of words in text. |
segments | Timed transcript segments with text. |
srt | Subtitle content in SRT format. |
vtt | Subtitle content in WebVTT format. |
srtUrl, vttUrl | Download links for saved subtitle files when available. |
feedUrl, feedGuid | Podcast origin and episode identifier when applicable. |
error | Item-specific outcome information, or null after success. |
scrapedAt | ISO 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.enfor English-only recordings; use multilingual models for other languages. - Choose
smallwhen accuracy matters more than run time. - Use shorter per-item limits to test a source before a longer batch.
- Export
segments,srt, orvttwhen 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 ApifyClientclient = 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.
Related Actors
- YouTube Scraper
- TikTok Sound Scraper
- Instagram AI Transcript Extractor
- Podcast Episode Scraper
- Video Metadata Scraper
Support
For help, share a sanitized input, the affected inputUrl, and the dataset error value. Do not send credentials or private-media links.