YouTube transcripts
Transcripts and subtitles for any YouTube video with captions, from YTAPI.
Setup
If YTAPI_API_KEY is not set, read references/auth-setup.md
and follow it: the user either pastes a key or you create a free account
with their email (200 credits, no card). Send the key as
Authorization: Bearer $YTAPI_API_KEY and never print it.
Get a transcript (1 credit)
curl -s "https://api.ytapi.dev/v1/transcripts?video_id=VIDEO_ID_OR_URL&format=text" \
-H "Authorization: Bearer $YTAPI_API_KEY"
| Param | Default | Values |
|---|---|---|
video_id |
required | 11-character ID or a YouTube URL |
format |
segments |
text, markdown, segments (JSON with start/end seconds), sentences, srt, vtt, word_timestamps |
languages |
* |
Comma-separated codes in order of preference; * is the video's own language. en,* = English if available, else the original |
word_level |
false |
Word timings on auto-generated tracks (with format=word_timestamps) |
- Use
format=textormarkdownto read, summarize or quote;segmentswhen you need timestamps (link a moment ashttps://youtu.be/VIDEO_ID?t=SECONDS);srtorvttfor subtitle files. - Which languages exist, for free:
GET /v1/videos/VIDEO_ID/basic-info(available_languages, eachmanualorasr). - Long videos give long transcripts: save to a file and read it in parts.
404 language_not_found/captions_disabled: no captions in those languages, or none at all. Trylanguages=*.
Credits and errors
Only successful responses use credits; errors are free. New accounts get 200
free credits. Until a credit pack is bought, a key can make 1 request per
second and 100 per day (UTC); 429 daily_limit_exceeded means that day's
limit is used up (it resets at 00:00 UTC; any pack removes it).
402 insufficient_credits means the balance is empty: packs from $9 at
https://ytapi.dev/?utm_source=skill#pricing. 401 means the key is missing or wrong.
For video details, search, channels, playlists and batches in one skill,
install ytapi. Full reference: https://docs.ytapi.dev
