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

如何通过Youtube API正确获取我的完整订阅者列表?

YouTube API subscriptions.list 仅返回部分订阅者问题排查与修复

核心原因

  • youtube.subscriptions.list接口的mySubscribers参数存在固有返回限制:仅返回订阅时间较近、且用户主动将「订阅列表」设为公开状态的订阅者,无论频道总订阅量多少,该接口最多仅能返回最近1000条符合条件的订阅记录,更早的订阅记录即便用户设置为公开订阅也不会被接口返回。
  • 新订阅数据存在同步延迟:新产生的订阅行为会有24~48小时的API缓存周期,刚注册的测试账号订阅后不会立刻出现在接口返回结果中。
  • 频道匹配错误:如果使用的是品牌频道而非个人账号频道,OAuth2认证时必须明确选择目标频道,否则API返回的是登录个人账号的订阅者列表,而非目标品牌频道的订阅者。
  • 权限拦截概率:当前使用的https://www.googleapis.com/auth/youtube权限足够,可额外添加https://www.googleapis.com/auth/youtube.readonly权限降低权限拦截概率。

代码可优化点

你现有的分页逻辑存在冗余,且缺少错误捕获,可调整为以下形式:

async function doGoogleScan() {
  try {
    let request = await youtube.subscriptions.list({
      part: "snippet",
      auth: googleClient,
      mySubscribers: true,
      maxResults: 50,
      pageToken: googleNextKey
    });

    // 输出当前页订阅者ID
    for (let entry of request.data.items) {
      console.log("sub: " + entry.snippet.channelId);
    }

    // 无下一页时终止遍历,无需重复循环
    if (!request.data.nextPageToken) {
      console.log("===== 所有可获取的订阅者遍历完成,API可返回总数量:", request.data.pageInfo.totalResults, " =====");
      googleScanRunning = false;
      return;
    }

    googleNextKey = request.data.nextPageToken;
    setTimeout(doGoogleScan, 3000);
  } catch (err) {
    console.error("API请求异常:", err.response?.data || err.message);
    googleScanRunning = false;
  }
}

补充说明

如果需要获取全量订阅者数据,目前公开的YouTube Data API没有提供对应的能力,仅可通过YouTube Studio后台的订阅者导出功能获取完整列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:42:00