YouTube API: Get video
Gets public details and statistics for one YouTube video by link, ID or title. A title selects the top search match.
Unofficial. Not affiliated with or endorsed by YouTube.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Video, required
video YouTube video link, ID, or title, for example https://www.youtube.com/watch?v=dQw4w9WgXcQ.
Python for Beginners – Full Course [Programming Tutorial]
Input as JSON
{ "video": "Python for Beginners – Full Course [Programming Tutorial]"}Output
{ "tags": [], "likes": 87335, "title": "Python for Beginners – Full Course [Programming Tutorial]", "views": 4963507, "length": "4:39:59", "is_live": false, "category": "Education", "chapters": [ { "title": "Introduction", "start_time": "0:00" }, { "title": "RPS - Variables and Functions", "start_time": "3:11" }, { "title": "RPS - Calling Functions", "start_time": "9:07" } ], "is_short": false, "video_id": "eWRfhZUzrAc", "channel_id": "UC8butISFwT-Wl7EV0hUK0BQ", "video_link": "https://www.youtube.com/watch?v=eWRfhZUzrAc" , "description": "Learn the Python programming language in this full course for beginners! You will learn the fundamentals of Python and code two Python programs line-by-line. No previous programming experience is necessary before watching this course.\n\n🔗 Start using Replit: https://join.replit.com/python-students\n\n…" , "channel_link": "https://www.youtube.com/@freecodecamp" , "channel_name": "freeCodeCamp.org", "publish_date": "2022-08-09", "matched_video": "Python for Beginners – Full Course [Programming Tutorial]", "length_seconds": 16799, "thumbnail_link": "https://i.ytimg.com/vi/eWRfhZUzrAc/maxresdefault.jpg" , "caption_languages": [ "English" ], "number_of_comments": 2014, "channel_subscribers": "12M subscribers"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"youtube.com/get_video","input":{"video":"Python for Beginners – Full Course [Programming Tutorial]"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "youtube.com/get_video" , "input": { "video": "Python for Beginners – Full Course [Programming Tutorial]" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "youtube.com/get_video" , "input": { "video": "Python for Beginners – Full Course [Programming Tutorial]" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run youtube.com/get_video# with {"video":"Python for Beginners – Full Course [Programming Tutorial]"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "video" ], "properties": { "video": { "type": "string", "minLength": 1, "description": "YouTube video link, ID, or title, for example https://www.youtube.com/watch?v=dQw4w9WgXcQ." } }}Output schema
{ "type": "object", "required": [ "title", "video_link", "video_id", "chapters", "tags", "caption_languages", "is_live", "is_short" ], "properties": { "tags": { "type": "array", "items": { "type": "string" } }, "likes": { "type": [ "integer", "null" ] }, "title": { "type": [ "string", "null" ] }, "views": { "type": [ "integer", "null" ] }, "length": { "type": [ "string", "null" ] }, "is_live": { "type": "boolean" }, "category": { "type": [ "string", "null" ] }, "chapters": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string" }, "start_time": { "type": "string" } } } }, "is_short": { "type": "boolean" }, "video_id": { "type": "string" }, "channel_id": { "type": [ "string", "null" ] }, "video_link": { "type": "string" }, "description": { "type": [ "string", "null" ] }, "channel_link": { "type": [ "string", "null" ] }, "channel_name": { "type": [ "string", "null" ] }, "publish_date": { "type": [ "string", "null" ] }, "matched_video": { "type": [ "string", "null" ] }, "length_seconds": { "type": [ "integer", "null" ] }, "thumbnail_link": { "type": [ "string", "null" ] }, "caption_languages": { "type": "array", "items": { "type": "string" } }, "number_of_comments": { "type": [ "integer", "null" ] }, "channel_subscribers": { "type": [ "string", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
youtube.com/get_video- Returns
- title, channel, views, likes, comments, publish date, length, description, chapters, tags, captions
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method youtube.com/get_video with the inputs above.
Ask your agent
- Can you pull up the views, likes, and comment count for https://www.youtube.com/watch?v=jNQXAC9IVRw?
- What's the channel name and publish date for the video with ID 9bZkp7q19f0?
- Get the chapters and description for the YouTube video titled 'How to Bake Sourdough at Home'.
- I need the length and tags of this video: https://youtu.be/kJQP7kiw5Fk
- Does the video 'Lo-fi Study Beats Mix 2023' have captions, and how many views does it have?
See more
All YouTube methodsGets public top-level comments on a YouTube video, found by link, video ID or title. Reply text is not included.
youtube.com/get_video_commentsReturns the spoken captions and timed segments of a YouTube video, given a video link or a title (top search match). Only captions the video has are returned.
youtube.com/get_video_transcriptGets a public YouTube channel's profile, links and statistics from its name, @handle or link. Subscriber totals may be rounded as YouTube displays them.
youtube.com/get_channelLists a YouTube channel's public videos, Shorts, or live uploads, newest first or most popular first, along with channel details. Counts and dates taken from displayed text may be approximate.
youtube.com/list_channel_videosFinds a company's verified YouTube channel by name and returns its name, link, subscriber count, description, country and official website when identifiable.
youtube.com/find_company_channelLists the latest weekly YouTube Music Top Songs chart for a country or globally, with ranks, weekly views and video links.
youtube.com/list_top_songsGets a public Vimeo video's title, creator, play, like and comment counts, length, upload date, description, tags, thumbnail and link from its video link.
vimeo.com/get_videoGets public statistics and details for a Bilibili video from its link, BV number or title. A title selects the top video search match. Category may be missing when Bilibili does not show a label.
bilibili.com/get_video