Fetch YouTube captions — plain or timestamped. Search for keywords, slice by time range, or paginate through long videos. Does not consume YouTube Data API quota.
get_transcript(video_ref="https://youtube.com/watch?v=...", search_in_transcript="latency", format="timestamped")
get_transcript(video_ref="VIDEO_ID", start_seconds=720, end_seconds=1080, format="timestamped")
get_transcript(video_ref="VIDEO_ID", offset=200, limit=200, format="plain")
get_transcript(video_ref="VIDEO_ID", languages=["en", "en-US"], format="timestamped")
| Parameter | Type | Default | Description |
|---|---|---|---|
| video_ref* | string | — | Video URL or ID. |
| languages | string[] | null | null | Preferred caption track languages in order. |
| format | plain | timestamped | plain | timestamped includes [MM:SS] or ISO offsets per segment. |
| offset | integer | 0 | Skip first N caption segments (pagination). |
| limit | integer | 200 | Max segments per response. |
| start_seconds | number | null | null | Only return captions at or after this time. |
| end_seconds | number | null | null | Only return captions before this time. |
| search_in_transcript | string | null | null | Filter segments containing this keyword (case-insensitive). |
offset=0, limit=200offset=200, then 400, etc.search_in_transcript to narrow before paginatingSome videos disable captions or have none in your requested language. The tool returns a clear error with next_steps — often suggesting another language or summarize_video from description only.
Free transcript fetches