What this endpoint helps with
The response provides available Videos fields in normalized V2 or platform-native V1 format.
When to use it
Use “Details by video ID” after the object is known and your product needs its current public context.
Retrieve detailed public Videos data from YouTube by a known identifier for object records, validation, and enrichment.
Use “Details by video ID” after the object is known and your product needs its current public context.
Review the result and common workflows first, then move to parameters and a working request example.
The response provides available Videos fields in normalized V2 or platform-native V1 format.
Use “Details by video ID” after the object is known and your product needs its current public context.
Attach public YouTube fields to known product objects.
Verify identifiers and current public context before downstream processing.
Use object details as inputs for reports, scoring, and related requests.
Both versions solve the same job and accept the same parameters. Use the switch to compare the response structure and choose the version your client expects.
Switch versions on this page to compare response structures while keeping the same documentation URL.
Authentication, required parameters, and the request shape stay the same across V1 and V2. In practice, you choose the version when you build the endpoint path and when you parse the response.
The main difference is the response envelope. Use V2 for new integrations and keep V1 only when you need compatibility with an existing client contract.
Use the same API key header and the same query parameters for both versions. This documentation shows the shared parameter set first, then version-specific endpoint paths and code snippets.
| Parameter | Required | Type | Example | Description |
|---|---|---|---|---|
video_id |
No | str |
5aS-8QCRdGE |
Video ID on the selected platform. |
Choose a version when you copy the exact endpoint path, example URL, and code snippet. The parameter list above stays the same.
GET /api/v2/youtube.com/videos/details-by-video-idcurl --request GET \
--url "https://www.scrapestorm.net/api/v2/youtube.com/videos/details-by-video-id" \
--header "X-API-Key: 00000000-0000-4000-8000-000000000000" \
# Optional parameters:
# --data-urlencode 'video_id=5aS-8QCRdGE'
from urllib.parse import urljoin
import requests
BASE_URL = "https://www.scrapestorm.net"
ENDPOINT = "/api/v2/youtube.com/videos/details-by-video-id"
HEADERS = {"Accept": "application/json", "X-API-Key": "00000000-0000-4000-8000-000000000000"}
params = {
}
# Optional parameters
# params["video_id"] = "5aS-8QCRdGE"
with requests.Session() as session:
response = session.request(
method="GET",
url=urljoin(BASE_URL, ENDPOINT),
headers=HEADERS,
params=params,
timeout=30,
)
response.raise_for_status()
payload = response.json()
print(payload)
const BASE_URL = "https://www.scrapestorm.net";
const endpoint = "/api/v2/youtube.com/videos/details-by-video-id";
const params = new URLSearchParams({
});
// Optional parameters
// params.set("video_id", "5aS-8QCRdGE");
const response = await fetch(`${BASE_URL}${endpoint}?${params.toString()}`, {
method: "GET",
headers: {
Accept: "application/json",
"X-API-Key": "00000000-0000-4000-8000-000000000000",
},
});
if (!response.ok) {
throw new Error(`Request failed: ${response.status} ${response.statusText}`);
}
const payload = await response.json();
console.log(payload);
import axios from "axios";
const client = axios.create({
baseURL: "https://www.scrapestorm.net",
timeout: 30000,
headers: {
Accept: "application/json",
"X-API-Key": "00000000-0000-4000-8000-000000000000",
},
});
const params = {
};
// Optional parameters
// params.video_id = "5aS-8QCRdGE";
const { data: payload } = await client.request({
method: "GET",
url: endpoint,
params,
});
console.log(payload);
<?php
declare(strict_types=1);
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
$client = new Client([
'base_uri' => "https://www.scrapestorm.net",
'timeout' => 30.0,
'headers' => [
'Accept' => 'application/json',
'X-API-Key' => "00000000-0000-4000-8000-000000000000",
],
]);
$query = [
];
// Optional parameters
// $query["video_id"] = "5aS-8QCRdGE";
try {
$response = $client->request("GET", "/api/v2/youtube.com/videos/details-by-video-id", [
'query' => $query,
]);
$payload = json_decode(
(string) $response->getBody(),
true,
512,
JSON_THROW_ON_ERROR
);
var_dump($payload);
} catch (GuzzleException $e) {
throw $e;
}
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"time"
)
func main() {
baseURL := "https://www.scrapestorm.net"
endpoint := "/api/v2/youtube.com/videos/details-by-video-id"
params := url.Values{}
// Optional parameters
// params.Set("video_id", "5aS-8QCRdGE")
req, err := http.NewRequest(
"GET",
fmt.Sprintf("%s%s?%s", baseURL, endpoint, params.Encode()),
nil,
)
if err != nil {
panic(err)
}
req.Header.Set("Accept", "application/json")
req.Header.Set("X-API-Key", "00000000-0000-4000-8000-000000000000")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var payload any
if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil {
panic(err)
}
fmt.Printf("%+v\n", payload)
}
Choose a version when you copy the exact endpoint path, example URL, and code snippet. The parameter list above stays the same.
GET /api/v1/youtube.com/videos/details-by-video-idcurl --request GET \
--url "https://www.scrapestorm.net/api/v1/youtube.com/videos/details-by-video-id" \
--header "X-API-Key: 00000000-0000-4000-8000-000000000000" \
--get --data-urlencode 'video_id=value'
from urllib.parse import urljoin
import requests
BASE_URL = "https://www.scrapestorm.net"
ENDPOINT = "/api/v1/youtube.com/videos/details-by-video-id"
HEADERS = {"Accept": "application/json", "X-API-Key": "00000000-0000-4000-8000-000000000000"}
params = {
"video_id": "value",
}
with requests.Session() as session:
response = session.request(
method="GET",
url=urljoin(BASE_URL, ENDPOINT),
headers=HEADERS,
params=params,
timeout=30,
)
response.raise_for_status()
payload = response.json()
print(payload)
const BASE_URL = "https://www.scrapestorm.net";
const endpoint = "/api/v1/youtube.com/videos/details-by-video-id";
const params = new URLSearchParams({
video_id: "value",
});
const response = await fetch(`${BASE_URL}${endpoint}?${params.toString()}`, {
method: "GET",
headers: {
Accept: "application/json",
"X-API-Key": "00000000-0000-4000-8000-000000000000",
},
});
if (!response.ok) {
throw new Error(`Request failed: ${response.status} ${response.statusText}`);
}
const payload = await response.json();
console.log(payload);
import axios from "axios";
const client = axios.create({
baseURL: "https://www.scrapestorm.net",
timeout: 30000,
headers: {
Accept: "application/json",
"X-API-Key": "00000000-0000-4000-8000-000000000000",
},
});
const params = {
video_id: "value",
};
const { data: payload } = await client.request({
method: "GET",
url: endpoint,
params,
});
console.log(payload);
<?php
declare(strict_types=1);
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
$client = new Client([
'base_uri' => "https://www.scrapestorm.net",
'timeout' => 30.0,
'headers' => [
'Accept' => 'application/json',
'X-API-Key' => "00000000-0000-4000-8000-000000000000",
],
]);
$query = [
"video_id" => "value",
];
try {
$response = $client->request("GET", "/api/v1/youtube.com/videos/details-by-video-id", [
'query' => $query,
]);
$payload = json_decode(
(string) $response->getBody(),
true,
512,
JSON_THROW_ON_ERROR
);
var_dump($payload);
} catch (GuzzleException $e) {
throw $e;
}
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"time"
)
func main() {
baseURL := "https://www.scrapestorm.net"
endpoint := "/api/v1/youtube.com/videos/details-by-video-id"
params := url.Values{}
params.Set("video_id", "value")
req, err := http.NewRequest(
"GET",
fmt.Sprintf("%s%s?%s", baseURL, endpoint, params.Encode()),
nil,
)
if err != nil {
panic(err)
}
req.Header.Set("Accept", "application/json")
req.Header.Set("X-API-Key", "00000000-0000-4000-8000-000000000000")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var payload any
if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil {
panic(err)
}
fmt.Printf("%+v\n", payload)
}
The preview keeps key fields and the first collection items so you can scan the response shape quickly. Switching versions changes the JSON format.
This compact JSON example comes from the latest successful verification run for V2.
{
"success": true,
"status": "ok",
"search_context": {
"video_id": "5aS-8QCRdGE"
},
"data": {
"video": {
"author": {
"url": "https://www.youtube.com/@mkbhd",
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"username": "mkbhd",
"display_name": "Marques Brownlee",
"verified": true,
"subscriber_count": 21100000,
"avatar_url": "https://example.com/image.jpg",
"avatar_urls": "https://example.com/image.jpg"
},
"url": "https://www.youtube.com/watch?v=5aS-8QCRdGE",
"created_at": "2026-04-14",
"video_id": "5aS-8QCRdGE",
"title": "The Unreleased Rollable Smartphone!",
"description": "This phone never came out. But they got really close to dropping a rollable phone\n\nJerryRigEverything teardown: • I'm not supposed to have this... \n\nMKBHD Merch: http://shop…",
"hashtags": [],
"emails": [],
"external_links": [
{
"url": "http://shop.MKBHD.com",
"label": null,
"link_type": "shop"
},
{
"url": "https://goo.gl/B3AWV5",
"label": null,
"link_type": "website"
}
],
"view_count": 2195294,
"like_count": 72324,
"comment_count": 4600,
"ai_summary": "Marques Brownlee examines the hardware and software features of an unreleased rollable prototype from LG. This device showcases a unique expanding screen mechanism, complex engi…"
},
"related_videos": {
"count": 20,
"items": [
{
"author": {
"url": "https://www.youtube.com/@Mrwhosetheboss",
"channel_id": "UCMiJRAwDNSNzuYeN2uWa0pA",
"username": "Mrwhosetheboss",
"display_name": "Mrwhosetheboss"
},
"url": "https://www.youtube.com/watch?v=vlEOOtiaUu8",
"video_id": "vlEOOtiaUu8",
"title": "I tested phones that shouldn’t EXIST",
"published_time": "8 days ago",
"duration_seconds": 1347,
"duration_text": "22:27",
"view_count": 4200000,
"thumbnail_url": "https://example.com/image.jpg",
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/vlEOOtiaUu8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzeROxp42rb0xFoS2ZNoGmDJq_dg",
"width": 168,
"height": 94
},
{
"url": "https://i.ytimg.com/vi/vlEOOtiaUu8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBKtNrr9rQhY8Qc8jzKpcu7NeaG9Q",
"width": 336,
"height": 188
},
{
"_more_items": 1
}
]
},
{
"author": {
"url": "https://www.youtube.com/@mkbhd",
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"username": "mkbhd",
"display_name": "Marques Brownlee"
},
"url": "https://www.youtube.com/watch?v=HLUamwXQ218&pp=ugUEEgJlbg%3D%3D",
"video_id": "HLUamwXQ218",
"title": "The Problem with this “Ultra Luxury” Smartphone",
"published_time": "6 months ago",
"duration_seconds": 932,
"duration_text": "15:32",
"view_count": 3200000,
"thumbnail_url": "https://example.com/image.jpg",
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/HLUamwXQ218/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAs9qQ677bgPr-mFnz6JE6MXpjy9g",
"width": 168,
"height": 94
},
{
"url": "https://i.ytimg.com/vi/HLUamwXQ218/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCjEti94y82V_5wSHNZLen2e91E5g",
"width": 336,
"height": 188
},
{
"_more_items": 1
}
]
},
{
"_more_items": 18
}
]
},
"popular_moments": {
"top_moments": [
{
"start_seconds": 467.22,
"end_seconds": 473.21,
"duration_seconds": 5.99,
"time_text": "7:47-7:53",
"intensity": 1.0,
"rank": 1
},
{
"start_seconds": 155.74,
"end_seconds": 161.73,
"duration_seconds": 5.99,
"time_text": "2:35-2:41",
"intensity": 0.882215409278172,
"rank": 2
},
{
"_more_items": 1
}
],
"timeline": [
{
"start_seconds": 0.0,
"end_seconds": 5.99,
"duration_seconds": 5.99,
"time_text": "0:00-0:05",
"intensity": 0.7332834639165496
},
{
"start_seconds": 5.99,
"end_seconds": 11.98,
"duration_seconds": 5.99,
"time_text": "0:05-0:11",
"intensity": 0.6063383718780821
},
{
"_more_items": 98
}
]
}
}
}
This compact JSON example comes from the latest successful verification run for V1.
{
"success": true,
"status": "ok",
"search_context": {
"video_id": "5aS-8QCRdGE"
},
"data": {
"responseContext": {
"serviceTrackingParams": [
{
"service": "CSI",
"params": [
{
"key": "c",
"value": "WEB"
},
{
"key": "cver",
"value": "2.20260715.04.00"
},
{
"_more_items": 2
}
]
},
{
"service": "GFEEDBACK",
"params": [
{
"key": "logged_in",
"value": "0"
},
{
"key": "visitor_data",
"value": "Cgt4N0JiRG5EMEVXRSjq_fTSBjIKCgJVUxIEGgAgDWLfAgrcAjIwLllUPUNfMWpRMHJlQk1McFpvcW96LW54NS03VzZrZUhaazNJU0pJVjh4bHM1NVdlakdMbjktUm5CeDVTaTAxVHhYc0ZGVkZ1a184cU9qNkVhazdpR2NoaXptT1gxYTBpa3Bxdm9tXzVDeHFTUHRleWRhc2huTS03VVRXaVF0RURkMng0aTkzNmNQVUNqZ3FKNnM1cnVUZUxKNkxDY1c5dkpLUkg3ODRmR2tKT293NkVQQUhRdlYtZEtBemwzeG5hYkE3RlJqeV9zOEdNeU1COE91NnNGdEtFZ3ExeERGWFBnOFJkR1BnZTJ5YjM0U2tjNHE0ZmxtTVdSMk5nbEQ4eEFrckpsQXN2R0pURmpWQWFCeVJ5LWVvNGQ5Ni1UdUlBRDl1VThSdFVoSDVscVFjZ196YjF0aEo3aFVRSXNyeU8zVUt2TGFGXzB1eXgxNTd4QTRQZWh1YlpaQQ%3D%3D"
}
]
},
{
"_more_items": 2
}
],
"mainAppWebResponseContext": {
"loggedOut": true,
"trackingParam": "k5_fmPxhoXZReDboIFkE4bIwnUp3mSwshe0ingjXyBLXUNCqtU88D8MfkHRMkusYh7BwOcCw59TLtslLKPQGSS"
},
"responseId": "IhMI8eXYnNXflQMV4RxXAR1rvxkT",
"webResponseContextExtensionData": {
"webResponseContextPreloadData": {
"preloadMessageNames": [
"twoColumnWatchNextResults",
"results",
{
"_more_items": 91
}
]
},
"webPrefetchData": {
"navigationEndpoints": [
{
"clickTrackingParams": "IhMI8eXYnNXflQMV4RxXAR1rvxkTMgxyZWxhdGVkLWF1dG9I4ejFhJDer9LlAZoBBQgDEPgdygEEXrX1bw==",
"commandMetadata": "…",
"watchEndpoint": "…"
},
{
"clickTrackingParams": "IhMI8eXYnNXflQMV4RxXAR1rvxkTMgxyZWxhdGVkLWF1dG9I4ejFhJDer9LlAZoBBQgDEPgdygEEXrX1bw==",
"commandMetadata": "…",
"watchEndpoint": "…"
},
{
"_more_items": 1
}
]
},
"hasDecorated": true
}
},
"contents": {
"twoColumnWatchNextResults": {
"results": {
"results": {
"contents": [
"…",
"…",
{
"_more_items": 3
}
],
"trackingParams": "CLwBELovIhMI8eXYnNXflQMV4RxXAR1rvxkT"
}
},
"secondaryResults": {
"secondaryResults": {
"results": [
"…",
"…",
{
"_more_items": 19
}
],
"trackingParams": "CFYQqTAiEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"targetId": "watch-next-feed"
}
},
"autoplay": {
"autoplay": {
"sets": [
"…"
],
"countDownSecs": 5,
"trackingParams": "CFUQ4ZIBIhMI8eXYnNXflQMV4RxXAR1rvxkT"
}
}
}
},
"currentVideoEndpoint": {
"clickTrackingParams": "CAAQg2ciEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"commandMetadata": {
"webCommandMetadata": {
"url": "/watch?v=5aS-8QCRdGE",
"webPageType": "WEB_PAGE_TYPE_WATCH",
"rootVe": 3832
}
},
"watchEndpoint": {
"videoId": "5aS-8QCRdGE",
"watchEndpointSupportedOnesieConfig": {
"html5PlaybackOnesieConfig": {
"commonConfig": {
"url": "https://rr1---sn-gjo-w43s.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=e5a4bef100917461&ip=212.119.41.135&initcwndbps=3055000&mt=1784495366&oweuc=&pxtags=Cg4KAnR4Egg1MTkyOTU2OA&rxtags=Cg4KAnR4Egg1MTkyOTU2Ng%2CCg4KAnR4Egg1MTkyOTU2Nw%2CCg4KAnR4Egg1MTkyOTU2OA"
}
}
}
}
},
"trackingParams": "CAAQg2ciEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"playerOverlays": {
"playerOverlayRenderer": {
"endScreen": {
"watchNextEndScreenRenderer": {
"results": [
"…",
"…",
{
"_more_items": 10
}
],
"title": {
"simpleText": "You may also like..."
},
"trackingParams": "CEgQ-lwiEwjx5dic1d-VAxXhHFcBHWu_GRM="
}
},
"autoplay": {
"playerOverlayAutoplayRenderer": {
"title": {
"simpleText": "Up next"
},
"videoTitle": {
"accessibility": "…",
"simpleText": "Reviewing EVERY Samsung Galaxy S Ever!"
},
"byline": {
"runs": "…"
},
"pauseText": {
"simpleText": "Autoplay is paused"
},
"background": {
"thumbnails": "…",
"lightColorPalette": "…",
"darkColorPalette": "…"
},
"countDownSecs": 8,
"cancelButton": {
"buttonRenderer": "…"
},
"nextButton": {
"buttonRenderer": "…"
},
"trackingParams": "CEQQ5JIBIhMI8eXYnNXflQMV4RxXAR1rvxkT",
"closeButton": {
"buttonRenderer": "…"
},
"thumbnailOverlays": [
"…"
],
"preferImmediateRedirect": false,
"videoId": "eKVTFXQPAhs",
"publishedTimeText": {
"simpleText": "2 years ago"
},
"webShowNewAutonavCountdown": true,
"webShowBigThumbnailEndscreen": false,
"shortViewCountText": {
"accessibility": "…",
"simpleText": "9M views"
},
"countDownSecsForFullscreen": 3
}
},
"shareButton": {
"buttonRenderer": {
"style": "STYLE_OPACITY",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"icon": {
"iconType": "SHARE"
},
"navigationEndpoint": {
"clickTrackingParams": "CEIQ5ZYBIhMI8eXYnNXflQMV4RxXAR1rvxkTygEEXrX1bw==",
"commandMetadata": "…",
"shareEntityServiceEndpoint": "…"
},
"tooltip": "Share",
"trackingParams": "CEIQ5ZYBIhMI8eXYnNXflQMV4RxXAR1rvxkT"
}
},
"addToMenu": {
"menuRenderer": {
"trackingParams": "CAAQg2ciEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv"
}
},
"videoDetails": {
"playerOverlayVideoDetailsRenderer": {
"title": {
"simpleText": "The Unreleased Rollable Smartphone!"
},
"subtitle": {
"runs": "…"
},
"channelAvatar": "https://example.com/image.jpg",
"onTap": {
"clickTrackingParams": "CAAQg2ciEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"showEngagementPanelEndpoint": "…"
}
}
},
"autonavToggle": {
"autoplaySwitchButtonRenderer": {
"onEnabledCommand": {
"clickTrackingParams": "CEEQ9bUEIhMI8eXYnNXflQMV4RxXAR1rvxkTygEEXrX1bw==",
"commandMetadata": "…",
"setSettingEndpoint": "…"
},
"onDisabledCommand": {
"clickTrackingParams": "CEEQ9bUEIhMI8eXYnNXflQMV4RxXAR1rvxkTygEEXrX1bw==",
"commandMetadata": "…",
"setSettingEndpoint": "…"
},
"enabledAccessibilityData": {
"accessibilityData": "…"
},
"disabledAccessibilityData": {
"accessibilityData": "…"
},
"trackingParams": "CEEQ9bUEIhMI8eXYnNXflQMV4RxXAR1rvxkT",
"enabled": true
}
},
"decoratedPlayerBarRenderer": {
"decoratedPlayerBarRenderer": {
"playerBar": {
"multiMarkersPlayerBarRenderer": "…"
}
}
},
"fullscreenQuickActionsBar": {
"quickActionsViewModel": {
"quickActionButtons": [
"…",
"…",
{
"_more_items": 3
}
]
}
},
"speedmasterUserEdu": {
"speedmasterEduViewModel": {
"bodyText": {
"content": "Playing at 2x speed"
}
}
},
"showPlaybackRateUpsellPanelCommand": {
"clickTrackingParams": "CAAQg2ciEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"commandMetadata": {
"interactionLoggingCommandMetadata": {
"screenVisualElement": "…"
}
},
"showDialogCommand": {
"panelLoadingStrategy": {
"requestTemplate": "…",
"screenVe": 214295
}
}
}
}
},
"onResponseReceivedEndpoints": [
{
"clickTrackingParams": "CAAQg2ciEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"loadMarkersCommand": {
"visibleOnLoadKeys": [
"EgpIRUFUU0VFS0VSIJICKAE%3D"
],
"entityKeys": [
"EgpIRUFUU0VFS0VSIJICKAE%3D"
]
}
}
],
"engagementPanels": [
{
"engagementPanelSectionListRenderer": {
"panelIdentifier": "engagement-panel-comments-section",
"header": {
"engagementPanelTitleHeaderRenderer": {
"title": "…",
"contextualInfo": "…",
"menu": "…",
"visibilityButton": "…",
"trackingParams": "CCsQ040EGAEiEwjx5dic1d-VAxXhHFcBHWu_GRM="
}
},
"content": {
"sectionListRenderer": {
"contents": "…",
"trackingParams": "CCwQui8iEwjx5dic1d-VAxXhHFcBHWu_GRM="
}
},
"veType": 76278,
"targetId": "engagement-panel-comments-section",
"visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN",
"loggingDirectives": {
"trackingParams": "CCsQ040EGAEiEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"visibility": {
"types": "12"
}
}
}
},
{
"engagementPanelSectionListRenderer": {
"content": {
"adsEngagementPanelContentRenderer": {
"hack": true
}
},
"targetId": "engagement-panel-ads",
"visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN",
"loggingDirectives": {
"trackingParams": "CCoQ040EGAIiEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"visibility": {
"types": "12"
}
}
}
},
{
"_more_items": 4
}
],
"topbar": {
"desktopTopbarRenderer": {
"logo": {
"topbarLogoRenderer": {
"iconImage": {
"iconType": "YOUTUBE_LOGO"
},
"tooltipText": {
"runs": "…"
},
"endpoint": {
"clickTrackingParams": "CBIQsV4iEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"commandMetadata": "…",
"browseEndpoint": "…"
},
"trackingParams": "CBIQsV4iEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D"
}
},
"searchbox": {
"fusionSearchboxRenderer": {
"icon": {
"iconType": "SEARCH"
},
"placeholderText": {
"runs": "…"
},
"config": {
"webSearchboxConfig": "…"
},
"trackingParams": "CA4Q7VAiEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"searchEndpoint": {
"clickTrackingParams": "CA4Q7VAiEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"commandMetadata": "…",
"searchEndpoint": "…"
},
"clearButton": {
"buttonRenderer": "…"
},
"showImageSourceDialog": {
"clickTrackingParams": "CA4Q7VAiEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"showDialogCommand": "…"
},
"disableAiAppearance": true
}
},
"trackingParams": "CAIQq6wBIhMI8eXYnNXflQMV4RxXAR1rvxkT",
"topbarButtons": [
{
"topbarMenuButtonRenderer": {
"icon": "…",
"menuRequest": "…",
"trackingParams": "CAwQ_qsBGAAiEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"accessibility": "…",
"tooltip": "Settings",
"style": "STYLE_DEFAULT"
}
},
{
"buttonRenderer": {
"style": "STYLE_SUGGESTIVE",
"size": "SIZE_SMALL",
"text": "…",
"icon": "…",
"navigationEndpoint": "…",
"trackingParams": "CAsQ1IAEGAEiEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"targetId": "topbar-signin"
}
}
],
"hotkeyDialog": {
"hotkeyDialogRenderer": {
"title": {
"runs": "…"
},
"sections": [
"…",
"…",
{
"_more_items": 2
}
],
"dismissButton": {
"buttonRenderer": "…"
},
"trackingParams": "CAkQteYDIhMI8eXYnNXflQMV4RxXAR1rvxkT"
}
},
"backButton": {
"buttonRenderer": {
"trackingParams": "CAgQvIYDIhMI8eXYnNXflQMV4RxXAR1rvxkT",
"command": {
"clickTrackingParams": "CAgQvIYDIhMI8eXYnNXflQMV4RxXAR1rvxkTygEEXrX1bw==",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
}
}
},
"forwardButton": {
"buttonRenderer": {
"trackingParams": "CAcQvYYDIhMI8eXYnNXflQMV4RxXAR1rvxkT",
"command": {
"clickTrackingParams": "CAcQvYYDIhMI8eXYnNXflQMV4RxXAR1rvxkTygEEXrX1bw==",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
}
}
},
"a11ySkipNavigationButton": {
"buttonRenderer": {
"style": "STYLE_DEFAULT",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"text": {
"runs": "…"
},
"trackingParams": "CAYQ8FsiEwjx5dic1d-VAxXhHFcBHWu_GRM=",
"command": {
"clickTrackingParams": "CAYQ8FsiEwjx5dic1d-VAxXhHFcBHWu_GRPKAQRetfVv",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
}
}
},
"voiceSearchButton": {
"buttonRenderer": {
"style": "STYLE_DEFAULT",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"serviceEndpoint": {
"clickTrackingParams": "CAMQ7a8FIhMI8eXYnNXflQMV4RxXAR1rvxkTygEEXrX1bw==",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
},
"icon": {
"iconType": "MICROPHONE_ON"
},
"tooltip": "Search with your voice",
"trackingParams": "CAMQ7a8FIhMI8eXYnNXflQMV4RxXAR1rvxkT",
"accessibilityData": {
"accessibilityData": "…"
}
}
}
}
},
"pageVisualEffects": [
{
"cinematicContainerRenderer": {
"gradientColorConfig": [
{
"darkThemeColor": 2566914048,
"startLocation": 0
},
{
"darkThemeColor": 2130706432
},
{
"_more_items": 1
}
],
"presentationStyle": "CINEMATIC_CONTAINER_PRESENTATION_STYLE_DYNAMIC_BLURRED",
"config": {
"lightThemeBackgroundColor": 4278190080,
"darkThemeBackgroundColor": 4278190080,
"animationConfig": {
"minImageUpdateIntervalMs": 5000,
"crossfadeDurationMs": 5000,
"crossfadeStartOffset": 1,
"maxFrameRate": 30
},
"colorSourceSizeMultiplier": 2.5,
"applyClientImageBlur": true,
"bottomColorSourceHeightMultiplier": 0.67,
"maxBottomColorSourceHeight": 260,
"colorSourceWidthMultiplier": 1.5,
"colorSourceHeightMultiplier": 2,
"blurStrength": 5,
"watchFullscreenConfig": {
"colorSourceWidthMultiplier": 2,
"colorSourceHeightMultiplier": 2,
"scrimWidthMultiplier": 2.5,
"scrimHeightMultiplier": 2.5,
"flatScrimColor": 2566914048
},
"enableInLightTheme": true
}
}
}
],
"microformat": {
"microformatDataRenderer": {
"videoDetails": {
"comments": [
{
"@type": "https://schema.org/Comment",
"dateCreated": "2026-04-14T12:31:41-07:00",
"text": "Life was good",
"author": "…",
"upvoteCount": 15183
}
]
}
}
},
"frameworkUpdates": {
"entityBatchUpdate": {
"mutations": [
{
"entityKey": "EgpIRUFUU0VFS0VSIJICKAE%3D",
"type": "ENTITY_MUTATION_TYPE_REPLACE",
"payload": {
"macroMarkersListEntity": "…"
}
},
{
"entityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D",
"type": "ENTITY_MUTATION_TYPE_DELETE",
"options": {
"persistenceOption": "ENTITY_PERSISTENCE_OPTION_INMEMORY_AND_PERSIST"
}
},
{
"_more_items": 3
}
],
"timestamp": {
"seconds": "1784495890",
"nanos": 139171382
}
}
}
}
}
Use this documentation as the first decision point, then move into pricing, platform coverage, and integration rules before you connect the endpoint for recurring use.
Use these answers to decide whether this API method fits your workflow, versioning choice, and rollout plan.
The method performs “Details by video ID” for Videos. The compact response example below shows the exact field structure.
Choose V2 for new integrations because it provides a normalized structure. Use V1 only for compatibility with clients that already consume the platform-native format.
Create an API key, send it in the request header, and provide the required parameters from the table. The code samples already contain the correct path and request structure.