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

GitHub REST API获取仓库全部历史星标者及星标时间数据不全如何解决

解答

你没有遗漏查询参数,该问题是GitHub REST API的固有约束导致的:

GitHub 对所有REST列表类接口的分页返回设置了硬上限,/repos/{owner}/{repo}/stargazers 接口最多仅支持返回前40000条星标记录,无论调整per_page还是其他基础参数都无法突破这个限制。

解决方法

方法1:使用since参数分段拉取(适配现有REST API逻辑)

该接口支持传入since查询参数,参数值为ISO 8601格式的时间戳,调用后会返回该时间点之后产生的星标记录。你可以按照以下步骤操作:

  • 按现有逻辑先拉取前40000条记录,记录最后一条返回结果的starred_at字段值
  • 将该时间值作为since参数拼到请求URL中,发起下一轮拉取
  • 重复上述步骤,直到某次请求返回的结果为空,即完成全量拉取

示例请求URL格式:
https://api.github.com/repos/tensorflow/tensorflow/stargazers?per_page=100&since=2020-01-01T00:00:00Z

你当前配置的请求头Accept: application/vnd.github.v3.star+json不需要修改,这个头是获取starred_at字段的必要条件,配置正确。

方法2:切换到GitHub GraphQL API

GraphQL API没有40000条的返回上限,你可以直接构造查询批量拉取星标记录,只需要注意控制单页数量不超过100条,同时遵守平台速率限制即可。

注意事项

  • 未认证的GitHub API请求每小时仅允许发起60次,拉取全量159k星标需要1590次请求,建议你在请求中携带个人访问令牌(PAT),认证后每小时请求上限会提升到5000次,完全满足拉取需求
  • 拉取过程中如果遇到403响应码,检查返回头的X-RateLimit-Remaining字段确认是否触碰到速率限制,触发后等待X-RateLimit-Reset对应的时间戳之后再继续请求即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:06:02