GitHub 代码搜索

用 GitHub 搜索 API 检索仓库、Issue 和 Pull Request

通过 HTTP 检索 GitHub,一次拿到仓库、Issue 和 Pull Request,每条结果带 `kind`,不需要自己管理 GitHub token 和速率限制。

接口
POST https://api.search1api.com/search
GitHub 搜索结果包含什么

结果的 JSON 结构与其他引擎一致,并额外带上能区分仓库和讨论串的字段。

1
每条结果都有 kind

`kind` 是 `repo`、`issue`、`pr` 或 `discussion`,解析时不用看 URL 就能分支。

2
仓库的 star 数

仓库摘要形如 `Rust | 5113 stars | description`。`stars` 和 `language` 也作为独立字段返回。

3
讨论串的评论数

Issue 摘要以 `TanStack/router · issue · open · 2 comments` 开头。Pull Request 和 Discussion 是同一套格式。

适用于

编程 agent / 故障排查 / 依赖调研

代码,以及它周围的讨论串,不需要 GitHub token

把 `search_service` 设为 `github`,结果会把仓库和匹配的 Issue、Pull Request 混在一起返回。接口地址、鉴权方式和共用的结果结构与其他引擎完全一致。加上 `is:issue` 这类 GitHub 修饰符,可以只搜一种类型。

一页里会混多种 kind

像 hydration 报错这样的查询,返回的是匹配的 Issue 和 Discussion,而不只是仓库。结果先按查询词命中数、再按 star 数排序,所以当别的 kind 也命中时,一页不会被同一种占满。

用修饰符只搜一种类型

加上 `is:issue` 或 `stars:>1000` 这类 GitHub 修饰符,就只搜那一类。不加修饰符时,仓库、Issue 和 Pull Request 都会包含。

按创建日期过滤 time_range

`time_range` 把仓库和讨论串限制在窗口内 *创建* 的那些。以前是按最后一次 push 过滤仓库,所以「本周」会混进好几年前的仓库。

不需要处理 GitHub 速率限制

请求按 Search1API 积分计费,而不是走 GitHub token,因此没有按 token 的小时级上限要绕开。Discussion 另外需要服务侧的 GitHub token;没有的话,仓库、Issue 和 Pull Request 仍会返回。

什么是 GitHub 搜索 API?

GitHub 搜索 API 是一种 HTTP 接口,把 GitHub 仓库、Issue、Pull Request 和 Discussion 以结构化结果返回。GitHub 自己也提供搜索端点,但需要个人访问令牌,对搜索单独施加了较低的速率限制,并且返回的载荷很大,喂给模型之前还要先做缩减。Search1API 把 GitHub 作为 Search 接口的一个搜索服务提供,每条结果带 `kind`,仓库带语言和 star 数,讨论串带评论数,JSON 结构与其他引擎一致。编程 agent 因此可以在一次工具调用里同时完成「找到库」和「找到描述这次失败的 Issue」。

接入路径

典型流程

通过 HTTP 检索 GitHub,一次拿到仓库、Issue 和 Pull Request,每条结果带 `kind`,不需要自己管理 GitHub token 和速率限制。

1

把 `search_service` 设为 `github` 后发送查询。

2

先看 `kind`。`repo` 就按竖线切分摘要拿语言和 star 数;`issue` 或 `pr` 的摘要里已经有仓库、状态和评论数。

3

只要讨论串时加上 `is:issue`。流程需要 README 或 Issue 正文时,设置 `crawl_results`。

一次请求,代码和它周围的讨论串

一次调用即可检索 GitHub 仓库、Issue 和 Pull Request,每条结果带 kind,多数情况下不需要再发一次请求就能选定库或对应的 Issue。

bash
curl -X POST https://api.search1api.com/search \
-H "Authorization: Bearer $SEARCH1API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "tanstack start hydration",
"search_service": "github",
"max_results": 5
}'

适合场景

改代码之前需要先找库、或找描述这次失败的 Issue 的编程 agent。

故障排查时希望返回 GitHub 讨论串,而不只是仓库。

追踪哪些项目正在起势的技术调研。

把包名解析到源码仓库的文档工具。

常见问题

和 GitHub 官方搜索 API 有什么区别?

GitHub 自己的搜索端点需要个人访问令牌,并且对搜索请求单独施加了较低的速率限制。Search1API 按自己的积分计费,不需要申请和轮换 GitHub token,返回的是带 `kind` 的紧凑结果——仓库带语言和 star 数,讨论串带评论数——而不是需要先缩减的大 JSON 对象。

需要 GitHub token 吗?

不需要。鉴权用的是 Search1API 的 key。请求是向 https://api.search1api.com/search 发 POST,把 `search_service` 设为 `github`。只有 Discussion 额外需要服务侧的 GitHub token;没有的话,其他 kind 仍会返回。

可以只搜 Issue 吗?

可以。加上 `is:issue` 或 `is:pr` 这类 GitHub 修饰符,就只搜那一类。不加修饰符时,仓库、Issue 和 Pull Request 会混在一起。Discussion 只在配置了服务侧 GitHub token 时才会包含。

可以拿到仓库的 README 吗?

可以。把 `crawl_results` 设为需要抓取的结果数量,成功抓取的页面会包含 `content` 字段,内容是 markdown 格式的正文。抓取失败的结果不返回 `content`,也不计费。

GitHub 搜索的费用是多少?

每次搜索消耗 1 积分,通过 `crawl_results` 每成功抓取一个页面追加 1 积分。按 $1 = 1,000 积分的充值基础价计算,1,000 次搜索为 $1。注册即送 100 个免费积分,无需信用卡。

还支持哪些开发者相关的来源?

同一个 Search 接口还支持论文的 `arxiv`、社区讨论的 `reddit` 和帖子的 `x`,加上通用网页引擎和中文引擎,一套契约共 19 个引擎。

可以用 Python、JavaScript 或 cURL 调用吗?

可以。Search1API 是 REST API,任何 HTTP 客户端都能调用,GitHub 是一个参数取值而不是另一套接入。官方的 TypeScript 与 Python SDK、CLI 和 MCP 服务器都接受同样的 `search_service` 值。