DeepSeek Search API:价格与 Python 搜索到抓取示例
依据官方文档介绍 DeepSeek Search API 的 Python 示例、Search 与 Fetch 区别、按次价格、限时免费范围及请求处理。
以 Markdown 阅读文档核对日期:2026 年 10 月 20 日。下方示例已使用固定测试数据在本地检查,尚未调用收费的真实接口。
DeepSeek Search API 让应用能够获取网页搜索结果。配套的 Fetch API 则将单个网页读取为 Markdown。DeepSeek 于 2026 年 10 月 17 日开放这两个接口,分别按调用次数计费。按照公布的美元价格表,两者每 1,000 次应计费请求均为 $0.75。它们使用 DeepSeek API 密钥和官方地址 api.deepseek.com。来源:发布公告、价格说明。
本指南演示先搜索一次,再按需抓取一个网页。示例使用的是 DeepSeek 自己的服务,并非介绍 SeedRouter 提供的 Search 或 Fetch 接口。
DeepSeek Search API 与 Fetch API 有什么区别
Search 用来找到候选网页,Fetch 用来读取你选定的网页。
| 操作 | 官方接口 | 有用的输出 |
|---|---|---|
| Search | POST https://api.deepseek.com/v1/tools/search | 包含网页 URL 和描述字段的 results 数组。 |
| Fetch | POST https://api.deepseek.com/v1/tools/fetch | 网页标题及 Markdown 格式的正文。 |
两者均接受 JSON,并使用 bearer 身份验证。独立的搜索请求包含 query,抓取请求包含 url。它们是不同的请求,并非打开某个设置就能让每次聊天补全自动获得联网能力。官方 Search 与 Fetch 指南说明了这两个接口。
Search 还接受 need_content。当其为 true 时,搜索结果可以包含网页正文。在发起另一次请求前,先检查已返回的内容:如果已经包含所需信息,可能就不需要单独调用 Fetch。
运行 Python 示例前的准备
你需要 Python 3、能够向外访问 HTTPS 的网络,以及拥有相应账号权限的 DeepSeek API 密钥。在运行脚本的终端中,将密钥写入环境变量:
export DEEPSEEK_API_KEY="your-deepseek-api-key"示例使用 Python 标准库,无须安装额外软件包。它会发起一次 Search 请求。如果有结果,就打印第一条结果的标题和 URL,再抓取该网页。运行可能产生费用;密钥不会被打印。
Python 示例:搜索、选择结果并抓取正文
将以下代码保存为 deepseek_search.py。运行前,将 QUERY 改成你需要查询的信息。
import json
import os
import urllib.error
import urllib.request
BASE_URL = "https://api.deepseek.com"
QUERY = "Python documentation pathlib"
def call(path, payload):
request = urllib.request.Request(
BASE_URL + path,
data=json.dumps(payload).encode("utf-8"),
headers={
"Authorization": "Bearer " + os.environ["DEEPSEEK_API_KEY"],
"Content-Type": "application/json",
},
method="POST",
)
try:
with urllib.request.urlopen(request, timeout=30) as response:
return json.load(response)
except urllib.error.HTTPError as error:
raise RuntimeError(f"DeepSeek returned HTTP {error.code}") from None
def main():
search = call(
"/v1/tools/search",
{"query": QUERY, "count": 5, "need_content": False},
)
results = search.get("results", [])
if not results:
print("No search results; no Fetch request was made.")
return
selected = results[0]
print(selected.get("title", "Untitled result"))
print(selected["url"])
page = call("/v1/tools/fetch", {"url": selected["url"]})
content = page.get("content", "")
if not content:
print("The selected page returned no content.")
return
print(page.get("title", ""))
print(content)
if __name__ == "__main__":
main()使用以下命令运行:
python3 deepseek_search.py这是一个简短示例,因此直接选择第一条结果。在实际应用中,应选择与问题匹配的网页,检查域名及发布背景,并将 URL 与提取的文本一同保留。即使是排名第一的搜索结果,也仍需确认它与要生成的答案相关。
请求结构遵循 DeepSeek 的 Search 参考文档和 Fetch 参考文档。本地语法与固定数据测试能够验证程序的请求构造和分支处理,但不能证明真实账号的访问权限、响应速度或检索质量。
DeepSeek Search API 价格:哪些请求会计费?
公开的美元价格为:Search 每 1,000 次成功且应计费的请求收取 $0.75,Fetch 价格相同。没有搜索结果的请求不计费;Fetch 在成功获取正文时计费。通过 count 请求的结果数量,不会改变一次搜索的价格。计费条件请查阅当前价格表。
例如,1,000 次应计费搜索之后,再进行 1,000 次应计费抓取,检索费用为 $1.50。这只是根据上述单价计算出的示例,并非实测账单,也不保证某个具体查询一定会返回什么。之后用模型总结这些网页所消耗的 token,属于另一项费用。
临时免费期的适用范围更窄。DeepSeek 表示,其 API 用户通过 DeepSeek Harness、Claude Code 和 Codex 中的服务端工具发起的 Search/Fetch 调用,暂不计费。这部分用量将从 2026 年 10 月 31 日 16:00 UTC 开始计费,即北京时间 11 月 1 日 00:00。该公告并不意味着本指南中的独立 Python 请求普遍免费。官方公告。
需要考虑的参数和失败情况
文档规定搜索查询长度为 1–128 个 Unicode 字符。count 默认为 10,接受 1–50。Python 示例有意请求五条结果,并将网页正文的读取留给后续 Fetch 请求。在添加其他字段之前,请查阅 Search 参考文档。
结果数组为空,表示搜索成功但没有匹配项。示例会在这里停止。HTTP 错误单独处理;超时也会使执行停止,不会自动创建另一次请求。对于更大的应用,应明确重试次数限制和额外支出。
抓取到的 Markdown 属于外部来源资料。应保留源 URL,检查内容是否回答了问题,并把网页中嵌入的指令视为网页内容,而非对应用下达的指令。如果将内容传给语言模型,应在提示词中保持这一区分,并在最终答案中保留引用。
常见问题
DeepSeek API 可以联网搜索吗?
可以。独立的 Search 和 Fetch 接口已有文档说明。调用普通聊天接口,与调用这些检索接口,是不同的操作;请遵循所构建工作流程对应的接口规范。
DeepSeek Search API 有免费档位吗?
引用的公告描述的是特定编程智能体集成中,服务端工具调用的临时免费安排。它并未确立适用于所有独立 Search 或 Fetch 请求的通用免费档位。批量运行前,应先核对当前计费页面。
每次搜索之后都需要调用 Fetch 吗?
不需要。搜索可能已提供足够的信息,尤其是在 need_content: true 返回了可用正文时。当需要单独读取选中的网页时,Fetch 才有用。
先跑通一条检索路径
DeepSeek Search API 用来查找来源,Fetch 用来读取选中的网页。先从一个查询开始,检查结果和正文,再决定应用是否需要更多网页或模型生成的摘要。关于同日公布的独立模型更新,请阅读 10 月 17 日检查点更新:基准测试与变化。



