YouTube Caption & Whisper AI Transcript Extractor
Pricing
from $0.49 / 1,000 results
YouTube Caption & Whisper AI Transcript Extractor
Get timestamped transcripts from YouTube videos in your preferred language, with optional AI transcription for videos that have no captions at all. Returns full text, timed segments, and core video metadata.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
Nimbryxo-studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Get the transcript of any public YouTube video — timestamped segments, a full plain-text version, language info, and core video details — ready for AI pipelines, content repurposing, translation, and research.
When a video has no captions at all (the uploader disabled them, or it's music-only with no on-screen text), optional AI transcription can transcribe the audio directly so you still get a usable transcript.
What this actor does
- Returns every transcript segment with its start time, duration, and text, plus the full transcript as one string
- Lets you request a specific caption language; YouTube's own translation is used when your language isn't natively available
- With
useWhisperon (the default), falls through to AI-generated transcription when YouTube has no captions at all, so you still get usable text - Processes multiple videos in one run, each pushed as its own record
- Fields that don't apply to a given video (e.g. no
like_countwhen YouTube didn't expose one) are left out of that record
Output per video
video_id,title,channel_name,channel_idduration_seconds,views,like_count,published_date,thumbnailcategory,keywords,descriptionis_live_content,is_upcoming,is_family_safetranscript_language,transcript_language_name,requested_language,language_matchedis_auto_generated—truefor YouTube's auto-caption,falsefor manually uploaded captions, translated captions, or AI-generated outputwas_translated—trueonly when YouTube translated an available caption track to your requested languagetranscript_source— which path produced the transcript:library,caption_url,android_player,innertube,playwright_dom, orwhisperlanguage_probability— language-detection confidence, only set whentranscript_sourceiswhisperavailable_languages— every transcript language YouTube offers for the videosegments— timestamped entries, each withstart,dur(seconds, as strings with three decimals) andtext; left out whenoutputFormatistext_onlyfull_text— the whole transcript as one string; left out whenoutputFormatissegments_onlysegment_count,transcript_availablesuccess—truewhen a transcript was extractederror— reason text whensuccessisfalseinputUrl,scrapedAt
A video that fails gets a row with success: false, an error message, inputUrl, scrapedAt and whatever video details were found (an unrecognisable URL gets only the first four). If the run gets close to its timeout, videos not yet started are written as success: false rows with the error "Run time budget reached before processing", so every input still has a row. An input that fails validation (for example an empty videoUrls list) produces a single success: false row explaining why.
Input
| Field | Type | Default | Description |
|---|---|---|---|
videoUrls | Array | – | YouTube watch URLs, youtu.be short links, Shorts URLs, embed URLs, or plain 11-char video IDs. Required. |
language | String | "" | Preferred language code (en, es, fr, de, ja, ko, …). Empty = best available. |
includeAutoGenerated | Boolean | true | Include YouTube auto-captions when manual ones aren't available. |
useWhisper | Boolean | true | Transcribe the video's audio with AI when YouTube has no transcript at all. Adds ~30-180 s per video. This output is derived speech-to-text, not a YouTube caption. |
whisperModel | Enum | base | tiny, base, small, medium, or large-v3-turbo |
proxyCountry | Enum | US | One of the 31 schema-supported country/region codes |
outputFormat | Enum | full | full, text_only, or segments_only |
Supported URL formats
https://www.youtube.com/watch?v=dQw4w9WgXcQhttps://youtu.be/dQw4w9WgXcQhttps://www.youtube.com/shorts/VIDEO_IDhttps://www.youtube.com/embed/VIDEO_ID- Plain 11-char ID:
dQw4w9WgXcQ
Example input — multiple videos, English preferred
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://youtu.be/9bZkp7q19f0","https://www.youtube.com/shorts/abc123XYZ45"],"language": "en","includeAutoGenerated": true}
Example input — AI transcription for videos with no captions
{"videoUrls": ["https://www.youtube.com/watch?v=XqZsoesa55w"],"useWhisper": true,"whisperModel": "small"}
Examples
{"video_id": "dQw4w9WgXcQ","title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)","channel_name": "Rick Astley","channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw","duration_seconds": 213,"views": 1769190465,"published_date": "2009-10-24","thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg","transcript_language": "en","transcript_language_name": "English","is_auto_generated": false,"transcript_source": "caption_url","available_languages": [{ "code": "en", "name": "English", "is_auto_generated": false },{ "code": "es-419", "name": "Spanish (Latin America)", "is_auto_generated": false }],"segments": [{ "start": "1.360", "dur": "1.680", "text": "[♪♪♪]" },{ "start": "18.640", "dur": "3.240", "text": "We're no strangers to love" }],"segment_count": 61,"full_text": "[♪♪♪] We're no strangers to love You know the rules and so do I ...","success": true,"inputUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","scrapedAt": "2026-05-05T13:42:18Z"}
Example: English transcript
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"language": "en","outputFormat": "full"}
Example: translated transcript
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"language": "es"}
Example: AI transcription for videos without captions
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"useWhisper": true,"whisperModel": "base"}
Use cases
- AI training data — Build text corpora from YouTube content for LLM fine-tuning or RAG pipelines.
- Content repurposing — Turn long videos into blog posts, summaries, or social copy.
- Research and analysis — Pull spoken content from lectures, interviews, podcasts, and documentaries.
- Subtitles and accessibility — Retrieve captions for translation or accessibility workflows.
- SEO and keyword research — Analyse spoken keywords and topics across YouTube content.
- Competitive intelligence — Monitor what competitors say in their videos.
- Education — Extract transcripts from online courses for indexing or study notes.
- Sentiment analysis — Run sentiment or topic models against transcripts at scale.
FAQ
Which videos can I scrape?
Any public YouTube video that has manually created or auto-generated captions, plus — with useWhisper on — public videos without captions whose audio can be downloaded. Private videos, deleted videos, and members-only videos cannot be scraped — those return success=false with an error message.
What if a video has no captions at all?
Set useWhisper: true to transcribe the audio with AI. For clear speech, whisperModel=base is the sweet spot. For music, noisy audio, or short clips, use whisperModel=small for noticeably better accuracy.
What if my requested language isn't available?
An exact match (en) is tried first, then regional variants (en matches en-GB, en-US), then the best available transcript. The available_languages field always lists everything on offer for that video.
What's the difference between transcript_source values?
caption_url/android_player— pulled directly from YouTube's own published caption tracks (fastest, most reliable, real human or YouTube auto-captions).innertube— pulled from an alternate YouTube data endpoint when the primary path didn't return captions.playwright_dom— extracted straight from the video page's own transcript panel as a last resort.whisper— generated with AI from the video's audio when YouTube has no captions at all.
How accurate are auto-generated captions vs Whisper?
YouTube auto-captions are generally accurate for clear English speech. Whisper base is comparable for clean audio, and Whisper small typically beats YouTube on accents, multiple speakers, and noisy audio. Both struggle on music with non-vocal singing.
The Whisper output looks like garbage / repetitive text.
Whisper-tiny on music or near-silent clips can hallucinate repetitive phrases. The actor automatically detects this (low language-detection confidence + identical segment text) and returns success=false with an actionable error pointing you at a larger model. Re-run with whisperModel=small for music videos.
Can I scrape multiple videos in one run?
Yes — pass an array of URLs. Videos are processed a couple at a time and each is pushed as its own dataset row, so rows may not appear in the same order as your input; use inputUrl or video_id to match them up.
How current is the data? Live — every run hits YouTube at request time. Schedule the actor for daily / hourly refreshes.
Is this affiliated with YouTube? No. This is an independent, third-party actor that reads YouTube's publicly available caption data; it is not affiliated with, endorsed by, or operated by YouTube or Google.
Limitations
- Private, members-only, age-restricted, and deleted videos cannot be scraped.
- AI transcription adds roughly 30-180 s per video depending on length and model size.
- AI transcription accuracy on heavy music or pure-instrumental audio is fundamentally limited regardless of model size.
- YouTube can change how it serves captions at any time; a transient issue on YouTube's side may still cause
success=falsefor individual videos.