Fetch YouTube transcripts. No API key needed.
go install github.com/shanehull/yt-transcript/cmd/yt-transcript@latestyt-transcript dQw4w9WgXcQ # plain text
yt-transcript -fmt json dQw4w9WgXcQ # JSON with timestamps
yt-transcript -fmt srt dQw4w9WgXcQ # SRT subtitles
yt-transcript -lang fr dQw4w9WgXcQ # French transcript
yt-transcript -list dQw4w9WgXcQ # list available languagesimport (
"context"
yt "github.com/shanehull/yt-transcript"
)
client := yt.NewClient()
segments, _ := client.FetchTranscript(context.Background(), "dQw4w9WgXcQ", "en")
for _, s := range segments {
fmt.Println(s.Text)
}
// Discover what languages a video offers before fetching.
langs, _ := client.ListLanguages(context.Background(), "dQw4w9WgXcQ")
for _, l := range langs {
fmt.Println(l.Code, l.Name) // e.g. "en English"
}go run github.com/shanehull/yt-transcript/cmd/server@latest
docker run -p 8080:8080 ghcr.io/shanehull/yt-transcriptGET /{video_id}[?lang=en][&fmt=text|srt] → transcript
GET /{video_id}/languages → available languages
curl https://yt-transcript.net/dQw4w9WgXcQ
curl https://yt-transcript.net/dQw4w9WgXcQ?fmt=text
curl https://yt-transcript.net/dQw4w9WgXcQ?fmt=srt
curl https://yt-transcript.net/dQw4w9WgXcQ?lang=fr
curl https://yt-transcript.net/dQw4w9WgXcQ/languages