Bulk YouTube & Video Transcriber with SRT Subtitles avatar

Bulk YouTube & Video Transcriber with SRT Subtitles

Pricing

$2.50 / 1,000 media transcribeds

Go to Apify Store
Bulk YouTube & Video Transcriber with SRT Subtitles

Bulk YouTube & Video Transcriber with SRT Subtitles

Search YouTube by topic, add a whole channel, or paste links. Get a timestamped transcript plus SRT and VTT subtitles for every video. Also works with TikTok, Instagram, MP3 and MP4 files.

Pricing

$2.50 / 1,000 media transcribeds

Rating

0.0

(0)

Developer

jay casey

jay casey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

4 days ago

Last modified

Share

Transcribe a pile of videos without collecting links. Search YouTube by topic, point it at a whole channel or playlist, or paste links from YouTube, TikTok and Instagram. MP3, WAV and MP4 files work too. Every item comes back as timestamped text plus SRT and VTT subtitle files.

Quick start

Press Start and the sample transcribes a short public audio clip so you can see the output. Then type a topic into Search YouTube (say, cold email tips), set Videos per search to 25, and run again.

What you get

  • Full transcript text, detected language, duration and word count per item
  • Timed segments, plus SRT and VTT subtitle files saved for each item
  • Source type and URL, and a clear status and error per item, so failures are easy to rerun
  • PDF and image links turned into text, page by page, with OCR for scans (beta)
  • A run summary with totals, successes and failures

Good for

  • Transcribing a creator's back catalogue to search or quote it
  • Subtitles for a batch of clips
  • Research on what people say about a topic across dozens of videos
  • Turning podcast episodes into text for show notes

Pricing

  • $0.0025 per file transcribed, any length, until 29 October 2026
  • From 29 October 2026: $0.005 per file plus $0.003 per started audio minute
  • Failed downloads and skipped files are not billed

You pay only for results that come back. Set a max cost per run in the run options and the run stops cleanly when it hits it. Normal Apify platform usage applies.

Input

FieldWhat it does
youtubeSearchType a topic, like podcast marketing tips or Lex Fridman. We find the top videos and transcribe them all. No links to copy.
videosPerSearchHow many results to take for each search term or channel.
channelUrlsPaste one channel or playlist link (youtube.com/@mkbhd, a TikTok profile) and we transcribe its latest videos, up to the number above.
urlsYouTube, TikTok, Instagram or any page with a video. Each file costs $0.005 plus $0.003 per started audio minute.
mediaUrlsDirect links to .mp3, .wav, .mp4 and similar files. The sample is a 11-second clip so you can see the output.
uploadedFilesLinks to files you uploaded to Apify storage or any file host.
documentUrlsPublic PDF or image links to turn into text, page by page, with Markdown. Pages without a text layer get OCR. Links ending in .pdf, .png or .jpg in other fields are sent here automatically.
languageTwo-letter code such as en, es or hi. Leave blank and we detect it.
promptSpellings the transcript should get right: product names, people, acronyms.
includeSubtitlesSaves timed subtitle files for every finished item.
concurrencyHow many items run in parallel. Lower it if a site starts blocking downloads.
maxItemsUpper limit on links accepted in one run, including search results.
maxFileSizeMbLarger direct files are skipped before transcription and not billed.
ocrOCR reads text from scanned pages.
ocrLanguageTesseract language code. eng is installed.
maxPagesLonger files are skipped with an error row and not billed.
transcriptionLeave as is. Only for teams who want to bill a Whisper-compatible endpoint of their own: model, baseUrl, apiKey.

Limits

  • Public media only. Private, members-only and login-gated videos fail with an error row.
  • Instagram serves some videos inconsistently to logged-out visitors.
  • Direct files over 24 MB are skipped by default; raise Max file size if you need to.

Run it from code

Same input as the Console sample:

{
"urls": [],
"mediaUrls": [
"https://raw.githubusercontent.com/ggerganov/whisper.cpp/927cfce34f31707e17f2bff35c349632fb9e2c3a/samples/jfk.wav"
],
"transcription": {
"model": "whisper-1"
}
}
curl -X POST "https://api.apify.com/v2/acts/physealabs~bulk-media-transcriber/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" -d @input.json
from apify_client import ApifyClient
items = ApifyClient("YOUR_APIFY_TOKEN").actor("physealabs/bulk-media-transcriber").call(run_input={"urls": [], "mediaUrls": ["https://raw.githubusercontent.com/ggerganov/whisper.cpp/927cfce34f31707e17f2bff35c349632fb9e2c3a/samples/jfk.wav"], "transcription": {"model": "whisper-1"}})

It also works from Zapier, Make, n8n and Apify schedules.