> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notte.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# YouTube

> Get a video's metadata and captions, or a channel's videos

> [!TIP]
>
> Read [the Notte skill](https://notte.cc/skill.md) and follow its setup instructions when setting up Notte or building browser automation. This is the shared source for CLI setup, authentication, and the browser-to-code workflow.

`POST /data/youtube/extract` takes a YouTube video or channel URL and returns a markdown summary plus structured metadata.

> [card] [Try it in the Console](https://console.notte.cc/data-apis/youtube)
>
> Try this API in the playground, no code needed.

## Quick start

```bash theme={null}
curl -X POST https://api.notte.cc/data/youtube/extract \
  -H "Authorization: Bearer $NOTTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
```

```json theme={null}
{
  "markdown": "# Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)\n\nChannel: Rick Astley\nDuration: 03:33\n...",
  "metadata": {
    "kind": "video",
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "video_id": "dQw4w9WgXcQ",
    "title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
    "channel": "Rick Astley",
    "duration_seconds": 213,
    "views": "1836132776",
    "published": "2009-10-24T23:57:33-07:00"
  },
  "captions_status": "unavailable",
  "captions": [],
  "videos": []
}
```

## Parameters

**url** `string` *required*

A video or channel URL.

**includeImages** `boolean` (default: false)

Include images in the markdown.

## Response fields

**markdown** `string`

Title, channel, description and (when available) the transcript, as markdown.

**metadata** `object`

`kind` is `video` or `channel`. Videos have `video_id`, `title`, `channel`, `channel_url`, `description`, `duration_seconds`, `views`, `published` and `image_url`. Channels have `subscribers` and `video_count`.

**captions\_status** `string`

`available`, `unavailable`, `disabled` or `not_applicable` (channels).

**captions** `object[]`

When available: `start`, `duration` and `text` for each caption line.

**captions\_language** `string`

The language of the captions, when available.

**captions\_automatic** `boolean`

Whether the captions were generated automatically, when available.

**videos** `object[]`

For channels: `id`, `url`, `title`, `duration`, `views` and `published` of listed videos.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.