TranscriptAPI — YouTube transcripts (transcriptapi.io)
YouTube transcripts, search, channels and playlists for AI agents, by transcriptapi.io.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"youtube-transcript": {
"command": "npx",
"args": [
"transcriptapi-mcp"
]
}
}
}Runnable packages
0.1.1stdioRemote endpoints
https://api.transcriptapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢get_youtube_transcript(video, language, translate_to, format)
Fetch the transcript (captions/subtitles) of a YouTube video as text. Accepts a watch URL, youtu.be link, Shorts link or bare 11-character video id. Returns the spoken text with timestamps grouped in ~30 s blocks by default; format 'text' is prose without timestamps, 'srt'/'vtt' are subtitle files, 'json' is raw segments with start/duration. Works with creator-uploaded and auto-generated captions. translate_to translates the transcript with AI (extra credits, scales with length) — omit unless asked.
Input Schema
{
"type": "object",
"properties": {
"video": {
"title": "Video",
"type": "string"
},
"language": {
"default": "en",
"title": "Language",
"type": "string"
},
"translate_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Translate To"
},
"format": {
"default": "timestamped",
"title": "Format",
"type": "string"
}
},
"required": [
"video"
],
"title": "get_youtube_transcriptArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_youtube_transcriptOutput"
}🟢search_youtube(query, limit)
Search YouTube for videos by keyword. Returns video ids, titles, channel names, durations and view counts. Use a returned id with get_youtube_transcript to read it.
Input Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_youtubeArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_youtubeOutput"
}🟢get_channel_videos(channel, limit)
List the most recent uploads of a YouTube channel, newest first. Accepts a channel id (UC…), a handle (@name) or a channel URL. Returns ids, titles, durations, view counts and publish dates.
Input Schema
{
"type": "object",
"properties": {
"channel": {
"title": "Channel",
"type": "string"
},
"limit": {
"default": 20,
"title": "Limit",
"type": "integer"
}
},
"required": [
"channel"
],
"title": "get_channel_videosArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_channel_videosOutput"
}🟢search_channel_videos(channel, query, limit)
Search for videos inside one YouTube channel by keyword — 'find the video where <channel> talks about <topic>'. Accepts a channel id, @handle or channel URL.
Input Schema
{
"type": "object",
"properties": {
"channel": {
"title": "Channel",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
}
},
"required": [
"channel",
"query"
],
"title": "search_channel_videosArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_channel_videosOutput"
}🟢get_playlist_videos(playlist, limit)
List the videos in a YouTube playlist, in playlist order. Accepts a playlist URL (anything with list=…) or the playlist id. Returns ids and titles for get_youtube_transcript.
Input Schema
{
"type": "object",
"properties": {
"playlist": {
"title": "Playlist",
"type": "string"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"required": [
"playlist"
],
"title": "get_playlist_videosArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_playlist_videosOutput"
}Community
Evidence