DeepSeek 官方文件新增 Search 與 Fetch 兩支工具 API,讓 agent 與 RAG 應用直接取用即時網路內容。兩支 API 走同一組 bearer 認證,計價按成功請求次數:每 1,000 次 0.75 美元,與回傳幾筆結果無關。
貼上 Hacker News 後,討論聲量不小:一則貼文在 19 小時內收到 550 分、227 則留言(34 則一級留言)。討論方向卻不在「好方便」,而是三件事:價格打到多低、反爬蟲牆能不能過、「會不會付錢給被爬的內容作者」這句,沒有人正面回答。
本文分三部分:官方文件全文翻譯、Hacker News 網友反應整理,最後是一頁視覺懶人包。
官方文件翻譯
搜尋與抓取(Search & Fetch)
Search API 與 Fetch API 讓 agent 與 RAG 應用程式能夠存取即時網路內容。兩者都是純 JSON API,使用與 DeepSeek API 相同的 bearer 認證。Base URL 為 https://api.deepseek.com:
| API | Endpoint |
|---|---|
| Search | POST https://api.deepseek.com/v1/tools/search |
| Fetch | POST https://api.deepseek.com/v1/tools/fetch |
完整的 request 與 response schema 請見官方 Search API Reference 與 Fetch API Reference。
認證
在 request headers 中送出你的 API key 與 JSON content type:
| Header | 必填 | 值 |
|---|---|---|
Authorization |
是 | Bearer <DeepSeek API Key> |
Content-Type |
是 | application/json |
Search API:請求
curl https://api.deepseek.com/v1/tools/search \
-H "Authorization: Bearer <DeepSeek API Key>" \
-H "Content-Type: application/json" \
-d '{
"query": "DeepSeek V4 release",
"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 release",
"count": 5,
"need_content": True,
},
)
response.raise_for_status()
for result in response.json()["results"]:
print(result["title"], result["url"])
print(result["summary"])
Request 欄位:
| 欄位 | 型別 | 必填 | 預設值 | 說明 |
|---|---|---|---|---|
query |
string | 是 | 無 | 搜尋查詢,需含 1 至 128 個 Unicode 字元,不可全為空白,支援下方列出的查詢運算子。 |
count |
integer | 否 | 10 |
回傳結果數量,介於 1 至 50。 |
ori_question |
string | 否 | 無 | 觸發本次搜尋的使用者原始問題,1 至 128 字元,用於增進查詢理解;傳 null 視為未提供。 |
localization |
string | 否 | "" |
選用的 IP 位址,用於將搜尋結果本地化。 |
need_content |
boolean | 否 | false |
是否在 content 中回傳頁面內容;為 false 時 content 一律為空字串。 |
request body 中的未知欄位會被忽略。
查詢運算子
查詢會連同其搜尋語法原樣轉送。下列範例為運算子搭配搜尋詞;你可以在單一查詢中組合多個運算子。
| 運算子 | 範例 | 說明 |
|---|---|---|
site: |
DeepSeek site:github.com |
將結果限制在指定網站;要指定多個網站,以空格分隔各 site: 子句並用 OR 連接,例如 DeepSeek site:github.com OR site:huggingface.co。 |
-site: |
DeepSeek -site:example.com |
排除指定網站;多個網站以空格分隔。 |
- |
DeepSeek -advertisement |
排除含該詞的頁面;多個詞以空格分隔。 |
-"..." |
DeepSeek -"release notes" |
排除含該完整片語的頁面,片語可含空格;多個片語以空格分隔。 |
"..." |
DeepSeek "exact phrase" |
比對完整片語;多個片語以空格分隔。 |
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:en after:2025",
"count": 10
}
Search API:回應
成功請求會回傳 HTTP 200 與一個 results 陣列。正常搜尋但無結果時,回傳空陣列。
{
"results": [
{
"rerank_score": 2.4,
"title": "DeepSeek V4 model released",
"url": "https://example.com/deepseek-v4",
"snippet": "DeepSeek V4 is now available, with tool calling and long-context support.",
"summary": "DeepSeek has released the V4 model. The release adds improved tool calling and long-context support for agent workflows.",
"content": "DeepSeek V4 is now generally available...",
"site_name": "Example News",
"site_icon": "https://example.com/favicon.ico",
"date": "2026-06-01T00:00:00+00:00",
"authority": 3
}
]
}
results 中每一項包含:
| 欄位 | 型別 | 說明 |
|---|---|---|
rerank_score |
number | 0 至 3 的相關性分數,綜合相關性、權威性與時效性等訊號;1.5 以上視為高品質結果。 |
title |
string | 結果標題。 |
url |
string | 結果的 URL。 |
snippet |
string | 與查詢相關的簡短摘要,通常 100 至 200 字元,供 UI 顯示用。 |
summary |
string | 與查詢相關的長摘要,通常 600 至 800 字元,供模型閱讀用。 |
content |
string | 頁面內容;當 need_content 為 false 或內容不可用時為空。 |
site_name |
string 或 null | 網站名稱,不可用時為 null。 |
site_icon |
string 或 null | 網站 icon 的 URL,不可用時為 null。 |
date |
string 或 null | 發布時間(UTC),格式為 RFC 3339;未知時為 null。 |
authority |
integer | 頁面的權威等級,0 至 4(-1 表示未知);3 以上代表高度權威來源。 |
Fetch API
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"])
Request 欄位:
| 欄位 | 型別 | 必填 | 說明 |
|---|---|---|---|
url |
string | 是 | 要抓取的頁面 URL,最長 8192 字元,須為帶有 host 的 HTTP 或 HTTPS URL,且不得包含使用者名稱或密碼。 |
回應:
{
"title": "Example article",
"content": "# Example article\n\nArticle content."
}
| 欄位 | 型別 | 說明 |
|---|---|---|
title |
string | 頁面標題,取不到時為空字串。 |
content |
string | 抓取到的頁面內容,以 Markdown 文字表示。 |
抓取行為受目標網站的可用性與存取政策限制。
錯誤處理
錯誤遵循 OpenAI 相容的錯誤格式,param 欄位一律為 null。
{
"error": {
"message": "'count' must be between 1 and 50",
"type": "invalid_request_error",
"param": null,
"code": "invalid_request_error"
}
}
| HTTP 狀態碼 | 說明 |
|---|---|
| 400 | request headers 或 body 無效,包含 JSON 格式錯誤或欄位值不合法。 |
| 401 | API key 缺少或無效。 |
| 402 | 帳戶餘額不足。 |
| 403 | Fetch 請求被安全政策拒絕。 |
| 404 | Fetch 無法取得可用的頁面內容,例如 URL 不可用、URL 被網站政策封鎖、目標網站回報錯誤、不支援的 content type,或頁面無可萃取的 Markdown 內容。 |
| 408 | 讀取 request body 逾時。 |
| 413 | request body 過大。 |
| 429 | 超過 Search 或 Fetch 的 QPS 限制。 |
| 500 | 發生內部伺服器錯誤。 |
| 504 | 下游請求逾時。 |
Search 與 Fetch 皆為唯讀。遇到 HTTP 408、429 或 5xx 錯誤時,請稍候重試。遇到 HTTP 402 請先儲值再重試。其他 4xx 錯誤在未修改請求內容前不要重試。
計費
Search 與 Fetch 依成功請求次數計費,而非依 token 或回傳結果數量:
| API | 計價單位 | 價格 |
|---|---|---|
| Search | 每 1,000 次成功請求 | $0.75 |
| Fetch | 每 1,000 次成功請求 | $0.75 |
只有在回傳 HTTP 200 且產生結果時才計費:Search 須回傳非空的 results 陣列,Fetch 須回傳頁面內容。失敗的請求、空搜尋結果與逾時都不計費。count 僅控制回傳結果數量,不影響每請求價格。
官方另註明一段優惠:Search API 上線後頭兩週內,從 Claude Code 內建 Web Search 或 Codex web_search 送出的請求,不收費用;兩週後才適用標準價格。
速率限制
每個帳戶的 Search 與 Fetch 各自獨立限制,兩者流量互不消耗對方配額:
| API | QPS 上限 |
|---|---|
| Search | 5 |
| Fetch | 5 |
QPS(每秒請求數)限制以帳戶層級計算,不論使用哪一組 API key,且與模型併發限制分開計算。超過帳戶層級 QPS 上限的請求會收到 HTTP 429。除帳戶層級限制外,Fetch 另受每個網域的 QPS 限制,超過該限制同樣會收到 HTTP 429。
Hacker News 網友反應
討論串由 fagnerbrack 提交,標題就是價格本身:「DeepSeek search and fetch – $0.75 per 1000 successful requests」。到本文截稿,550 分、227 則留言,其中 34 則是直接回覆。
定價:全場最低,但便宜不等於好用
最大公約數是價格。有網友整理出同業行情,DeepSeek 幾乎是付費搜尋 API 的地板價,只在留言裡被找到一家更低:
| 供應商 | 每 1,000 次 | 備註 |
|---|---|---|
| Ceramic.ai | $0.25 | 只做詞彙比對,索引偏舊 |
| DeepSeek Search / Fetch | $0.75 | 搜尋與抓取同價 |
| Serper | $1 | 量大有折扣 |
| LinkUp | $1(fetch) | search 為 $5 |
| SERP API | 約 $1.50 | 擅長繞過 Google 反爬 |
| Mojeek | £2 | 自有索引,不是代理 SERP |
| Exa | $4 | 語意檢索,訊噪比高 |
| Brave Search API | $5 | 無 |
| Kagi API | $12 | $10 月費訂閱吃到飽,但拿去接 LLM 違反 TOS |
thombles 直接拿 Brave 5 美元、Kagi 12 美元當對照;Havoc 補上 Exa 的 4 美元。frenchtoast8 提醒 Kagi 訂閱制雖然無限搜尋,但憑證接 LLM 屬違反條款。tinyhouse 的結論更直接:這價格讓 Parallel、Exa 這些公司的估值很難自圓其說。
也有人提醒便宜要看品質。loehnsberg 說只看成本會忽略品質差異,反問「DeepSeek 的搜尋與抓取到底多好」;串裡只有 ggnore7452 真的跑了 benchmark,答案不太好。
品質實測:便宜,但沒那麼好用
ggnore7452 說自己在 web-fetch benchmark 上跑了幾個測試,結論是「search 與 fetch 都不太好,雖然真的很便宜」,建議要用免費的直接用 Jina,要付費就選 Parallel、Firecrawl、Tavily 或 Exa。shaunpud 抓到另一個細節:抓一個帶超連結的頁面,回來的只有純文字,連結全掉,實用性打折。
josteink 則對速率限制有意見,5 QPS 讓他無法放進任何有併發使用者的應用,懷疑自己是不是讀錯;alexjurkiewicz 回了兩個字級的答案:「這是給 agentic 用的。」
反爬蟲與倫理:整串最大戰場
節點數最多的一條(子樹 56 則)由 Doohickey-d 開場,問的是最實際的問題:遇到 Cloudflare 驗證或 Anubis 這類反爬牆,回傳的是錯誤、沒用的內容,還是真正想抓的內容?
實務派的答案很一致:能過,但要工。m00dy 直說除了 Google reCAPTCHA v3,其餘都好繞,前提是要有自家的代理池;他自己做過 datamint.xyz,說現行可行組合是打過反指紋修補的 Firefox 分支加高品質住宅代理,光基本設定就要十幾個程式層級的修補。另一位則指出 curl-impersonate 這種把指紋偽裝成 Chrome/Firefox 的工具就很好用。
反對方是這條線真正吵起來的地方。thisismyanon2 直接點名:「謝謝你把正在摧毀網路的軍備競賽又推高了一層」,說他連看 Apple 討論區、保險公司入口網站、繳縣稅、逛 Digikey 都要先過 Cloudflare 或 Anubis。latexr 也直說:「你用自己的獲利,換來所有人更差的生活。」維護方最有力的反駁來自 stavros:只要有利潤,就一定有人做,就像有人為供應鏈攻擊買下整家經銷商。
另一條分支吵得更兇:美國大廠的 agent 是不是也在繞牆。weird-eye-issue 說 Claude 與 ChatGPT 會送明確的 user agent,讓站方好擋;ReptileMan 立刻反駁說最近的爆料讓這句話很可疑。bulder 補上觀察:這些工具遇到被封鎖時,會改叫 curl 或自己寫 Python 送不同的 user agent,而不是尊重站方意願。gvfsa 一派則回:「它們服務的是使用者,不是網站主;不想被存取就別放上網。」站長 MintsJohn 的證詞跟這條線最相關:真正逼他掛上 Anubis 的是 Anthropic、OpenAI 與 Perplexity,這三家佔了他流量的 99%,而且完全無視 robots.txt。
中國審查與出口 IP:一則匿名實測
整串最具體的爆料來自 czk,他實測後指出三件事:政治敏感的查詢會回傳 0 則結果;Fetch 的出口 IP 看起來在華為雲香港;Fetch 工具的 UA 是 Linux Firefox 149、語言設為中國,而且會執行 JavaScript,推測底層是 camoufox 一類的方案。larme 則從另一個角度問:這有沒有審查?如果沒有,中國大陸使用者可以拿它當繞過防火牆的工具。arational 認為照慣例會分成國內與國際兩套。
截至截稿,DeepSeek 沒有在串裡回應這條。
「這些服務會存在,只因 Google 不做付費 API」
mjmvisser 一句話定調:這類服務之所以存在,是因為 Google 拒絕提供付費搜尋 API。底下多數人同意,ijidak 覺得這對 Google 是現成的生意,還能在新創與企業端綁住使用者;jsrozner 的看法更陰謀論:Google 的目標不是提供搜尋,而是蒐集關於人的資料並變現,一開 API 就毀了自己的監控體系。londons_explore 提了個折衷做法:把廣告引擎照跑一遍、估出損失的廣告收入,再向呼叫方收取等值費用。
londons_explore 在另一則留言還預測,既然 SEO 是門大生意、agent 搜尋又是未來,未來搜尋 API 可能變成負價:供應商倒貼使用者,換取影響網路上誰能被看見的權力。
模型定位,以及離題的 vibe coding 大戰
dsco 認為 DeepSeek Flash 挑在 Anthropic IPO 前出現,時機對後者不利,並稱它與 SOTA 模型並駕齊驅,搜尋是它的差異點。這句被反駁得很徹底:redox99 說跟 Opus 5.5 根本不是同級;altmanaltman 說連 DeepSeek 自己都不敢這樣宣稱;lejalv 則提出折衷版「把成本算進去可能領先」。Rodmine 的說法最生動:這不是並駕齊驅,而是 DeepSeek 明顯站得更高,高到對方的脖子只到它腰部。
這條支線後來整條走偏,變成「vibe coding 會不會殺死 SaaS」的長篇論戰:IshKebab 說公司內部有人一週就 vibe code 出取代第三方 SaaS 的版本,Jira 這種工具沒人會再付每人每月 15 美元;shafyy 反問誰來維護,rjh29 則指出還有人要 on-call 與 SLA。
值得注意的業配密度
這串的閱讀門檻不只在長度,還在利益揭露。至少五處是自家產品或雇主:nikvdp 推自己的 searxng-ai-kit、m00dy 提自己的 datamint.xyz、jeromechoo 表明自己在 Diffbot、BrunoBernardino 是 uruky 創辦人主動現身、apiclay 說自家的搜尋 API 週一上線。看「又便宜又好用」這類評論時,先打折扣。
其他雜訊裡的訊號
WHOIS 級的抱怨也有幾則。Jskewel 說自家公司對每頁被爬收 1 美元,想知道帳單該寄給誰,結果被嘲諷式回敬;0-bad-sectors 問 DeepSeek 會不會付錢給被爬的內容作者,回應一面倒:不會,而且這會讓寫內容的動機更弱。deepseek 的商業結構也有人提:vitaflo 提醒 DeepSeek 由 High Flyer 持有、並非本業,母公司主要收入來自對沖基金。
串裡也有正面體驗。lifeisloving 說這幾個月來,DeepSeek 瀏覽器版已取代他的日常搜尋,不推銷東西、找得到冷門論文與中文研究,還抱怨這種正面評論馬上被 downvote。
一頁懶人包
討論串太長,另做了一頁視覺懶人包:一份結論、六大爭論主題、同業價格對照、值得看的實測與業配提醒,一分鐘看完。
手機版若 iframe 顯示不全,可直接開備援連結:https://static.blog.derekhsu.net/deepseek-search-fetch-hn.html
