YouTube API endpoint
Returns the metadata of a YouTube video by its 11-character `id`: title, description, channel id and title, publication time, duration in seconds, and view, like and comment counts. Some fields are best-effort.
/youtube/video/{id}Some fields are best-effort. Bot-confirmation player responses are treated as upstream failures and retried instead of being returned as partial metadata.
Path parameters:
id: required. YouTube video ID (11-char code).| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| title | Has a value | |
| description | Has a value | 610 characters |
| duration_seconds | Has a value | 2,423 |
| published_at | Has a value | 2025-06-18 |
| channel_title | Has a value | |
| channel_id | Has a value | |
| views_count | Has a value | 595,342 |
| likes_count | Has a value | 12,000 |
| comments_count | Has a value | 1,500 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | YouTube video ID (11-char code) | YbJOTdZBX1g | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/youtube/video/YbJOTdZBX1g" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "YbJOTdZBX1g",
"title": "Sam Altman on AGI, GPT-5, and what’s next — the OpenAI Podcast Ep. 1",
"description": "On the first episode of the OpenAI Podcast, Sam Altman joins host Andrew Mayne to talk about the future of AI: from GPT-5 and AGI to Proj...",
"duration_seconds": 2423,
"published_at": "2025-06-18T00:00:00Z",
"channel_title": "OpenAI",
"channel_id": "UCXZCJLdBC09xxGZ6gcdrc6A",
"views_count": 460176,
"likes_count": 11000,
"comments_count": 1400
}
}Request schema
No body schema
Response schema
#/definitions/youtube.videoResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | youtube.VideoDetail | No | ||||
| data.channel_id | string | No | UCXZCJLdBC09xxGZ6gcdrc6A | YouTube channel ID of the uploader. | ||
| data.channel_title | string | No | OpenAI | Name of the channel that uploaded the video. | ||
| data.comments_count | integer | No | 1400 | Number of comments on the video; may be rounded when YouTube shows an abbreviated count. Omitted when unavailable. | ||
| data.description | string | No | On the first episode of the OpenAI Podcast... | Full video description. | ||
| data.dislikes_count | integer | No | 0 | may be hidden | ||
| data.duration_seconds | number | No | 2423 | length in seconds | ||
| data.id | string | No | YbJOTdZBX1g | YouTube video ID. | ||
| data.likes_count | integer | No | 11000 | Number of likes on the video; may be rounded when YouTube shows an abbreviated count. Omitted when unavailable. | ||
| data.published_at | string | No | 2025-06-18T07:59:20-07:00 | Time the video was published, in RFC 3339. | ||
| data.title | string | No | Sam Altman on AGI, GPT-5, and what’s next — the OpenAI Podcast Ep. 1 | Video title as shown on YouTube. | ||
| data.views_count | integer | No | 460176 | Number of views of the video. Omitted when unavailable. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid *id* parameter | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/youtube/video/YbJOTdZBX1g" \
-H "x-api-key: $CRAWLORA_API_KEY"