# YouTube API

> YouTube returns video, channel, comment, transcript, and chart data as a workflow and API.

YouTube searches public videos by keywords and filters, or gets one video's details using a link, ID, or title. Get video transcript and Get video comments use a video link or title to return available captions or public top-level comments. Get channel and List channel videos use a channel name, handle, or link; List top songs uses a country or Global.

- Page: https://fous.com/workflows/youtube
- Handle: `@youtube`
- Category: [Entertainment](https://fous.com/workflows/category/entertainment)
- Source website: https://youtube.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with YouTube.

## Methods

### Get channel

Operation `get_channel`, version 1. 1 credit per call.

Get a public YouTube channel’s profile, links, and statistics from its name, handle, or link. Subscriber totals may be rounded as displayed.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `channel` | string | yes | `"MrBeast"` | Channel name, @handle, or YouTube channel link, such as MrBeast, @MrBeast, or https://www.youtube.com/@MrBeast. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "channel"
  ],
  "properties": {
    "channel": {
      "type": "string",
      "description": "Channel name, @handle, or YouTube channel link, such as MrBeast, @MrBeast, or https://www.youtube.com/@MrBeast.",
      "examples": [
        "MrBeast",
        "Google for Developers",
        "https://www.youtube.com/@MrBeast"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "channel": "MrBeast"
    },
    {
      "channel": "Google for Developers"
    },
    {
      "channel": "https://www.youtube.com/@MrBeast"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `links` | array |  |  |
| `links[].link` | string | `"https://www.themostdangerousgames.com/"` |  |
| `links[].label` | string | `"$1,000,000 Contest"` |  |
| `handle` | string or null | `"@MrBeast"` |  |
| `country` | string or null | `"United States"` |  |
| `verified` | string | `"yes"` |  |
| `join_date` | string or null | `"2012-02-19"` |  |
| `channel_id` | string | `"UCX6OQ3DkcsbYNE6H8uQQuVA"` |  |
| `description` | string or null | `"Subscribe to join a community of creative developers and learn the latest in Google technology — from AI and cloud, to ` |  |
| `subscribers` | integer or null | `518000000` | Subscriber count as shown, expanded from a rounded abbreviation when needed. |
| `total_views` | integer or null | `141012089272` |  |
| `channel_link` | string | `"https://www.youtube.com/@MrBeast"` |  |
| `channel_name` | string | `"MrBeast"` |  |
| `number_of_videos` | integer or null | `1004` |  |
| `avatar_image_link` | string or null | `"https://yt3.googleusercontent.com/nxYrc_1_2f77DoBadyxMTmv7ZpRZapHR5jbuYe7PlPd5cIRJxtNNEYyOC0ZsxaDyJJzXrnJiuDE=s900-c-k-` |  |
| `banner_image_link` | string or null | `"https://yt3.googleusercontent.com/mHMO_eEMp0dPvh0ADwXhPXNYb_GnjSVsLI8biqF1CpxT8OPl7izhNQsDPD3JHhd5y5Mg9GrP=w2560-fcrop6` |  |

**Example input**

```json
{
  "channel": "MrBeast"
}
```

**Example output**

```json
{
  "links": [
    {
      "link": "https://www.themostdangerousgames.com/",
      "label": "$1,000,000 Contest"
    },
    {
      "link": "https://www.instagram.com/mrbeast/",
      "label": "Follow"
    },
    {
      "link": "https://twitter.com/MrBeast",
      "label": "Twitter"
    }
  ],
  "handle": "@MrBeast",
  "country": "United States",
  "verified": "yes",
  "join_date": "2012-02-19",
  "channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "description": "SUBSCRIBE FOR A COOKIE!\nNew MrBeast or MrBeast Gaming video every single Saturday at noon eastern time!\nAccomplishments:\n- Raised $20,000,000 To Plant 20,000,000 Trees\n- Removed 30,000,000 pounds of t…",
  "subscribers": 518000000,
  "total_views": 141012089272,
  "channel_link": "https://www.youtube.com/@MrBeast",
  "channel_name": "MrBeast",
  "number_of_videos": 1004,
  "avatar_image_link": "https://yt3.googleusercontent.com/nxYrc_1_2f77DoBadyxMTmv7ZpRZapHR5jbuYe7PlPd5cIRJxtNNEYyOC0ZsxaDyJJzXrnJiuDE=s900-c-k-c0x00ffffff-no-rj",
  "banner_image_link": "https://yt3.googleusercontent.com/mHMO_eEMp0dPvh0ADwXhPXNYb_GnjSVsLI8biqF1CpxT8OPl7izhNQsDPD3JHhd5y5Mg9GrP=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj"
}
```

### Get video

Operation `get_video`, version 1. 1 credit per call.

Get public details and statistics for one YouTube video by link or title. A title selects the top video search match; unavailable or private videos are not returned.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `video` | string | yes | `"https://www.youtube.com/watch?v=dQw4w9WgXcQ"` | YouTube video link, ID, or title, for example https://www.youtube.com/watch?v=dQw4w9WgXcQ. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "video"
  ],
  "properties": {
    "video": {
      "type": "string",
      "description": "YouTube video link, ID, or title, for example https://www.youtube.com/watch?v=dQw4w9WgXcQ.",
      "examples": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
        "Python for Beginners – Full Course [Programming Tutorial]",
        "https://www.youtube.com/shorts/-w3Sza1ZyFg"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    },
    {
      "video": "Python for Beginners – Full Course [Programming Tutorial]"
    },
    {
      "video": "https://www.youtube.com/shorts/-w3Sza1ZyFg"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `tags` | array |  | Video tags. |
| `likes` | integer or null | `19427218` | Public like count; null when unavailable. |
| `title` | string or null | `"Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)"` | Video title. |
| `views` | integer or null | `1821108656` | Video views. |
| `length` | string or null | `"3:33"` | Length as a clock time, such as 3:33. |
| `is_live` | boolean | `false` | Whether this is live video content. |
| `category` | string or null | `"Music"` | Video category. |
| `chapters` | array |  | Chapter start times and titles. |
| `chapters[].title` | string | `"Introduction"` |  |
| `chapters[].start_time` | string | `"0:00"` |  |
| `is_short` | boolean | `false` | Whether this video is a Short. |
| `video_id` | string | `"dQw4w9WgXcQ"` | YouTube video ID. |
| `channel_id` | string or null | `"UCuAXFkgsw1L7xaCfnd5JJOw"` | YouTube channel ID. |
| `video_link` | string | `"https://www.youtube.com/watch?v=dQw4w9WgXcQ"` | Video page link. |
| `description` | string or null | `"This video is made for entertainment purposes. It features a collection of funny cat moments from various sources that ` | Video description. |
| `channel_link` | string or null | `"https://www.youtube.com/@RickAstleyYT"` | Channel page link. |
| `channel_name` | string or null | `"Rick Astley"` | Channel name. |
| `publish_date` | string or null | `"2009-10-24"` | Publication date. |
| `matched_video` | string or null | `"Python for Beginners – Full Course [Programming Tutorial]"` | Video selected as the top title search match; null for a link. |
| `length_seconds` | integer or null | `213` | Video length in seconds. |
| `thumbnail_link` | string or null | `"https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"` | Video thumbnail link. |
| `caption_languages` | array |  | Available caption languages. |
| `number_of_comments` | integer or null | `2457832` | Comment total; null when unavailable. |
| `channel_subscribers` | string or null | `"4.55M subscribers"` | Public subscriber count as displayed, such as 4.55M subscribers. |

**Example input**

```json
{
  "video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
```

**Example output**

```json
{
  "tags": [
    "rick astley",
    "Never Gonna Give You Up",
    "nggyu"
  ],
  "likes": 19427218,
  "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
  "views": 1821108656,
  "length": "3:33",
  "is_live": false,
  "category": "Music",
  "chapters": [],
  "is_short": false,
  "video_id": "dQw4w9WgXcQ",
  "channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
  "video_link": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "description": "The official video for “Never Gonna Give You Up” by Rick Astley. \n\nNever: The Autobiography 📚 OUT NOW! \nFollow this link to get your copy and listen to Rick’s ‘Never’ playlist ❤️ #RickAstleyNever\nhtt…",
  "channel_link": "https://www.youtube.com/@RickAstleyYT",
  "channel_name": "Rick Astley",
  "publish_date": "2009-10-24",
  "matched_video": null,
  "length_seconds": 213,
  "thumbnail_link": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
  "caption_languages": [
    "English",
    "German (Germany)",
    "Japanese"
  ],
  "number_of_comments": 2457832,
  "channel_subscribers": "4.55M subscribers"
}
```

### Get video comments

Operation `get_video_comments`, version 1. 1 credit per call.

Get public top-level comments on a YouTube video by link or title. Reply text is not included; counts and posted dates may be approximate.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"newest"` | Comment order, for example newest. |
| `video` | string | yes | `"https://www.youtube.com/watch?v=jNQXAC9IVRw"` | Video link or title, for example https://www.youtube.com/watch?v=jNQXAC9IVRw. |
| `max_results` | integer | no | `50` | Maximum number of top-level comments, for example 50. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "video"
  ],
  "properties": {
    "sort": {
      "enum": [
        "top",
        "newest"
      ],
      "type": "string",
      "default": "top",
      "description": "Comment order, for example newest.",
      "examples": [
        "newest"
      ]
    },
    "video": {
      "type": "string",
      "description": "Video link or title, for example https://www.youtube.com/watch?v=jNQXAC9IVRw.",
      "examples": [
        "https://www.youtube.com/watch?v=jNQXAC9IVRw",
        "Me at the zoo",
        "https://www.youtube.com/watch?v=LrAtBtQnvCE"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 50,
      "maximum": 500,
      "minimum": 1,
      "description": "Maximum number of top-level comments, for example 50.",
      "x-fous-developer": true,
      "examples": [
        50,
        24
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "video": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
      "max_results": 50
    },
    {
      "sort": "newest",
      "video": "Me at the zoo",
      "max_results": 24
    },
    {
      "video": "https://www.youtube.com/watch?v=LrAtBtQnvCE"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `comments` | array |  |  |
| `comments[].likes` | integer | `4800000` |  |
| `comments[].pinned` | string | `"yes"` |  |
| `comments[].author_name` | string or null | `"@SanDiegoZoo"` |  |
| `comments[].posted_time` | string | `"6 years ago"` |  |
| `comments[].comment_link` | string | `"https://www.youtube.com/watch?v=jNQXAC9IVRw&lc=UgzuC3zzpRZkjc5Qzsd4AaABAg"` |  |
| `comments[].comment_text` | string | `"We're so honored that the first ever YouTube video was filmed here!"` |  |
| `comments[].video_creator` | string | `"no"` |  |
| `comments[].number_of_replies` | integer | `1000` |  |
| `comments[].estimated_posted_date` | string or null | `"2020-09-28"` |  |
| `video_link` | string | `"https://www.youtube.com/watch?v=jNQXAC9IVRw"` |  |
| `video_title` | string | `"Me at the zoo"` |  |
| `comments_turned_off` | string | `"no"` |  |
| `total_comment_count` | integer | `10000000` | Displayed total comment count, approximated if abbreviated. |

**Example input**

```json
{
  "sort": "newest",
  "video": "Me at the zoo",
  "max_results": 24
}
```

**Example output**

```json
{
  "comments": [
    {
      "likes": 4800000,
      "pinned": "yes",
      "author_name": "@SanDiegoZoo",
      "posted_time": "6 years ago",
      "comment_link": "https://www.youtube.com/watch?v=jNQXAC9IVRw&lc=UgzuC3zzpRZkjc5Qzsd4AaABAg",
      "comment_text": "We're so honored that the first ever YouTube video was filmed here!",
      "video_creator": "no",
      "number_of_replies": 1000,
      "estimated_posted_date": "2020-09-28"
    },
    {
      "likes": 0,
      "pinned": "no",
      "author_name": "@Retroompr",
      "posted_time": "6 minutes ago",
      "comment_link": "https://www.youtube.com/watch?v=jNQXAC9IVRw&lc=UgxXyb1FrYDulu6siPd4AaABAg",
      "comment_text": "I was about to say something but 3 videos to the right are frying me💔 \"Growing Up With 3 Balls\" \"to goon or not to goon\" \"POV Your Life As The Child of An OF Mom\" I gotta fix my recommendation bro😭\ud83d…",
      "video_creator": "no",
      "number_of_replies": 0,
      "estimated_posted_date": "2026-09-28"
    },
    {
      "likes": 0,
      "pinned": "no",
      "author_name": "@Multistay0801",
      "posted_time": "7 minutes ago",
      "comment_link": "https://www.youtube.com/watch?v=jNQXAC9IVRw&lc=UgyuK8RFbWBiOq-X7n54AaABAg",
      "comment_text": "This just popped out of nowhere 😂",
      "video_creator": "no",
      "number_of_replies": 0,
      "estimated_posted_date": "2026-09-28"
    }
  ],
  "video_link": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
  "video_title": "Me at the zoo",
  "comments_turned_off": "no",
  "total_comment_count": 10000000
}
```

### Get video transcript

Operation `get_video_transcript`, version 1. 1 credit per call.

Get the full spoken captions and timed segments for a public YouTube video link or the top search match for a title. Only captions available on the video are returned.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `video` | string | yes | `"https://www.youtube.com/watch?v=Ks-_Mh1QhMc"` | A YouTube video link or its title, for example https://www.youtube.com/watch?v=Ks-_Mh1QhMc. |
| `language` | string | no | `"Spanish"` | Caption language name or code, for example Spanish or es; defaults to the original caption language. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "video"
  ],
  "properties": {
    "video": {
      "type": "string",
      "description": "A YouTube video link or its title, for example https://www.youtube.com/watch?v=Ks-_Mh1QhMc.",
      "examples": [
        "https://www.youtube.com/watch?v=Ks-_Mh1QhMc",
        "https://www.youtube.com/watch?v=eIho2S0ZahI",
        "Your Body Language May Shape Who You Are Amy Cuddy TED"
      ]
    },
    "language": {
      "type": "string",
      "default": "",
      "description": "Caption language name or code, for example Spanish or es; defaults to the original caption language.",
      "examples": [
        "Spanish"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "video": "https://www.youtube.com/watch?v=Ks-_Mh1QhMc"
    },
    {
      "video": "https://www.youtube.com/watch?v=eIho2S0ZahI"
    },
    {
      "video": "Your Body Language May Shape Who You Are Amy Cuddy TED",
      "language": "Spanish"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `segments` | array |  |  |
| `segments[].text` | string |  |  |
| `segments[].start_time` | string |  |  |
| `segments[].start_seconds` | number |  |  |
| `segments[].duration_seconds` | number |  |  |
| `transcript` | string |  |  |
| `video_link` | string |  |  |
| `video_title` | string |  |  |
| `auto_generated` | boolean |  |  |
| `caption_language` | string |  |  |
| `available_language_codes` | array |  |  |

### List channel videos

Operation `list_channel_videos`, version 1. 1 credit per call.

List a channel’s public videos, Shorts, or live uploads in latest or popular order, with channel details. Counts and dates derived from displayed text may be approximate.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"latest"` | Order uploads by latest or popular, such as popular. |
| `type` | string | no | `"videos"` | Choose videos, shorts, or live, such as shorts. |
| `channel` | string | yes | `"@MrBeast"` | Channel name, @handle, or YouTube channel link, such as MrBeast or @MrBeast. |
| `max_results` | integer | no | `30` | Maximum videos to return, such as 30. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "channel"
  ],
  "properties": {
    "sort": {
      "enum": [
        "latest",
        "popular"
      ],
      "type": "string",
      "default": "latest",
      "description": "Order uploads by latest or popular, such as popular.",
      "examples": [
        "latest",
        "popular"
      ]
    },
    "type": {
      "enum": [
        "videos",
        "shorts",
        "live"
      ],
      "type": "string",
      "default": "videos",
      "description": "Choose videos, shorts, or live, such as shorts.",
      "examples": [
        "videos",
        "live",
        "shorts"
      ]
    },
    "channel": {
      "type": "string",
      "minLength": 1,
      "description": "Channel name, @handle, or YouTube channel link, such as MrBeast or @MrBeast.",
      "examples": [
        "@MrBeast",
        "https://www.youtube.com/@NASA",
        "MrBeast"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 30,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum videos to return, such as 30.",
      "x-fous-developer": true,
      "examples": [
        30,
        5,
        36
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "sort": "latest",
      "type": "videos",
      "channel": "@MrBeast",
      "max_results": 30
    },
    {
      "sort": "popular",
      "type": "live",
      "channel": "https://www.youtube.com/@NASA",
      "max_results": 5
    },
    {
      "sort": "latest",
      "type": "shorts",
      "channel": "MrBeast",
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `videos` | array |  |  |
| `videos[].title` | string or null | `"NASA’s Artemis II Crew Flies Around the Moon (Official Broadcast)"` |  |
| `videos[].views` | integer or null | `28000000` | Approximate view count when abbreviated by YouTube. |
| `videos[].length` | string or null | `"10:10:01"` | Video duration as displayed, or LIVE for a live stream. |
| `videos[].video_id` | string | `"z-j1uxBmis0"` |  |
| `videos[].video_link` | string | `"https://www.youtube.com/watch?v=z-j1uxBmis0"` |  |
| `videos[].upload_date` | string or null | `"2026-05-01"` | Publish date, estimated when only a relative date is available. |
| `videos[].thumbnail_link` | string or null | `"https://i.ytimg.com/vi/z-j1uxBmis0/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CL` |  |
| `channel_id` | string | `"UCLA_DiR1FfKNvjuUpBHmylQ"` |  |
| `subscribers` | integer or null | `15100000` | Approximate subscriber count when abbreviated by YouTube. |
| `channel_link` | string | `"https://www.youtube.com/@NASA"` |  |
| `channel_name` | string or null | `"NASA"` |  |
| `number_of_videos` | integer or null | `6100` | Approximate total video count when abbreviated by YouTube. |

**Example input**

```json
{
  "sort": "popular",
  "type": "live",
  "channel": "https://www.youtube.com/@NASA",
  "max_results": 5
}
```

**Example output**

```json
{
  "videos": [
    {
      "title": "NASA’s Artemis II Crew Flies Around the Moon (Official Broadcast)",
      "views": 28000000,
      "length": "10:10:01",
      "video_id": "z-j1uxBmis0",
      "video_link": "https://www.youtube.com/watch?v=z-j1uxBmis0",
      "upload_date": "2026-05-01",
      "thumbnail_link": "https://i.ytimg.com/vi/z-j1uxBmis0/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDDUMheL77nOAuqQoHlIytTkMkVpA"
    },
    {
      "title": "NASA’s Artemis II Crew Comes Home (Official Broadcast)",
      "views": 27000000,
      "length": "3:53:41",
      "video_id": "nfhDuOHMp0A",
      "video_link": "https://www.youtube.com/watch?v=nfhDuOHMp0A",
      "upload_date": "2026-05-01",
      "thumbnail_link": "https://i.ytimg.com/vi/nfhDuOHMp0A/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLAzjQLyGeJkGHuMeqUJij9vibj_WQ"
    },
    {
      "title": "Watch NASA’s Perseverance Rover Land on Mars!",
      "views": 26000000,
      "length": "2:11:44",
      "video_id": "gm0b_ijaYMQ",
      "video_link": "https://www.youtube.com/watch?v=gm0b_ijaYMQ",
      "upload_date": "2021-09-29",
      "thumbnail_link": "https://i.ytimg.com/vi/gm0b_ijaYMQ/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLBjaauL8GaIQVF5nNoyrDRmOXGRmQ"
    }
  ],
  "channel_id": "UCLA_DiR1FfKNvjuUpBHmylQ",
  "subscribers": 15100000,
  "channel_link": "https://www.youtube.com/@NASA",
  "channel_name": "NASA",
  "number_of_videos": 6100
}
```

### List top songs

Operation `list_top_songs`, version 1. 1 credit per call.

List the latest weekly Top Songs chart for a country or globally, including ranks, views, and video links. Only countries with a YouTube Music chart are available.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `country` | string | no | `"Global"` | Country name or two-letter code, or Global. For example, United States. |
| `max_results` | integer | no | `5` | Maximum number of ranked songs to return, for example 25. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "default": "global",
      "description": "Country name or two-letter code, or Global. For example, United States.",
      "examples": [
        "Global",
        "United States",
        "France"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 100,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of ranked songs to return, for example 25.",
      "x-fous-developer": true,
      "examples": [
        5,
        3
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "country": "Global"
    },
    {
      "country": "United States",
      "max_results": 5
    },
    {
      "country": "France",
      "max_results": 3
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `songs` | array |  | Top songs in chart rank order. |
| `songs[].rank` | integer | `1` |  |
| `songs[].artists` | array |  |  |
| `songs[].song_title` | string | `"Choosin' Texas"` |  |
| `songs[].video_link` | string | `"https://www.youtube.com/watch?v=nUsrYVxrDwI"` |  |
| `songs[].weekly_views` | integer | `6472638` |  |
| `songs[].previous_rank` | integer or null | `1` |  |
| `songs[].weeks_on_chart` | integer | `47` |  |
| `week_end_date` | string | `"2026-09-24"` | Last day of the chart week. |
| `week_start_date` | string | `"2026-09-18"` | First day of the chart week. |

**Example input**

```json
{
  "country": "United States",
  "max_results": 5
}
```

**Example output**

```json
{
  "songs": [
    {
      "rank": 1,
      "artists": [
        "Ella Langley"
      ],
      "song_title": "Choosin' Texas",
      "video_link": "https://www.youtube.com/watch?v=nUsrYVxrDwI",
      "weekly_views": 6472638,
      "previous_rank": 1,
      "weeks_on_chart": 47
    },
    {
      "rank": 2,
      "artists": [
        "Shakira",
        "Burna Boy"
      ],
      "song_title": "Dai Dai",
      "video_link": "https://www.youtube.com/watch?v=fcnDmrtj6Sk",
      "weekly_views": 4665675,
      "previous_rank": 2,
      "weeks_on_chart": 18
    },
    {
      "rank": 3,
      "artists": [
        "KAROL G",
        "Judeline",
        "rusowsky"
      ],
      "song_title": "BbY WOW",
      "video_link": "https://www.youtube.com/watch?v=fRIhCiUVaKs",
      "weekly_views": 4241029,
      "previous_rank": 3,
      "weeks_on_chart": 6
    }
  ],
  "week_end_date": "2026-09-24",
  "week_start_date": "2026-09-18"
}
```

### Search videos

Operation `search_videos`, version 1. 1 credit per call.

Search public YouTube videos by keywords, upload period, length, and order. Upload dates inferred from relative labels are approximate.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"upload_date"` | Order of results, for example view_count. |
| `query` | string | yes | `"how to make sourdough"` | Words to search for, for example how to make sourdough. |
| `length` | string | no | `"4_to_20_minutes"` | Video duration range, for example 4_to_20_minutes. |
| `max_results` | integer | no | `25` | Maximum videos to return, for example 20. |
| `uploaded_within` | string | no | `"this_month"` | How recently the video was uploaded, for example this_week. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "sort": {
      "enum": [
        "relevance",
        "upload_date",
        "view_count"
      ],
      "type": "string",
      "default": "relevance",
      "description": "Order of results, for example view_count.",
      "examples": [
        "upload_date",
        "view_count"
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Words to search for, for example how to make sourdough.",
      "examples": [
        "how to make sourdough",
        "python",
        "beginner python tutorial"
      ]
    },
    "length": {
      "enum": [
        "any",
        "under_4_minutes",
        "4_to_20_minutes",
        "over_20_minutes"
      ],
      "type": "string",
      "default": "any",
      "description": "Video duration range, for example 4_to_20_minutes.",
      "examples": [
        "4_to_20_minutes",
        "under_4_minutes"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum videos to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        25,
        12
      ]
    },
    "uploaded_within": {
      "enum": [
        "any",
        "last_hour",
        "today",
        "this_week",
        "this_month",
        "this_year"
      ],
      "type": "string",
      "default": "any",
      "description": "How recently the video was uploaded, for example this_week.",
      "examples": [
        "this_month"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "query": "how to make sourdough"
    },
    {
      "sort": "upload_date",
      "query": "python",
      "length": "4_to_20_minutes",
      "max_results": 25,
      "uploaded_within": "this_month"
    },
    {
      "sort": "view_count",
      "query": "beginner python tutorial",
      "length": "under_4_minutes",
      "max_results": 12
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `videos` | array |  |  |
| `videos[].title` | string | `"#0 Python for Beginners \| Programming Tutorial"` |  |
| `videos[].views` | integer or null | `9923256` |  |
| `videos[].length` | string or null | `"1:06"` |  |
| `videos[].is_live` | boolean | `false` |  |
| `videos[].is_short` | boolean | `false` |  |
| `videos[].video_id` | string | `"QXeEoD0pB3E"` |  |
| `videos[].video_link` | string | `"https://www.youtube.com/watch?v=QXeEoD0pB3E"` |  |
| `videos[].upload_date` | string or null | `"2018-09-30"` | Estimated date when YouTube gives only a relative time. |
| `videos[].channel_link` | string or null | `"https://www.youtube.com/@Telusko"` |  |
| `videos[].channel_name` | string or null | `"Telusko"` |  |
| `videos[].length_seconds` | integer or null | `66` |  |
| `videos[].thumbnail_link` | string or null | `"https://i.ytimg.com/vi/QXeEoD0pB3E/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CL` |  |

**Example input**

```json
{
  "sort": "view_count",
  "query": "beginner python tutorial",
  "length": "under_4_minutes",
  "max_results": 12
}
```

**Example output**

```json
{
  "videos": [
    {
      "title": "#0 Python for Beginners | Programming Tutorial",
      "views": 9923256,
      "length": "1:06",
      "is_live": false,
      "is_short": false,
      "video_id": "QXeEoD0pB3E",
      "video_link": "https://www.youtube.com/watch?v=QXeEoD0pB3E",
      "upload_date": "2018-09-30",
      "channel_link": "https://www.youtube.com/@Telusko",
      "channel_name": "Telusko",
      "length_seconds": 66,
      "thumbnail_link": "https://i.ytimg.com/vi/QXeEoD0pB3E/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDUFkFYCPQflRA3mc8XQQ-C2lYj5w"
    },
    {
      "title": "#8 Python Tutorial for Beginners | Python Editor | Sublime Text",
      "views": 1215198,
      "length": "3:11",
      "is_live": false,
      "is_short": false,
      "video_id": "1U8TI16AR4s",
      "video_link": "https://www.youtube.com/watch?v=1U8TI16AR4s",
      "upload_date": "2019-09-30",
      "channel_link": "https://www.youtube.com/@Telusko",
      "channel_name": "Telusko",
      "length_seconds": 191,
      "thumbnail_link": "https://i.ytimg.com/vi/1U8TI16AR4s/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLA5ik455_j6az_d3L6aOQVC_SzW7g"
    },
    {
      "title": "How to install Python 3.13.0 on Windows 11",
      "views": 1154229,
      "length": "3:37",
      "is_live": false,
      "is_short": false,
      "video_id": "C3bOxcILGu4",
      "video_link": "https://www.youtube.com/watch?v=C3bOxcILGu4",
      "upload_date": "2025-09-28",
      "channel_link": "https://www.youtube.com/@Amit.Thinks",
      "channel_name": "Amit Thinks",
      "length_seconds": 217,
      "thumbnail_link": "https://i.ytimg.com/vi/C3bOxcILGu4/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLCvI4pyv8Bn0sCT9oJ0EAxkLG1-8w"
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@youtube",
  "visibility": "public",
  "operation": "get_channel",
  "version": 1,
  "input": {
    "channel": "MrBeast"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@youtube\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_channel\",\n  \"version\": 1,\n  \"input\": {\n    \"channel\": \"MrBeast\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@youtube",
  "visibility": "public",
  "operation": "get_channel",
  "version": 1,
  "input": {
    "channel": "MrBeast"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@youtube","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Find public videos by keyword, upload period, length, or order
- Review video statistics, descriptions, chapters, and available caption languages
- Analyze captions and timed transcript segments
- Review public top-level comments on a video
- Compare channel uploads or weekly top songs by country

## FAQ

### Is Fous affiliated with YouTube?

No. Fous is not affiliated with YouTube. This workflow reads the public youtube.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a YouTube account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from youtube.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What public videos match keywords or filters?

Search videos returns public video results using required keywords and optional upload period, length, and order.

### What captions and timed segments are available for a video?

Get video transcript returns available captions and timed segments for a video link or title, optionally in a specified language.

### What public statistics are shown for a channel?

Get channel returns public channel statistics, including displayed subscriber totals and total views.

## Related

- [Kworb API](https://fous.com/workflows/kworb.md): Kworb provides published Spotify and YouTube music charts and tracked artist streaming totals; chart dates may lag, and daily streams or some views may be unavailable.
- [Apple Music API](https://fous.com/workflows/apple-music.md): Apple Music returns albums, tracks, artist profiles, latest releases, top music, matching songs, and current charts; prices, previews, and older albums may be unavailable.
- [Twitch API](https://fous.com/workflows/twitch.md): Twitch returns channel profiles, live status, up to 10 broadcasts, top streams, viewer-ranked categories, up to 100 public videos/clips, and 1–30-day schedules; counts change.
- [Social Blade API](https://fous.com/workflows/social-blade.md): Social Blade provides public creator totals and grades, YouTube 30-day growth and 14-day history, TikTok 30-day changes and up to 14-day history, and Instagram totals without public daily history or 30-day follower change.
- [Vimeo API](https://fous.com/workflows/vimeo.md): Watch and share videos on Vimeo.
- [Deezer API](https://fous.com/workflows/deezer.md): Deezer provides albums with ordered tracklists, song recording details, and current worldwide charts or official country-playlist tracks; previews and some tempo data may be unavailable or expire.
- [Spotify API](https://fous.com/workflows/spotify.md): Spotify returns public artist profiles, album credits and ordered tracks, song details and play counts, up to 500 playlist songs, keyword results, and country-based podcast charts; dates and regional options vary.
- [TikTok API](https://fous.com/workflows/tiktok.md): TikTok returns public profiles and totals, recent pinned-first videos, and public video details and engagement; private content unavailable, and feeds may be incomplete or empty.
- [All Entertainment workflows](https://fous.com/workflows/category/entertainment)
