Video to Text — Transcribe Any Video, $0.009/min avatar

Video to Text — Transcribe Any Video, $0.009/min

Pricing

from $6.30 / 1,000 minute transcribeds

Go to Apify Store
Video to Text — Transcribe Any Video, $0.009/min

Video to Text — Transcribe Any Video, $0.009/min

[$0.009/min] Turn any video into text: YouTube, TikTok, Instagram, X or Vimeo links, or MP4, MOV and WEBM files. Timed transcript in 90+ languages, optional translation to English, speaker labels and SRT subtitles. No API key, no per-run fee.

Pricing

from $6.30 / 1,000 minute transcribeds

Rating

0.0

(0)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

3 days ago

Last modified

Share

Video to Text turns a video into a written transcript. Paste a link from YouTube, TikTok, Instagram, Facebook, X, Vimeo and other video sites, or a direct MP4, MOV or WEBM file, and get the spoken words back as text, with every passage tied to the second it was said. 90+ languages, videos of any length, no API key and no fee per run.

It is the Speech to Text engine with the form set up for video; anything that works there works here, at the same price.

Tested head-to-head — 9 October 2026

Video to text Actors tested on a 1-minute MP4 file and a 19-second YouTube video: this Actor returned both word-perfect

The same two videos — a 1-minute MP4 file (a passage read aloud) and a 19-second YouTube video — sent to this Actor and to the five most-used video transcribers on the Apify Store (A–E, by monthly users), every Actor on its default settings.

This ActorThe five others
MP4 file: textWord-perfect4 of 5 word-perfect; one lost 7 words
YouTube video: textWord-perfect2 of 5 returned text, each with 3 words wrong; 3 returned nothing or an error
MP4 file: cost$0.011$0.006–$0.058
YouTube video: cost$0.101 (incl. $0.09 per video link)$0.015–$0.026 from the two that returned text
Time per run10.8 s (file), 28.0 s (YouTube)2.8–40.5 s (file), 23.4–46.3 s (YouTube, the two that returned text)

A video page costs more here because its audio is pulled through a residential exit node; a direct file link never pays that fee.

What it is for

Repurposing videos into articles and posts, searchable archives of webinars and lectures, quotes from interviews, subtitles, competitor and creator research, and AI agents that need to "watch" a video as text.

What you give itWhat you get back
A YouTube, TikTok, Instagram, X or Vimeo linkTranscript with timed passages
An MP4, MOV or WEBM fileThe audio track is pulled out; the picture is discarded
A two-hour webinarOne transcript, timings continuous across parts
A video in any languageText in that language, or translated to English
subtitleFormat: "srt"A ready SRT file alongside the text
chunkForRag: trueChunks with timecodes, ready to embed

Video pages (YouTube, TikTok and the rest) cost an extra $0.09 per link because their audio is fetched through a residential exit node; a direct file link never pays it.

What data does it return?

FieldExample
source, fileNamehttps://example.com/episode-12.mp3 · episode-12.mp3
durationSeconds, durationMinutes461.05 · 7.68
language, model, translatedToEnglishEnglish · fast · false
transcript, wordCount, charCountthe full text · 1665 · 9218
segments[{"start": 0, "duration": 4.56, "text": "…", "speaker": "Speaker 1"}]
speakerCount, speakers3 · ["Speaker 1", "Speaker 2", "Speaker 3"]
chunks[{"index": 0, "startTimecode": "00:00:00", "text": "…"}]
subtitlesa complete SRT or WebVTT file
status, errorCode, errorMessageok, or why a file failed

How much does it cost?

EventPriceWhen it is charged
Minute transcribed$0.009Per started minute, using the built-in key
Minute with your own key$0.004Per started minute when you supply a Groq key
Add-on: Speaker labels$0.006Per started minute, only when speaker labels are on
File processed$0.002Per file downloaded and prepared
Video link resolved$0.09Per YouTube, TikTok, Instagram, X, Vimeo or other video page whose audio has to be pulled through a residential exit node. Direct file links never pay it

A failed file comes back as an error row and is never charged. Larger monthly plans get 10–30 % off.

Bulk export

This Actor is built for bulk jobs — put hundreds of links into one run, or call it from the API on a schedule. There is no fee per run: you pay per started minute of audio plus $0.002 per file, and $0.09 only for a video page (not a direct file link) whose audio has to be fetched through a residential exit node. Files that fail are returned as error rows and are free.

⬇️ Input

{
"urls": ["https://example.com/episode-12.mp3"],
"quality": "accurate",
"includeSegments": true
}

Speaker labels for a two-person interview:

{ "urls": ["https://example.com/interview.m4a"], "diarize": true, "speakerCount": 2 }

Every input field

FieldWhat it does
urlsPublic links to audio or video files. Several at a time is fine.
fileAn uploaded file instead of a link.
qualityfast for speed, accurate for difficult audio and non-English speech.
languageName the spoken language instead of letting the model guess — faster and safer on short clips.
translateToEnglishWrite the text in English whatever was spoken.
diarize, speakerCountSplit the transcript by speaker. Give the count when you know it.
vocabularyHintNames, brands and jargon, so they come out spelled your way.
includeSegmentsTime-stamped passages alongside the full text.
subtitleFormatsrt or vtt to get a ready subtitle file.
apiKeyYour own Groq key — cuts the per-minute price by more than half.
maxConcurrencyFiles processed in parallel.
maxFileSizeMb, timeoutPerFileSecsGuard rails for very large or very slow downloads.

⬆️ Output

{
"source": "https://example.com/episode-12.mp3",
"fileName": "episode-12.mp3",
"durationMinutes": 7.68,
"language": "English",
"transcript": "Welcome back to the show…",
"wordCount": 1665,
"segments": [{ "start": 0, "duration": 4.56, "text": "Welcome back to the show" }],
"status": "ok"
}

Use cases

Podcasts and shows

A transcript to pull quotes from, plus show notes and a searchable archive of every past episode.

Meetings and calls

Minutes that cite the minute something was said, and speaker labels so the actions land on the right person.

Lectures and webinars

Hours of talk turned into text you can search, instead of scrubbing a video for one sentence.

Compliance and records

A written record of calls kept alongside the audio, with timings that point back into the file.

Feeding audio into RAG

chunkForRag returns overlapping chunks with timecodes, sized for embeddings — no post-processing needed.

🤖 For AI agents and LLM apps

Compact reference for agents calling this Actor through the Apify MCP server or the Apify API (lergassy/video-to-text).

Purpose: turn a recording into text with time-stamped passages, optionally split by speaker.

Minimal input:

{ "urls": ["https://example.com/audio.mp3"] }

Behaviours an agent should know:

  • Billing is per started minute of audio, not per row. A 40-minute file costs the same whether you keep the segments or not.
  • durationMinutes on the row tells you what the run actually cost.
  • Speaker labels are an extra per-minute charge. Turn diarize on only when who-said-what matters.
  • Passing speakerCount when you know it makes the split noticeably cleaner.
  • language is detected automatically, but naming it removes the guess on short or noisy clips.
  • A file that cannot be downloaded or decoded returns a status: "error" row with the reason, free of charge — check status before reading transcript.
  • Video files work: the audio track is extracted and the picture discarded.

Use via API

Run this Actor from your own code or pipeline. Get your token in Apify Console → Settings → API & Integrations. Every input field below has the same name as in the JSON tab of the input form.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lergassy/video-to-text").call(run_input={
"urls": [
"https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/audio-samples/sample-1min.mp4"
],
"quality": "fast",
"translateToEnglish": False,
"diarize": False,
"includeSegments": True,
"chunkForRag": False,
"chunkSize": 1200,
"chunkOverlapSeconds": 0,
"subtitleFormat": "none",
"maxConcurrency": 3,
"maxFileSizeMb": 500,
"timeoutPerFileSecs": 600
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lergassy/video-to-text').call({
"urls": [
"https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/audio-samples/sample-1min.mp4"
],
"quality": "fast",
"translateToEnglish": false,
"diarize": false,
"includeSegments": true,
"chunkForRag": false,
"chunkSize": 1200,
"chunkOverlapSeconds": 0,
"subtitleFormat": "none",
"maxConcurrency": 3,
"maxFileSizeMb": 500,
"timeoutPerFileSecs": 600
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL (runs the Actor and returns the results in one call)

curl -X POST "https://api.apify.com/v2/acts/lergassy~video-to-text/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/audio-samples/sample-1min.mp4"], "quality": "fast", "translateToEnglish": false, "diarize": false, "includeSegments": true, "chunkForRag": false, "chunkSize": 1200, "chunkOverlapSeconds": 0, "subtitleFormat": "none", "maxConcurrency": 3, "maxFileSizeMb": 500, "timeoutPerFileSecs": 600}'

Limitations, stated plainly

  • Audio quality decides accuracy. Overlapping speech, heavy accents and phone-line compression cost accuracy no model recovers fully.
  • Speaker labels are labels, not identities. You get "Speaker 1" and "Speaker 2", never names — mapping them to people is your step.
  • Timings are passage-level, not word-level.
  • Very large files need time. Raise timeoutPerFileSecs for multi-hour recordings, and expect a long run.
  • Links must be public. A file behind a login or an expiring signed URL cannot be fetched.

Integrations

Runs from the Apify API and the Python and JavaScript clients, and from n8n, Make or Zapier through the Apify app. Point a webhook at the dataset to push transcripts into Notion, Google Docs or your own database, or let an agent call it through the Apify MCP server.

❓ FAQ

Do I need an API key or an account anywhere?

No. Recognition runs with a built-in key. Supply your own Groq key only if you want the cheaper per-minute rate.

Which languages are supported?

Around 90, including Russian, Indonesian, Spanish, German, French, Japanese and Chinese. Use accurate for non-English audio.

Can it handle a three-hour file?

Yes. Long files are processed in parts and the timings stay continuous across them.

Does it work with video?

Yes. Give it an MP4, MOV or WEBM link and the audio track is pulled out for you.

What happens if a file is unreachable?

You get an error row with the reason and no charge for that file. The other files in the run are still transcribed.

How accurate is it?

It runs Whisper large v3. On clean speech it is close to a careful human first pass; on overlapping or noisy audio it is not.

Can I get speaker names?

No — you get "Speaker 1", "Speaker 2" and so on. Naming them is your step.

How do I make it spell product names correctly?

Put them in vocabularyHint. The hint is given to the model before it starts.

You might also like

ActorWhat it does
Speech to TextThe main Actor: the same engine, framed as a speech-to-text API
Audio TranscriberThe same engine for podcasts, calls and meetings
SRT Subtitle GeneratorReady subtitle files from audio or video
YouTube Transcript ScraperCaptions straight from YouTube, no transcription needed
Document Text ExtractorThe same idea for PDFs and Word files

Also known as

People look for this Actor as video to text, video transcription, transcribe video to text, MP4 to text, YouTube video to text, TikTok video to text and a video transcription API.

Notes

Recognition runs on Whisper large v3 with a built-in key, so there is nothing to sign up for. Choose fast (Whisper large v3 turbo, several times quicker) for everyday work, or accurate for accents, noise and translation; both cost the same per minute. A vocabulary hint helps with names and jargon.