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

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

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

嘿,这个问题我太熟悉了!你现在碰到的是YouTube API的分页限制——虽然maxResults最多只能设50,但借助分页令牌(pageToken),就能循环遍历拿到频道的所有公开视频,具体操作方法如下:

核心原理:利用分页令牌实现循环请求

YouTube API的搜索(或播放列表项)接口在返回结果时,只要还有未返回的内容,就会在响应JSON里包含nextPageToken字段。你需要做的就是:

  • 先发起第一次请求(不带pageToken),拿到第一批50条视频和nextPageToken
  • 用这个令牌构造新的请求,继续获取下一批视频
  • 重复这个过程,直到响应里不再出现nextPageToken,就说明所有视频都获取完成了

具体操作步骤

方法1:基于原搜索接口的分页实现

  1. 首次调用你现有的请求:
    GET https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=CHANNEL_ID&type=video&maxResults=50&key=API_KEY
    
  2. 解析返回的JSON结果:
    • 提取items数组里的视频ID
    • 检查是否存在nextPageToken字段,如果有,记录下这个令牌值
  3. 构造下一次请求,添加pageToken参数:
    GET https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=CHANNEL_ID&type=video&maxResults=50&key=API_KEY&pageToken=你的nextPageToken值
    
  4. 重复步骤2和3,直到返回结果中没有nextPageToken为止

方法2:更高效的播放列表遍历法(推荐)

搜索接口的配额消耗相对较高,而且可能漏掉部分视频。更优的方式是先获取频道的「上传视频播放列表」,再遍历这个列表:

  1. 获取频道的上传播放列表ID:
    GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=CHANNEL_ID&key=API_KEY
    
    从响应的contentDetails.relatedPlaylists.uploads字段中提取播放列表ID
  2. 分页遍历这个播放列表:
    首次请求:
    GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=刚才拿到的上传列表ID&maxResults=50&key=API_KEY
    
    后续同样通过nextPageToken循环请求,直到拿完所有内容

注意事项

  • 配额限制:每次API调用都会消耗配额,视频数量多的话要注意控制请求频率,避免触发配额上限导致请求失败
  • 视频范围:无论哪种方法,都只能获取频道的公开视频,私有、未列出的视频是无法通过API获取的
  • 异常处理:循环过程中要做好错误处理,比如网络请求失败、令牌过期等情况的重试逻辑

内容的提问来源于stack exchange,提问作者Thomas Beyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:38:11