このエンドポイントが役立つこと
レスポンスには、再生リスト のコレクション、各要素のコンテキスト、次のページのカーソルが含まれます。
使用に適した場面
要素の順序と次のページからの再開が重要な、継続的な収集のワークフローで「再生リスト ID による動画」を使用します。
まず結果と一般的なワークフローを確認し、次にパラメーターと動作するリクエスト例に進んでください。
レスポンスには、再生リスト のコレクション、各要素のコンテキスト、次のページのカーソルが含まれます。
要素の順序と次のページからの再開が重要な、継続的な収集のワークフローで「再生リスト ID による動画」を使用します。
YouTube の新しい要素を社内のストレージに継続的に転送します。
利用可能な公開コレクションを保存して、後で検索や処理に使用します。
最後のページから再開し、新たに現れるオブジェクトを検出します。
どちらのバージョンも同じタスクを解決し、同じパラメーターを受け付けます。切り替えを使ってレスポンス構造を比較し、クライアントが想定するバージョンを選んでください。
このページでバージョンを切り替えると、同じドキュメント URL でレスポンス構造を比較できます。
認証、必須パラメーター、リクエストの形は V1 と V2 で同じです。実際には、エンドポイントのパスを組み立てるときとレスポンスを読み取るときにバージョンを選びます。
主な違いはレスポンスのエンベロープです。新しい連携では V2 を使用し、既存のクライアント契約との互換性が必要な場合にのみ V1 を残してください。
どちらのバージョンでも、同じ API キーのヘッダーと同じクエリパラメーターを使用します。このドキュメントでは、まず共通のパラメーターを示し、次に各バージョンのパスとコードスニペットを示します。
| パラメーター | 必須 | 型 | 例 | 説明 |
|---|---|---|---|---|
playlist_id |
はい | str |
UUBJycsmduvYEL83R_U4JriQ |
選択したプラットフォームにおける再生リストの ID。 |
cursor |
いいえ | str | None |
cursor-next-page |
前のレスポンスで返された次のページのカーソル。最初のページでは省略します。 |
エンドポイントの正確なパス、URL の例、コードスニペットをコピーするときにバージョンを選んでください。上のパラメーター一覧は変わりません。
GET /api/v2/youtube.com/playlist/videos-by-playlist-idcurl --request GET \
--url "https://www.scrapestorm.net/api/v2/youtube.com/playlist/videos-by-playlist-id" \
--header "X-API-Key: 00000000-0000-4000-8000-000000000000" \
--get --data-urlencode 'playlist_id=UUBJycsmduvYEL83R_U4JriQ' \
# Optional parameters:
# --data-urlencode 'cursor=cursor-next-page'
from urllib.parse import urljoin
import requests
BASE_URL = "https://www.scrapestorm.net"
ENDPOINT = "/api/v2/youtube.com/playlist/videos-by-playlist-id"
HEADERS = {"Accept": "application/json", "X-API-Key": "00000000-0000-4000-8000-000000000000"}
params = {
"playlist_id": "UUBJycsmduvYEL83R_U4JriQ",
}
# Optional parameters
# params["cursor"] = "cursor-next-page"
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/playlist/videos-by-playlist-id";
const params = new URLSearchParams({
playlist_id: "UUBJycsmduvYEL83R_U4JriQ",
});
// Optional parameters
// params.set("cursor", "cursor-next-page");
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 = {
playlist_id: "UUBJycsmduvYEL83R_U4JriQ",
};
// Optional parameters
// params.cursor = "cursor-next-page";
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 = [
"playlist_id" => "UUBJycsmduvYEL83R_U4JriQ",
];
// Optional parameters
// $query["cursor"] = "cursor-next-page";
try {
$response = $client->request("GET", "/api/v2/youtube.com/playlist/videos-by-playlist-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/playlist/videos-by-playlist-id"
params := url.Values{}
params.Set("playlist_id", "UUBJycsmduvYEL83R_U4JriQ")
// Optional parameters
// params.Set("cursor", "cursor-next-page")
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)
}
エンドポイントの正確なパス、URL の例、コードスニペットをコピーするときにバージョンを選んでください。上のパラメーター一覧は変わりません。
GET /api/v1/youtube.com/playlist/videos-by-playlist-idcurl --request GET \
--url "https://www.scrapestorm.net/api/v1/youtube.com/playlist/videos-by-playlist-id" \
--header "X-API-Key: 00000000-0000-4000-8000-000000000000" \
--get --data-urlencode 'playlist_id=UUBJycsmduvYEL83R_U4JriQ' \
# Optional parameters:
# --data-urlencode 'cursor=cursor-next-page'
from urllib.parse import urljoin
import requests
BASE_URL = "https://www.scrapestorm.net"
ENDPOINT = "/api/v1/youtube.com/playlist/videos-by-playlist-id"
HEADERS = {"Accept": "application/json", "X-API-Key": "00000000-0000-4000-8000-000000000000"}
params = {
"playlist_id": "UUBJycsmduvYEL83R_U4JriQ",
}
# Optional parameters
# params["cursor"] = "cursor-next-page"
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/playlist/videos-by-playlist-id";
const params = new URLSearchParams({
playlist_id: "UUBJycsmduvYEL83R_U4JriQ",
});
// Optional parameters
// params.set("cursor", "cursor-next-page");
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 = {
playlist_id: "UUBJycsmduvYEL83R_U4JriQ",
};
// Optional parameters
// params.cursor = "cursor-next-page";
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 = [
"playlist_id" => "UUBJycsmduvYEL83R_U4JriQ",
];
// Optional parameters
// $query["cursor"] = "cursor-next-page";
try {
$response = $client->request("GET", "/api/v1/youtube.com/playlist/videos-by-playlist-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/playlist/videos-by-playlist-id"
params := url.Values{}
params.Set("playlist_id", "UUBJycsmduvYEL83R_U4JriQ")
// Optional parameters
// params.Set("cursor", "cursor-next-page")
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)
}
プレビューには主要なフィールドとコレクションの最初の要素が含まれているため、レスポンスの形をすばやく確認できます。バージョンを切り替えると JSON の形式が変わります。
このコンパクトな JSON の例は、V2 の直近の成功した検証実行から取得したものです。
{
"success": true,
"status": "ok",
"pagination": {
"cursor": "QVFB...",
"has_more": true
},
"search_context": {
"playlist_id": "UUBJycsmduvYEL83R_U4JriQ"
},
"data": {
"playlist_context": {
"title": "Uploads from Marques Brownlee"
},
"videos": {
"count": 100,
"items": [
{
"author": {
"url": "https://www.youtube.com/@mkbhd",
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"username": "mkbhd",
"display_name": "Marques Brownlee"
},
"url": "https://www.youtube.com/watch?v=_oRgdlJUD18",
"video_id": "_oRgdlJUD18",
"title": "iOS 27 Hands-On: Top 5 New Features!",
"published_time": "5 days ago",
"duration_seconds": 919,
"duration_text": "15:19",
"view_count": 4600000,
"thumbnail_url": "https://example.com/image.jpg",
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/_oRgdlJUD18/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAqzYI5SutN61Swg3NyCUT_iqmWvg",
"width": 168,
"height": 94
},
{
"url": "https://i.ytimg.com/vi/_oRgdlJUD18/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUzyfR53JdNwx7K0o1k2OVhXM7UQ",
"width": 196,
"height": 110
},
{
"_more_items": 2
}
],
"playlist_index": null,
"is_playable": null
},
{
"author": {
"url": "https://www.youtube.com/@mkbhd",
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"username": "mkbhd",
"display_name": "Marques Brownlee"
},
"url": "https://www.youtube.com/watch?v=eWKY0OnPByg&pp=0gcJCaAAKgI3ePta",
"video_id": "eWKY0OnPByg",
"title": "Apple Lost the AI Race",
"published_time": "11 days ago",
"duration_seconds": 424,
"duration_text": "7:04",
"view_count": 2000000,
"thumbnail_url": "https://example.com/image.jpg",
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/eWKY0OnPByg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjN5ZGxtyPGP847jBMfzvK6OOCww",
"width": 168,
"height": 94
},
{
"url": "https://i.ytimg.com/vi/eWKY0OnPByg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBlYd2GGr3sxRPzWyDetQnI-FsaNw",
"width": 196,
"height": 110
},
{
"_more_items": 2
}
],
"playlist_index": null,
"is_playable": null
},
{
"_more_items": 98
}
]
}
}
}
このコンパクトな JSON の例は、V1 の直近の成功した検証実行から取得したものです。
{
"success": true,
"status": "ok",
"pagination": {
"cursor": "QVFB...",
"has_more": true
},
"search_context": {
"playlist_id": "UUBJycsmduvYEL83R_U4JriQ"
},
"data": {
"responseContext": {
"serviceTrackingParams": [
{
"service": "GFEEDBACK",
"params": [
{
"key": "is_podcast_show_page",
"value": "0"
},
{
"key": "browse_id",
"value": "VLUUBJycsmduvYEL83R_U4JriQ"
},
{
"_more_items": 3
}
]
},
{
"service": "GOOGLE_HELP",
"params": [
{
"key": "is_podcast_show_page",
"value": "0"
},
{
"key": "browse_id",
"value": "VLUUBJycsmduvYEL83R_U4JriQ"
},
{
"_more_items": 1
}
]
},
{
"_more_items": 3
}
],
"mainAppWebResponseContext": {
"loggedOut": true,
"trackingParam": "k5_fmPxhoXZReDjg9tUg_RqAkFlfq5Z4Md6jSR9_ZA0gL2F_bUiggJPg_wRMkusEmIBwOcCw59TLtslLKPQGSS"
},
"responseId": "IhMIlcXviNXflQMVD8c_BB1R_QoD",
"webResponseContextExtensionData": {
"webResponseContextPreloadData": {
"preloadMessageNames": [
"playlistHeaderRenderer",
"buttonRenderer",
{
"_more_items": 53
}
]
},
"ytConfigData": {
"visitorData": "Cgt4N0JiRG5EMEVXRSjn_fTSBjIKCgJVUxIEGgAgDWLfAgrcAjIwLllUPUNfMWpRMHJlQk1McFpvcW96LW54NS03VzZrZUhaazNJU0pJVjh4bHM1NVdlakdMbjktUm5CeDVTaTAxVHhYc0ZGVkZ1a184cU9qNkVhazdpR2NoaXptT1gxY…",
"rootVisualElementType": 5754
},
"hasDecorated": true
}
},
"contents": {
"twoColumnBrowseResultsRenderer": {
"tabs": [
{
"tabRenderer": {
"selected": true,
"content": "…",
"tabIdentifier": "PL",
"trackingParams": "CCIQ8JMBGAQiEwiVxe-I1d-VAxUPxz8EHVH9CgM="
}
}
]
}
},
"header": {
"playlistHeaderRenderer": {
"playlistId": "UUBJycsmduvYEL83R_U4JriQ",
"title": {
"simpleText": "Uploads from Marques Brownlee"
},
"numVideosText": {
"runs": [
{
"text": "1,833"
},
{
"text": " videos"
}
]
},
"ownerText": {
"runs": [
{
"text": "Marques Brownlee",
"navigationEndpoint": "…"
}
]
},
"viewCountText": {
"simpleText": "29,077,346 views"
},
"shareData": {
"canShare": true
},
"isEditable": false,
"likeButton": {
"likeButtonRenderer": {
"target": {
"playlistId": "UUBJycsmduvYEL83R_U4JriQ"
},
"likeStatus": "INDIFFERENT",
"trackingParams": "CCEQpUEiEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"likesAllowed": false,
"hideDislikeButton": false
}
},
"ownerEndpoint": {
"clickTrackingParams": "CBsQ8DciEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"commandMetadata": {
"webCommandMetadata": {
"url": "/@mkbhd",
"webPageType": "WEB_PAGE_TYPE_CHANNEL",
"rootVe": 3611,
"apiUrl": "/youtubei/v1/browse"
}
},
"browseEndpoint": {
"browseId": "UCBJycsmduvYEL83R_U4JriQ",
"canonicalBaseUrl": "/@mkbhd"
}
},
"editableDetails": {
"canDelete": false
},
"trackingParams": "CBsQ8DciEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"serviceEndpoints": [
{
"clickTrackingParams": "CBsQ8DciEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"commandMetadata": {
"webCommandMetadata": "…"
},
"playlistEditEndpoint": {
"actions": "…"
}
}
],
"stats": [
{
"runs": [
"…",
"…"
]
},
{
"simpleText": "29,077,346 views"
}
],
"briefStats": [
{
"runs": [
"…",
"…"
]
}
],
"playlistHeaderBanner": {
"heroPlaylistThumbnailRenderer": {
"thumbnail": {
"thumbnails": "…"
},
"maxRatio": 0.5625,
"trackingParams": "CCAQw-wJIhMIlcXviNXflQMVD8c_BB1R_QoD",
"onTap": {
"clickTrackingParams": "CCAQw-wJIhMIlcXviNXflQMVD8c_BB1R_QoDWhpWTFVVQkp5Y3NtZHV2WUVMODNSX1U0SnJpUZoBAxD6LMoBBF619W8=",
"commandMetadata": "…",
"watchEndpoint": "…"
},
"thumbnailOverlays": {
"thumbnailOverlayHoverTextRenderer": "…"
}
}
},
"shareButton": {
"buttonRenderer": {
"style": "STYLE_MONO_TONAL_OVERLAY",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"icon": {
"iconType": "SHARE"
},
"navigationEndpoint": {
"clickTrackingParams": "CB4Q8FsiEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"commandMetadata": "…",
"shareEntityServiceEndpoint": "…"
},
"accessibility": {
"label": "Share"
},
"tooltip": "Share",
"trackingParams": "CB4Q8FsiEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"accessibilityData": {
"accessibilityData": "…"
}
}
},
"playButton": {
"buttonRenderer": {
"style": "STYLE_MONO_FILLED_OVERLAY",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"text": {
"simpleText": "Play all"
},
"icon": {
"iconType": "PLAY_ARROW"
},
"navigationEndpoint": {
"clickTrackingParams": "CB0Q2M8CIhMIlcXviNXflQMVD8c_BB1R_QoDWhpWTFVVQkp5Y3NtZHV2WUVMODNSX1U0SnJpUZoBAxD6LMoBBF619W8=",
"commandMetadata": "…",
"watchEndpoint": "…"
},
"trackingParams": "CB0Q2M8CIhMIlcXviNXflQMVD8c_BB1R_QoD"
}
},
"shufflePlayButton": {
"buttonRenderer": {
"style": "STYLE_MONO_TONAL_OVERLAY",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"text": {
"simpleText": "Shuffle"
},
"icon": {
"iconType": "SHUFFLE"
},
"navigationEndpoint": {
"clickTrackingParams": "CBwQsssCIhMIlcXviNXflQMVD8c_BB1R_QoDWhpWTFVVQkp5Y3NtZHV2WUVMODNSX1U0SnJpUZoBAxD6LMoBBF619W8=",
"commandMetadata": "…",
"watchEndpoint": "…"
},
"trackingParams": "CBwQsssCIhMIlcXviNXflQMVD8c_BB1R_QoD"
}
},
"cinematicContainer": {
"cinematicContainerRenderer": {
"backgroundImageConfig": {
"thumbnail": "…"
},
"gradientColorConfig": [
"…",
"…",
{
"_more_items": 1
}
],
"config": {
"lightThemeBackgroundColor": 4284825647,
"darkThemeBackgroundColor": 4284825647,
"colorSourceSizeMultiplier": 2,
"applyClientImageBlur": true
}
}
},
"byline": [
{
"playlistBylineRenderer": {
"text": "…"
}
},
{
"playlistBylineRenderer": {
"text": "…"
}
},
{
"_more_items": 1
}
]
}
},
"metadata": {
"playlistMetadataRenderer": {
"title": "Uploads from Marques Brownlee",
"androidAppindexingLink": "android-app://com.google.android.youtube/http/www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ",
"iosAppindexingLink": "ios-app://544007664/vnd.youtube/www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ"
}
},
"trackingParams": "CAAQhGciEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"topbar": {
"desktopTopbarRenderer": {
"logo": {
"topbarLogoRenderer": {
"iconImage": {
"iconType": "YOUTUBE_LOGO"
},
"tooltipText": {
"runs": "…"
},
"endpoint": {
"clickTrackingParams": "CBoQsV4iEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"commandMetadata": "…",
"browseEndpoint": "…"
},
"trackingParams": "CBoQsV4iEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D"
}
},
"searchbox": {
"fusionSearchboxRenderer": {
"icon": {
"iconType": "SEARCH"
},
"placeholderText": {
"runs": "…"
},
"config": {
"webSearchboxConfig": "…"
},
"trackingParams": "CBYQ7VAiEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"searchEndpoint": {
"clickTrackingParams": "CBYQ7VAiEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"commandMetadata": "…",
"searchEndpoint": "…"
},
"clearButton": {
"buttonRenderer": "…"
},
"showImageSourceDialog": {
"clickTrackingParams": "CBYQ7VAiEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"showDialogCommand": "…"
},
"disableAiAppearance": true
}
},
"trackingParams": "CAoQq6wBIhMIlcXviNXflQMVD8c_BB1R_QoD",
"topbarButtons": [
{
"topbarMenuButtonRenderer": {
"icon": "…",
"menuRequest": "…",
"trackingParams": "CBQQ_qsBGAAiEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"accessibility": "…",
"tooltip": "Settings",
"style": "STYLE_DEFAULT"
}
},
{
"buttonRenderer": {
"style": "STYLE_SUGGESTIVE",
"size": "SIZE_SMALL",
"text": "…",
"icon": "…",
"navigationEndpoint": "…",
"trackingParams": "CBMQ1IAEGAEiEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"targetId": "topbar-signin"
}
}
],
"hotkeyDialog": {
"hotkeyDialogRenderer": {
"title": {
"runs": "…"
},
"sections": [
"…",
"…",
{
"_more_items": 2
}
],
"dismissButton": {
"buttonRenderer": "…"
},
"trackingParams": "CBEQteYDIhMIlcXviNXflQMVD8c_BB1R_QoD"
}
},
"backButton": {
"buttonRenderer": {
"trackingParams": "CBAQvIYDIhMIlcXviNXflQMVD8c_BB1R_QoD",
"command": {
"clickTrackingParams": "CBAQvIYDIhMIlcXviNXflQMVD8c_BB1R_QoDygEEXrX1bw==",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
}
}
},
"forwardButton": {
"buttonRenderer": {
"trackingParams": "CA8QvYYDIhMIlcXviNXflQMVD8c_BB1R_QoD",
"command": {
"clickTrackingParams": "CA8QvYYDIhMIlcXviNXflQMVD8c_BB1R_QoDygEEXrX1bw==",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
}
}
},
"a11ySkipNavigationButton": {
"buttonRenderer": {
"style": "STYLE_DEFAULT",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"text": {
"runs": "…"
},
"trackingParams": "CA4Q8FsiEwiVxe-I1d-VAxUPxz8EHVH9CgM=",
"command": {
"clickTrackingParams": "CA4Q8FsiEwiVxe-I1d-VAxUPxz8EHVH9CgPKAQRetfVv",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
}
}
},
"voiceSearchButton": {
"buttonRenderer": {
"style": "STYLE_DEFAULT",
"size": "SIZE_DEFAULT",
"isDisabled": false,
"serviceEndpoint": {
"clickTrackingParams": "CAsQ7a8FIhMIlcXviNXflQMVD8c_BB1R_QoDygEEXrX1bw==",
"commandMetadata": "…",
"signalServiceEndpoint": "…"
},
"icon": {
"iconType": "MICROPHONE_ON"
},
"tooltip": "Search with your voice",
"trackingParams": "CAsQ7a8FIhMIlcXviNXflQMVD8c_BB1R_QoD",
"accessibilityData": {
"accessibilityData": "…"
}
}
}
}
},
"microformat": {
"microformatDataRenderer": {
"urlCanonical": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ",
"title": "Uploads from Marques Brownlee",
"description": "",
"thumbnail": {
"thumbnails": [
{
"url": "https://i.ytimg.com/vi/_oRgdlJUD18/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBwlFiuuf-O763vrApAZcbpkiCvHw&days_since_epoch=20653",
"width": 480,
"height": 270
}
],
"sampledThumbnailColor": {
"red": 101,
"green": 64,
"blue": 47
},
"darkColorPalette": {
"section2Color": 3350551,
"iconInactiveColor": 9666422,
"iconDisabledColor": 5851715
},
"vibrantColorPalette": {
"iconInactiveColor": 10058091
}
},
"siteName": "YouTube",
"appName": "YouTube",
"androidPackage": "com.google.android.youtube",
"iosAppStoreId": "544007664",
"iosAppArguments": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ",
"ogType": "website",
"urlApplinksWeb": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ&feature=applinks",
"urlApplinksIos": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ&feature=applinks",
"urlApplinksAndroid": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ&feature=applinks",
"urlTwitterIos": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ&feature=twitter-deep-link",
"urlTwitterAndroid": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ&feature=twitter-deep-link",
"twitterCardType": "summary",
"twitterSiteHandle": "@YouTube",
"schemaDotOrgType": "http://schema.org/WebPage",
"noindex": false,
"unlisted": false,
"linkAlternates": [
{
"hrefUrl": "http://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ"
},
{
"hrefUrl": "android-app://com.google.android.youtube/http/youtube.comhttp://www.youtube.com/playlist?list=UUBJycsmduvYEL83R_U4JriQ"
},
{
"_more_items": 1
}
]
}
},
"sidebar": {
"playlistSidebarRenderer": {
"items": [
{
"playlistSidebarPrimaryInfoRenderer": {
"thumbnailRenderer": "…",
"title": "…",
"stats": "…",
"menu": "…",
"thumbnailOverlays": "…",
"navigationEndpoint": "…",
"showMoreText": "…"
}
},
{
"playlistSidebarSecondaryInfoRenderer": {
"videoOwner": "…",
"button": "…"
}
}
],
"trackingParams": "CAEQk-8CIhMIlcXviNXflQMVD8c_BB1R_QoD"
}
}
}
}
このドキュメントを最初の判断材料とし、継続的な利用のためにエンドポイントを接続する前に、料金、プラットフォームのカバー範囲、連携ルールを確認してください。
これらの回答を参考に、この API メソッドがワークフロー、バージョンの選択、導入計画に合うかどうかを判断してください。
このメソッドは 再生リスト に対して「再生リスト ID による動画」を実行します。以下のコンパクトなレスポンス例で、フィールドの正確な構造を確認できます。
新しい連携では、正規化された構造を提供する V2 を選んでください。V1 は、既にプラットフォーム固有の形式を処理しているクライアントとの互換性のためにのみ使用してください。
API キーを作成し、リクエストヘッダーで送信し、表の必須パラメーターを指定してください。コード例には、正しいパスとリクエスト構造が既に含まれています。