You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过YouTube API获取指定频道的全部视频?

YouTube Data API 拉取指定频道全量视频操作指南

1. 前置准备

  • 准备可用的Google账号,在Google Cloud控制台创建新项目,搜索启用「YouTube Data API v3」,进入「凭据」页面创建API密钥,该密钥为后续所有接口调用的必填参数。
  • 获取目标频道的唯一ID:公开频道可直接从主页URL提取,格式为https://www.youtube.com/channel/【频道ID】;使用自定义域名的频道,可在页面源码中搜索externalId字段获取对应ID。

2. 核心实现逻辑

YouTube API不支持直接查询频道全量视频,需分两步实现:

  1. 调用Channels接口获取频道专属的「上传视频播放列表ID」,频道所有公开上传的视频都会自动收录到该播放列表中
  2. 调用PlaylistItems接口分页拉取该播放列表的所有条目,直到没有下一页标识为止

3. 具体接口调用步骤

步骤1:获取上传播放列表ID

调用Channels接口,携带以下参数:

  • part:固定填contentDetails
  • id:填写目标频道的ID
  • key:填写你申请的API密钥
    从返回结果的items[0].contentDetails.relatedPlaylists.uploads字段中,即可获取到上传视频播放列表ID。

步骤2:分页拉取全量视频

调用PlaylistItems接口,第一次请求携带以下参数:

  • part:按需填写,常用组合为snippet,contentDetails,statistics,分别对应视频基础信息、发布信息、播放/点赞等统计数据
  • playlistId:填写上一步获取的上传播放列表ID
  • maxResults:可填范围为1-50,建议填最大值50减少请求次数
  • key:填写你的API密钥
    如果频道视频量超过50条,返回结果会携带nextPageToken字段,后续请求新增pageToken参数,值填上次返回的nextPageToken,重复请求直到返回结果中无nextPageToken,即拉完所有公开视频。

4. Python 示例代码

import requests

# 替换为你自己的参数
API_KEY = "YOUR_API_KEY"
TARGET_CHANNEL_ID = "TARGET_CHANNEL_ID"

# 第一步:获取上传播放列表ID
channel_res = requests.get(
    url="https://www.googleapis.com/youtube/v3/channels",
    params={
        "part": "contentDetails",
        "id": TARGET_CHANNEL_ID,
        "key": API_KEY
    }
).json()
uploads_playlist_id = channel_res["items"][0]["contentDetails"]["relatedPlaylists"]["uploads"]

# 第二步:分页拉取所有视频
all_videos = []
next_page_token = None

while True:
    playlist_res = requests.get(
        url="https://www.googleapis.com/youtube/v3/playlistItems",
        params={
            "part": "snippet,contentDetails,statistics",
            "playlistId": uploads_playlist_id,
            "maxResults": 50,
            "key": API_KEY,
            "pageToken": next_page_token
        }
    ).json()
    all_videos.extend(playlist_res["items"])
    next_page_token = playlist_res.get("nextPageToken")
    # 没有下一页时终止循环
    if not next_page_token:
        break

print(f"拉取完成,共获取{len(all_videos)}条视频")
# 后续可自行从all_videos中提取需要的字段存储

5. 注意事项

  • 配额限制:默认每个Google Cloud项目的YouTube API日配额为10000点,调用1次Channels接口消耗1点,调用1次PlaylistItems接口消耗1点,正常拉取数十万条以内的视频不会超出配额,量级更大的需求可申请配额扩容。
  • 内容权限:普通API密钥仅能拉取频道公开的视频,未公开、私有视频需要频道所有者通过OAuth 2.0授权后才能拉取。
  • 异常处理:实际使用时建议添加错误捕获逻辑,返回403状态码一般为配额耗尽,返回429状态码为请求频率过高,需添加延迟后重试。
  • 性能优化:可新增fields参数指定需要返回的字段,减少响应体积,不会额外消耗配额。

内容的提问来源于stack exchange,提问作者Arnav K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:45:00