Python SDK

给 Python 用的网页搜索 API

官方 Python 客户端覆盖公开 API 的全部端点。认证、超时、限流重试、以及 deepcrawl 需要的轮询都由它接管,你的代码只需要关心搜索本身。

安装bash
pip install search1api
export SEARCH1API_API_KEY="your-api-key"
客户端替你处理什么

认证、超时、重试和 deepcrawl 轮询都已经写好了,你的代码只需要关心搜索本身。

1
一个客户端覆盖所有端点

search、news、crawl、screenshot、sitemap、trending、extract、deepcrawl。

2
可以分支判断的错误

认证、积分、参数校验、限流、服务端故障各有独立类型。

3
需要时可以异步

AsyncSearch1API 为 asyncio 提供同样的操作。

覆盖

search / news / crawl / screenshot / extract / deepcrawl

在 Python 里搜索网页

网页搜索 API 返回的是程序能直接读的结构化结果——每条包含标题、链接和正文——而不是一个还要你自己解析的 HTML 页面。这一点在 Python 里尤其重要,因为替代方案是去爬搜索结果页,然后每次页面结构一变就重写一遍解析器。Search1API 通过一个端点、覆盖十几个来源返回 JSON,摘要不够时还能把靠前结果的完整正文放进同一个响应里。

客户端替你处理的事

一个客户端覆盖所有端点

搜索、新闻、抓取、截图、站点链接、热榜、结构化提取、deepcrawl 都是同一个对象上的方法,覆盖公开 OpenAPI 契约。

可以分支判断的错误

认证、积分、参数校验、not found、限流、服务端故障各有独立的错误类型,都带着状态码和解析后的响应体。

只在安全的地方重试

30 秒超时,429 和临时性 5xx 自动重试两次。认证、支付、参数校验错误不重试,deepcrawl 任务的启动也不自动重试。

需要时可以异步

AsyncSearch1API 为 asyncio 提供同样的操作,可以当作异步上下文管理器使用。

二进制响应保持原样

截图返回的是图片字节而不是 JSON;客户端会把 content type 和 request ID 和响应体一起保留下来。

deepcrawl 不用自己写轮询

一次调用启动任务并等它完成。如果任务 ID 需要持久化,也有独立的 start、status、wait 方法。

快速开始

在控制台创建 key,设进环境变量,然后就能搜。传入 crawl_results,靠前的结果会在同一次调用里连整页正文一起返回。

search.pypython
from search1api import Search1API
client = Search1API() # reads SEARCH1API_API_KEY
response = client.search(
"latest AI agent frameworks",
max_results=10,
crawl_results=3,
)
for result in response["results"]:
print(result["title"], result["link"])

不用手写轮询的 deepcrawl

抓取整个站点通常意味着:启动任务、轮询状态、自己处理等待。客户端把这些收进一次调用,直接把完成后的归档 URL 交给你。

deepcrawl.pypython
result = client.deepcrawl("https://example.com", type="all")
print(result["zipUrl"])

覆盖哪些端点

不管从哪条路调用,消耗的积分都一样:搜索或新闻各 1 积分,每成功取回一个页面再加 1 积分。

大家用它做什么

把实时网页上下文和内部索引一起摄入的 RAG 管线。

跨多个来源查询、把结论写进文件的调研脚本。

盯着某个话题的新闻、定时发简报的任务。

读取结果背后页面正文而不是只拿摘要的数据采集。

按你所用框架把客户端包一层做成的 agent 工具。

常见问题

在 Python 里怎么搜索网页?

装上 search1api 包,把 SEARCH1API_API_KEY 设进环境变量,然后调用 client.search("你的查询")。返回是一个包含 results 列表的 dict,每条带标题、链接和正文。不用解析 HTML,也不用爬。

支持异步代码吗?

支持。AsyncSearch1API 为 asyncio 提供同样的操作,并且可以当异步上下文管理器用,不需要线程池就能接进已有的事件循环。

碰到限流会怎样?

429 会自动重试两次,临时性 5xx 同理。认证、支付、参数校验类错误会直接抛出而不重试——重试这些也解决不了问题。

可以用哪些搜索引擎?

Google、Bing、DuckDuckGo、Yahoo、GitHub、arXiv、Reddit、X、YouTube、Wikipedia、IMDb、微信公众号、哔哩哔哩、百度、360、夸克。在请求里用 search_service 指定即可。

有免费额度吗?

新账户免费赠送 100 积分且无需绑卡,相当于 100 次搜索。搜索或新闻各 1 积分,每成功取回一个页面再加 1 积分。

了解更多

开始在 Python 里搜索

两行装好,100 个免费积分够你试出来,不用绑卡。