跳到主要内容

网页搜索与抓取

Search 接口和 Fetch 接口为 Agent 与 RAG 应用提供实时网页内容:

  • Search 接口按 query 搜索网页,返回结构化结果。
  • Fetch 接口抓取单个网页,以 Markdown 文本返回页面内容。

两者都是原始 JSON API,使用与 DeepSeek API 相同的 Bearer 鉴权。

Base URL 为 https://api.deepseek.com:

APIEndpoint
SearchPOST https://api.deepseek.com/v1/tools/search
FetchPOST https://api.deepseek.com/v1/tools/fetch

完整的请求与响应 Schema 请参考 Search API Reference 和 Fetch API Reference。


鉴权​

在请求头中携带 API Key 和 JSON 内容类型:

请求头必填值
Authorization是Bearer <DeepSeek API Key>
Content-Type是application/json

Search 接口​

请求​

curl https://api.deepseek.com/v1/tools/search \
-H "Authorization: Bearer <DeepSeek API Key>" \
-H "Content-Type: application/json" \
-d '{
"query": "DeepSeek V4 模型 发布",
"count": 5,
"need_content": true
}'
import requests

response = requests.post(
"https://api.deepseek.com/v1/tools/search",
headers={
"Authorization": "Bearer <DeepSeek API Key>",
},
json={
"query": "DeepSeek V4 模型 发布",
"count": 5,
"need_content": True,
},
)
response.raise_for_status()

for result in response.json()["results"]:
print(result["title"], result["url"])
print(result["summary"])

请求字段:

字段类型必填默认值说明
querystring是-搜索词,1~128 个 Unicode 字符,不能全为空白,支持下方列出的搜索语法。
countinteger否10返回条数,1~50。
ori_questionstring否-触发搜索的用户原始问题,1~128 个字符,有助于更好地理解搜索意图,传 null 视为未提供。
localizationstring否""用于优先返回本地化搜索结果的 IP 地址。
need_contentboolean否false是否在 content 中返回网页正文,为 false 时 content 恒为空字符串。

请求体中的未知字段会被忽略。

搜索语法​

query 中的搜索语法会原样传递给搜索服务。下表中的示例将操作符与搜索词组合使用;你可以在一个 query 中组合多个操作符。

操作符示例说明
site:DeepSeek site:github.com将结果限制在指定站点,指定多个时用空格分隔并通过 OR 连接,例如 DeepSeek site:github.com OR site:huggingface.co。
-site:DeepSeek -site:example.com排除指定站点,指定多个时用空格分隔。
-DeepSeek -广告排除包含指定关键词的网页,指定多个时用空格分隔。
-"..."DeepSeek -"release notes"排除包含指定短语的网页,短语内可以包含空格,指定多个时用空格分隔。
"..."DeepSeek "精确短语"精确匹配指定短语,指定多个时用空格分隔。
lang:DeepSeek lang:zh,en将结果限制在指定语言,多种语言用逗号分隔,例如 lang:zh,en。
after:DeepSeek after:2025 或 DeepSeek after:2025-01-01将结果限制在指定日期之后发布的网页。
before:DeepSeek before:2026 或 DeepSeek before:2026-06-01将结果限制在指定日期之前发布的网页。

例如:

{
"query": "DeepSeek 模型 site:github.com OR site:huggingface.co lang:zh after:2025",
"count": 10
}

响应​

请求成功时返回 HTTP 200 与 results 数组。搜索正常结束但没有匹配结果时,返回空数组。

{
"results": [
{
"rerank_score": 2.4,
"title": "DeepSeek V4 模型发布",
"url": "https://example.com/deepseek-v4",
"snippet": "DeepSeek V4 已上线,支持工具调用与长上下文。",
"summary": "DeepSeek 发布了 V4 模型。此次发布改进了工具调用与长上下文能力,适合 Agent 工作流。",
"content": "DeepSeek V4 现已正式上线……",
"site_name": "Example News",
"site_icon": "https://example.com/favicon.ico",
"date": "2026-06-01T00:00:00+00:00",
"authority": 3
}
]
}

results 中每一项包含以下字段:

字段类型说明
rerank_scorenumber排序分数,0~3 分,综合考虑相关性、权威性、时效性等维度,大于等于 1.5 分为优质结果。
titlestring标题。
urlstring结果链接。
snippetstring短摘要,与 query 相关,通常为 100~200 字符,适用于前端展现。
summarystring长摘要,与 query 相关,通常为 600~800 字符,适用于给模型阅读。
contentstring网页正文,need_content 为 false 或正文缺失时为空字符串。
site_namestring 或 null站点名称,缺失时为 null。
site_iconstring 或 null站点图标 URL,缺失时为 null。
datestring 或 null发布时间,统一为 UTC 的 RFC 3339 格式,未知时为 null。
authorityinteger网页权威性,0~4(-1 表示未知),大于等于 3 为极权威结果。

Fetch 接口​

请求​

curl https://api.deepseek.com/v1/tools/fetch \
-H "Authorization: Bearer <DeepSeek API Key>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/article"
}'
import requests

response = requests.post(
"https://api.deepseek.com/v1/tools/fetch",
headers={
"Authorization": "Bearer <DeepSeek API Key>",
},
json={"url": "https://example.com/article"},
)
response.raise_for_status()

page = response.json()
print(page["title"])
print(page["content"])

请求字段:

字段类型必填说明
urlstring是要抓取的网页地址,长度不超过 8192,必须为含 host 的 HTTP/HTTPS URL,且不能携带用户名或密码。

响应​

{
"title": "Example article",
"content": "# Example article\n\nArticle content."
}
字段类型说明
titlestring页面标题,缺失时为空字符串。
contentstring抓取后的 Markdown 正文。

Fetch 的结果受目标站点的可用性和访问策略影响。


错误​

错误响应使用 OpenAI 兼容的错误格式,param 字段恒为 null。

{
"error": {
"message": "'count' must be between 1 and 50",
"type": "invalid_request_error",
"param": null,
"code": "invalid_request_error"
}
}
HTTP 状态码说明
400请求头或请求体不合法,包括 JSON 格式错误或字段值无效。
401API Key 缺失或无效。
402账号余额不足。
403Fetch 请求被安全策略拒绝。
404Fetch 未能获取可用的网页内容,例如 URL 不可用、被站点策略拦截、目标站点返回错误、内容类型不受支持或页面没有可提取的 Markdown 正文。
408读取请求体超时。
413请求体超过大小限制。
429超过 Search 或 Fetch 的 QPS 限制。
500服务器内部错误。
504下游请求超时。

Search 和 Fetch 都是只读请求。遇到 HTTP 408、429 或 5xx 错误时,请等待后重试。遇到 HTTP 402 时,请先充值再重试。对于其它 4xx 错误,如不修改请求,请勿重试。


计费​

Search 和 Fetch 按请求次数计费,不按 token 或返回结果条数计费:

API计费单位价格
Search每 1,000 次成功请求5元
Fetch每 1,000 次成功请求5元

只有返回 HTTP 200 且产生结果的请求才会计费(Search 的 results 必须非空,Fetch 必须返回网页正文)。请求失败、搜索无结果或超时不计费。count 只控制返回的结果条数,不影响单次请求的价格。

Claude Code 和 Codex 中的网页搜索: 通过 Claude Code 的 Web Search 工具或 Codex 的 web_search 功能发起的搜索请求,在 Search API 上线后的前两周内免收 Search API 请求费用。此后将按 Search API 标准价格计费,具体开始计费时间将另行通知。


限速​

对每个账号,Search 和 Fetch 分别独立限速,互不占用额度:

APIQPS 限制
Search5
Fetch5

QPS(每秒请求数)限制按账号粒度计算,与使用哪个 API Key 无关,并与模型并发限制相互独立。超过账号级 QPS 限制的请求会收到 HTTP 429 错误码。除了账号级限制,Fetch 还针对目标域名有 QPS 限制,超过该限制也会收到 HTTP 429 错误码。