Web Search API 与 Web Fetch API:工作原理及 $0.01 的实际成本
目录
目前主流的服务端网页搜索工具都按每次 $0.01 收费,但这反而是账单里最不值得关注的数字。我们测量的每次搜索都会向请求中注入 1,500 到 3,100 个结果 token,这些 token 按所选模型的费率计费。后续轮次会发生什么,则取决于一个很少有团队关注的协议设计差异:端点是把搜索证据带入下一轮,还是直接丢弃,让模型重新搜索并再次计费。我们在四个模型系列上测量了 Synthorai 的 synthorai:web_search 和 synthorai:web_fetch,并将结果与 Anthropic 和 OpenAI 公布的托管搜索价格进行了对比。
TL;DR
- Synthorai、Anthropic 和 OpenAI 的每次搜索费用均为 $0.01;计费记录会将其单独列为 $0.0100。
- 一次搜索会按模型的输入费率注入 1,500-3,100 个结果 token:便宜模型主要由固定费用构成,高端模型的 token 成本最高可占一半。
max_uses是上限,不是配额:即使允许 10 次,模型也会在 3 次后停止;费用按实际执行的搜索次数增长。- 第二轮的行为取决于端点:
/v1/messages会重放结果(约 3,900 个 token,不产生新费用);/v1/chat/completions会丢弃结果,因此需要证据的后续请求会重新搜索。
模型为什么需要网页搜索和网页抓取?
因为模型的知识截止于训练数据,而大多数生产环境中的问题并不会停在那个时间点。价格、发布说明、汇率、体育比分,以及用户刚刚粘贴的 URL 内容,都不存在于模型权重中。如果模型仍然自信作答,就会把编造的“最新”事实直接交给用户。网页搜索用于发现信息,适合模型不知道答案在哪里的情况;网页抓取用于读取内容,适合模型已经知道具体页面、只需要获取其内容的情况。你可以用搜索 API、抓取器和 tool-calling 循环自行实现,很多团队也确实如此。服务端版本的价值在于,这套循环只是通用基础设施。让提供商在内部运行它,可以省去多次往返、解析代码和运维负担,而各家的固定费用最终完全相同。
服务端网页搜索到底如何工作?
关键在于,整个循环都在一次 API 请求内完成。使用客户端工具时,模型先要求你的代码执行搜索,你的代码再把结果传回去,每次往返都要重发对话。服务端工具不需要这层代码:你只需在 tools 中声明 {"type": "synthorai:web_search"}。模型生成查询后,网关会将其发送给专用搜索提供商,把返回结果注入模型上下文,再由模型读取并回答;模型也可以继续搜索,但不会超过 max_uses。一次请求对应一次响应,其中包括引用和账单。
普通请求只需增加一行声明,无需循环代码,也无需回调:
curl https://synthorai.io/v1/chat/completions \
-H "Authorization: Bearer $SYNTHORAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash-0731",
"messages": [{"role": "user", "content": "What is one AI news headline from this week? Name the source."}],
"tools": [{"type": "synthorai:web_search", "max_uses": 1}]
}'
网页抓取的声明方式相同,只需更换类型;将 URL 放入消息中,网关就会获取该页面:
"messages": [{"role": "user", "content": "Fetch https://example.com/pricing and summarize the tiers."}],
"tools": [{"type": "synthorai:web_fetch", "max_uses": 1}]

这张图完整展示了我们在 deepseek-v4-flash-0731 上测量上述搜索请求的过程。计量结果为 2,059 个输入 token(一个 30-token 的问题,加上约 2,000 个注入结果 token)、169 个输出 token,总费用为 $0.0104:其中搜索费为 $0.01,token 费用约为 $0.0004。整个过程只有两项计费事件:执行搜索时收取固定费用,结果 token 则按模型的常规输入费率计费。网页抓取的计费方式完全相同,只是用抓取到的页面替代搜索摘要。
声明工具本身不收费。请求即使声明了工具,只要没有实际搜索,就不会产生费用。该工具适用于目录中的任意模型,这也是它与第一方方案在架构上的区别:Anthropic 的托管搜索只服务 Claude 模型,OpenAI 的托管搜索只服务 OpenAI 模型,而网关级工具可以服务你路由到的任何模型。
一次搜索的真实成本是多少?
固定费用为 $0.01,另加 token 费用。随着模型变贵,账单中的主要成本也会发生变化。我们针对同一个单次搜索的新闻问题,在四个模型系列上分别运行了三次。我们先通过不使用工具的基线请求算出各模型的精确 token 费率,再将剩余成本作为搜索费用:
| 模型 | 注入的结果 token | Token 成本 | 费用余项 | 固定费用占总成本比例 |
|---|---|---|---|---|
| deepseek-v4-flash-0731 | 约 2,020 | $0.0003 | $0.0101 | 97% |
| gpt-5.6-luna | 约 1,500 | $0.002 | $0.0104 | 83% |
| qwen3.8-max | 约 1,780-2,060 | $0.005-0.012 | $0.0112-0.0116 | 49-68% |
| claude-sonnet-5 | 约 2,700-3,090 | $0.008-0.010 | $0.0118-0.0121 | 54-59% |
在最便宜的模型上,搜索费用占单次调用成本的 97%;在高端模型上,注入 token 约占账单的一半。固定费用不是通过推算得出的:计费记录会把工具费用单独列为每次调用恰好 $0.0100,同时另行记录工具注入的 token 数量。以其中一次真实抓取为例,3,836 个输入 token 中有 3,454 个由工具注入。实际测得的一次搜索总成本在 $0.010 到 $0.012 之间,具体取决于承载搜索的模型。按区间上限编制预算即可避免意外。实际含义很直接:服务端搜索搭配便宜模型时,主要成本来自搜索,模型本身几乎免费。
哪三个因素决定 token 账单?
搜索次数、结果长度和页面体量。其他因素基本可以忽略。三个因素都能直接测量,其中两个可以由你直接控制。
因素一:实际执行多少次搜索。 max_uses 是上限,不是目标值。在一个比较五家厂商价格的问题中,允许执行 1、2 和 3 次搜索时,费用分别为 $0.0106、$0.0216 和 $0.0319。费用按实际搜索次数线性增长,每次增加 $0.01。即使把上限设为 5 或 10,费用也没有继续增加,因为模型自行在三次搜索后停止了。未使用的额度不收费,这与我们在推理模型上测量的思考预算完全相同。默认值为 3,硬上限为 10。因此,在未配置上限且模型频繁搜索的情况下,最坏成本是三次固定费用加三批结果 token。只查询单个事实的路由应将 max_uses: 1 固定下来。
因素二:搜索结果有多长。 注入量主要取决于问题覆盖范围,而不是随机波动。我们在 deepseek-v4-flash-0731 上完成了十二次单次搜索:
| 查询类型 | 注入的结果 token(3 次运行) |
|---|---|
| 单一事实 | 1,650(误差不超过 1 个 token) |
| 技术文档查询 | 1,920-1,950 |
| 最新新闻 | 1,790-1,990 |
| 多对象比较 | 2,060-2,410 |
范围明确的问题会返回更紧凑的结果集;比较类问题返回的结果更广,比单一事实查询多约 45%。编制预算时,可以按每次搜索 2,000 个 token、上下浮动 20% 估算,这能覆盖我们观察到的全部情况。按常见模型费率计算,一次搜索的 token 成本大约为 $0.01 固定费用的二十分之一到二分之一。
因素三:抓取页面有多大。 抓取固定费用不会变化,剩余成本由页面决定。以下数据均使用同一模型测得:
| 页面 | 注入的 token | 总成本(DeepSeek) | 使用 $2/1M 模型时的相同抓取 |
|---|---|---|---|
| 最小测试页 | 209 | $0.0101 | $0.0104 |
| 精简首页 | 1,421 | $0.0103 | $0.0128 |
| 长篇指南 | 3,460 | $0.0106 | $0.0169 |
| 数据密集型文章 | 5,196 | $0.0108 | $0.0204 |
| 较长的 Wikipedia 条目 | 27,380 | $0.0139 | $0.0648 |
使用便宜模型时,即使抓取 Wikipedia 长文也只需约 1.4 美分;如果将同一个抓取请求路由到每百万 token 收费 $2 的模型,单页成本会达到 6.5 美分,是固定费用的五倍。预算表还需要考虑一点:同一个页面在不同模型系列上的 token 数量不同。数据密集型文章在 DeepSeek 上为 5,196 个 token,在 qwen3.8-max 上为 5,508 个,多出 6%,与我们的 token 密度测量结果一致。
下一轮对话会如何处理搜索结果?
两个 API 协议本身的设计差异,会直接决定后续轮次的账单。/v1/messages 协议将 assistant 轮次定义为一组内容块,因此服务端工具活动属于该轮次的正式记录:响应依次包含 server_tool_use、web_search_tool_result 和文本,协议要求在下一轮中将这些内容块一并传回。搜索证据会按设计进入下一轮,并作为输入 token 计费。/v1/chat/completions 协议则将 assistant 消息定义为单个内容字符串,没有保存服务端工具结果的位置。因此,注入结果只在服务端内部使用,进入历史记录的只有可见答案,搜索证据不会保留。
我们通过两个接口,在 claude-sonnet-5 上运行了相同的“搜索后追问”组合。使用 /v1/messages 时,后续请求计入 3,911 个输入 token,费用为 $0.0109,全部来自 token 成本。由于模型仍可使用原搜索结果,因此没有再次搜索。使用 /v1/chat/completions 时,后续请求费用为 $0.0204,反而高于重放成本。模型手中只有自己生成的一行摘要,因此执行了一次新搜索,产生新的 $0.01 固定费用和一批新结果 token。重新搜索并非必然行为。在更早的一次相同测试中,deepseek-v4-flash-0731 直接根据摘要回答,只消耗 460 个输入 token,费用为 $0.00009。采用吸收式处理后,后续费用会呈现两种模式:摘要足够时几乎免费;模型认为需要重新访问网页时,则需再次支付固定费用和结果 token 成本。
因此,不能简单地说某个端点更便宜;两者只是把成本放在不同位置。内容块模式会在每一轮支付可预测的 token 成本,但不会重复购买已有证据;吸收模式则假设后续请求不需要原始证据,一旦假设失败,就要重新支付搜索费用。多轮聊天且追问较浅时,适合使用 /v1/chat/completions;需要反复分析来源的研究型 agent 更适合 /v1/messages。对于随历史传递的大体量搜索结果,可以像处理其他大型上下文一样,应用分层使用 prompt cache 的方法。
Anthropic 和 OpenAI 如何收费?工具在哪里运行?
对比结果很简单:所有提供商都按每次搜索 $0.01 收费,剩余成本只取决于模型的 token 价格。Anthropic 按每 1,000 次搜索 $10 收费,结果按输入 token 计费;其网页抓取不收固定费用,只收 token 费用。OpenAI 同样按每 1,000 次调用 $10 收费,但不同模型层级对 token 的处理方式有所不同。固定费用已经没有差异,真正的变量是 1,500-3,100 个注入 token 对应的模型输入费率。
| Synthorai | Anthropic | OpenAI | |
|---|---|---|---|
| 每次搜索费用 | $0.01 | $0.01 | $0.01 |
| 结果 token | 按模型输入费率 | 按模型输入费率 | 按模型输入费率(不同层级有所差异) |
| 网页抓取费用 | $0.01 | 无 | - |
| 支持的模型 | 目录中的任意模型 | 仅 Claude | 仅 OpenAI |
真正区分三者的因素并不在价格表上,而是工具运行的位置。第一方服务端工具针对各自厂商的 agent 技术栈构建,只能在第一方接口上使用。Anthropic 文档明确指出,网页搜索不支持 Amazon Bedrock,Google Cloud 只支持基础搜索,Microsoft Foundry 则要求使用托管在 Anthropic 上的部署;网页抓取在 Bedrock 和 Google Cloud 上都不可用。OpenAI 的搜索则绑定在 Responses API 上。一旦工作负载跨越云平台边界或切换模型系列,第一方工具无法随之迁移。这也是网关不透传这些工具的原因:它们无法跟随流量路由。网关级工具采用相反的取舍:同一份声明可以跨模型切换,也可以跨平台迁移。
常见问题
网页搜索 API 每次请求的费用是多少?
每次实际执行搜索收费 $0.01,并在计费记录中单独列出;注入结果则按模型的输入 token 费率计费。我们的测试中,每次搜索会注入 1,500-3,100 个 token。只声明工具但没有实际搜索的请求不收固定费用。使用常见模型时,可按每次搜索总成本 $0.010-0.012 编制预算;在非常便宜的模型上,固定费用占总成本的 97%。
后续对话轮次会再次对搜索结果计费吗?
取决于端点。通过 /v1/messages 调用时,结果内容块会随历史记录重放,我们的测试中每轮约为 3,900 个输入 token,不产生新的搜索费用。通过 /v1/chat/completions 调用时,结果会在当前轮次结束后被吸收。如果模型可以根据摘要回答,后续请求几乎免费,某次测试仅为 $0.00009;如果模型重新搜索,则会产生新的固定费用和结果 token 成本,另一次测试为 $0.0204。Anthropic 的第一方搜索文档将重放行为定义为标准方式,因此搜索结果会在每一轮重新按 token 计费。
如何限制单次请求的网页搜索支出?
使用 max_uses。这是模型无法超过的硬上限,默认值为 3,最大值为 10。费用只按实际执行的搜索次数增长,未使用的额度不收费。对于只查询单一事实的路由,设置 max_uses: 1 可将最坏成本限制为一次固定费用加一批结果 token。
什么情况下应该使用网页抓取而不是网页搜索?
已经知道 URL、需要读取完整页面时使用网页抓取;需要发现信息来源时使用网页搜索。通过网关调用时,两者每次使用都收取 $0.01,但网页抓取会注入整个页面。在我们的测试中,最小页面为 209 个 token,长篇文章可达 27,380 个 token;网页搜索则会注入多个来源的摘要。对于专门使用 Claude 模型的读取和摘要流水线,Anthropic 自带的抓取工具不收固定费用,因此成本更低。
测量于 2026-08-10,通过 Synthorai 网关在 deepseek-v4-flash-0731、gpt-5.6-luna、qwen3.8-max 和 claude-sonnet-5 上使用 synthorai:web_search 和 synthorai:web_fetch 完成:各模型的 token 费率通过两组不使用工具的基线请求计算;搜索费用按实际账单减去 token 价值后的余项得出(每个模型 n=3);测试还包括 max_uses 阶梯、查询类型对应的结果负载扫描(4 种类型 × 3 次运行)、两个端点上使用相同问题的后续轮次探测,以及五个页面的抓取阶梯(三个自有页面、一个最小外部页面和一篇长文)。固定费用通过明细计费记录中的每次调用工具费用和工具注入 token 项确认,而非仅根据总额推算。Anthropic 和 OpenAI 的数据来自发布时各自公布的文档价格。图中的数字来自一次未经修改的真实调用。费用和行为可能发生变化,请以自己的用量记录为准。