search_ web
以 JSON 形式获取实时网页索引。结果来自 Brave Search API 的独立网页索引。每条结果包含标题、URL、摘要片段以及一份带高亮的摘要副本,另附一个元数据块,给出搜索耗时。站点和文件类型过滤会转换为搜索运算符;语言、时间范围和安全搜索则作为搜索过滤条件传入。
使用场景
研究流水线
先找到某个主题的信息源,再把 URL 直接送入 batch_scrape 或 extract_content。
站内搜索
设置 site 即可在单个域名内搜索——用来替代不存在或很难用的站内搜索框。
文档检索
把 file_type 与查询词结合,查找某个主题的 PDF、表格或幻灯片。
时效监测
用 time_range 限定最近一天或一周,捕捉某个主题或品牌的新报道。
竞争态势发现
查看实时网页搜索会为你关心的关键词呈现哪些页面。若要查看你在 Google 中的确切排名,请使用 serp_rank。
为智能体提供依据
给模型提供当下的搜索结果作为依据,而不是依赖它记住的内容。
Endpoint
/api/v1/tools/search_webParameters
limit 最大可填 100,但每次请求最多返回 10 条——填更大的值不会报错,只是仍然只给 10 条。其余结果请用 offset 翻页,每页一次搜索(5 credits)。query 与 queries 只能二选一:queries 批次会为每条查询各跑一次搜索;5 credits × 你发送的查询条数(最多 10 条即 50)是预估值,是上限而非实际收费。只有返回了结果的查询才计费。
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Optional | - | 搜索词。`site:`、`filetype:` 和引号短语等运算符与在搜索框中输入的效果一致,`site` 和 `file_type` 会作为附加运算符追加上去。`query` 与 `queries` 必须且只能传其中一个。 Example: mcp server for web scraping |
queries | string[] | Optional | - | 在一次调用中运行 1 到 10 条搜索查询,用于替代 `query`。每条查询都会走与单条搜索相同的流程,返回的负载放在 `results_by_query` 中:这是一个按你发送顺序排列的列表,每条查询对应一个条目,带上它自己的 `query` 以及该次搜索的各个字段;若某条搜索失败,则该条目为 `query` 加 `error`。`queries` 原样回显你的输入,`count` 即其长度。一次 `search_web` 调用按每条返回了结果的查询收取 5 credits:单条 `query` 收 5,`queries` 批次预估为 5 × 发送的查询条数,该值是上限:失败的查询不计费,因此一条都没成功的批次不产生任何费用。 列表中重复的查询会执行两次,两次都返回结果时也计费两次。一条都没成功的批次仍然是 **200**,带回常规信封:`count` 与发送时一致、每条查询各一个 `{ query, error }` 条目,以及 `credits_used: 0`。`query` 与 `queries` 必须且只能传一个——两个都传或都不传都会返回 400。 Example: ["mcp server for web scraping", "model context protocol tools"] |
limit | number | Optional | 10 | 返回的结果数,取值 1-100——但单次请求上限为 10,因此超过 10 的值等同于 10。 Example: 10 |
offset | number | Optional | 0 | 首条结果的下标,从 0 开始。翻页时依次用 10、20、30,最大到 90:第 100 条之后的结果无法获取,超出范围的页会返回空的 `results` 数组。每一页都是一次独立搜索,收取 5 credits。 Example: 10 |
lang | string | Optional | - | 优先返回某一种语言的文档,使用 ISO 639-1 代码;也接受 `zh-TW`、`pt-BR` 等地区形式。这是偏好而非严格过滤,因此仍可能出现其他语言的页面;搜索后端不支持的代码会被直接忽略,而不会导致搜索失败。该值会在 `search_metadata.lang` 中回显;省略时默认为 `en`。 Example: es |
site | string | Optional | - | 限定为单个域名。会以 `site:<domain>` 追加到查询词后,效果与手动输入完全一致。 Example: docs.anthropic.com |
safe_search | boolean | Optional | - | 开启严格的安全搜索过滤。不设置时为关闭。 Example: true |
time_range | string | Optional | - | 按时间范围限定:`day`、`week`、`month`、`year` 或 `all`。`all` 表示不加限制,同时也是默认值。 Example: week |
file_type | string | Optional | - | 限定为单一文件扩展名。会以 `filetype:<ext>` 追加,因此 `pdf`、`xlsx`、`pptx` 都可用。 Example: pdf |
redact_pii | boolean | object | Optional | false | 在结果被存储或返回之前,从本次调用返回的文本中移除个人数据。 作用于搜索返回的标题与摘要;你发送的 `query` 原样回显,不做处理。 `true` 是 `{ mode: "fast" }` 的简写:四个正则类别全开,以标签替换。只要请求了脱敏,响应就会在 `data` 内带上 `redaction: { entities, count, mode }`,即使没有任何匹配(`count: 0`)也会带上,因此“什么都没找到”永远不会被误认为“参数被忽略了”;没有命中的类别会被省略,而不是报成 `0`。脱敏在结果存储**之前**执行,因此超出阈值、之后再用 [read_result](/docs/api-reference/tools/read-result) 读回的结果本身就已脱敏。两条刻意的边界:地址类字段(`url`、`link`、`href`、`canonical_url`)从不脱敏;由文本派生的计数(`content_length`、`word_count`、`character_count`)描述的是抽取时的文本,即脱敏之前的文本。 Example: true |
max_inline_chars | number | Optional | 40000 | 内联返回的最大结果大小,以其 JSON 的字符数计(1,000-10,000,000)。超过后,响应会携带 `preview`(格式化 JSON 的前 `max_inline_chars` 个字符)、`result_handle`、`total_chars`、`truncated: true` 和 `expires_at`,其余部分由 [read_result](/docs/api-reference/tools/read-result) 读取,每次调用 1 credit。已存储的结果保留 1 小时。 Example: 40000 |
批量搜索
传 queries 而不是 query,即可在一次调用中运行最多 10 条搜索。每条查询都是与 query 调用相同的一次搜索——本 API 不做查询扩展、缓存、去重或重新排序——每条返回了结果的查询收取 5 credits。
curl -X POST https://crawlforge.dev/api/v1/tools/search_web \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"queries": [
"mcp server for web scraping",
"model context protocol tools"
],
"limit": 10,
"redact_pii": true
}'批量响应
results_by_query 是按你发送顺序排列的列表,一条查询对应一个条目,因此重复的查询会出现两次。失败的查询在其条目中带 error 而不是结果,并且不计费;无论如何调用都返回 200,包括所有查询都失败时,因此 credits_used 等于实际成功的条数乘以 5。单条 query 调用没有任何变化:其中不会出现 queries、count 或 results_by_query。
{
"success": true,
"data": {
"queries": ["mcp server for web scraping", "model context protocol tools"],
"count": 2,
"results_by_query": [
{
"query": "mcp server for web scraping",
"search_metadata": { "total_results": null, "results_returned": 10 },
"results": [
{
"title": "CrawlForge MCP Server",
"url": "https://www.crawlforge.dev/",
"snippet": "Write to <EMAIL> for access."
}
]
},
{
"query": "model context protocol tools",
"error": "Search request timeout"
}
],
"redaction": { "entities": { "EMAIL": 1 }, "count": 1, "mode": "fast" }
},
"credits_used": 5,
"credits_remaining": 995,
"processing_time": 720
}请求示例
curl -X POST https://crawlforge.dev/api/v1/tools/search_web \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "mcp server for web scraping",
"limit": 10,
"time_range": "month",
"safe_search": true
}'响应示例
{ "success": true, "data": { "query": "mcp server for web scraping", "search_metadata": { "total_results": null, "results_returned": 1, "offset": 0, "search_time": 0.312, "lang": "en", "safe_search": false, "time_range": "month", "site": null, "file_type": null }, "results": [ { "title": "CrawlForge MCP Server — 31 web tools for Claude", "url": "https://www.crawlforge.dev/", "snippet": "Search, scrape, crawl and extract from any site through one MCP server.", "displayLink": "www.crawlforge.dev", "formattedUrl": "https://www.crawlforge.dev/", "htmlSnippet": "Search, scrape, crawl and extract from any site through one MCP server.", "htmlTitle": "CrawlForge MCP Server — 31 web tools for Claude", "pagemap": { "cse_thumbnail": [ { "src": "https://imgs.search.brave.com/example-thumbnail" } ], "metatags": [ { "article:published_time": "2026-10-01T00:00:00" } ] } } ], "spelling_correction": null, "related_searches": [] }, "credits_used": 5, "credits_remaining": 995, "processing_time": 460}data.query实际搜索的查询,即你发送的原文,不含 `site` 和 `file_type` 运算符data.search_metadata.total_results`null`:搜索后端不提供匹配总数。请用 `offset` 翻页,直到 `results_returned` 为 0data.search_metadata.results_returned`results` 的长度——最多为 10data.search_metadata.search_time上游搜索的耗时(秒),由 CrawlForge 测量。不是你这次请求的总延迟data.results[].url目标链接。`formattedUrl` 携带同一地址data.results[].htmlSnippet保留了搜索引擎 `<strong>` 关键词高亮的摘要片段。渲染前请先转义data.results[].pagemap搜索引擎掌握时提供的页面信息:`cse_thumbnail[0].src`(缩略图 URL)和 `metatags[0]['article:published_time']`(页面发布时间)。两者都没有时省略该字段data.spelling_correction搜索引擎改用纠正后的拼写进行搜索时,为纠正后的查询;否则为 `null`data.related_searches始终为空数组:当前搜索后端不返回相关搜索。保留该字段是为了不破坏现有代码credits_used每次搜索固定 5 credits,与你请求的 `limit` 无关错误处理
查询无效(400 Bad Request)
VALIDATION_ERROR。query 为必填且不能为空。limit 超出 1-100、offset 为负数,或 time_range 不属于五个允许值之一,也返回同一状态码。同时传 query 和 queries、或两个都不传,返回同一个 400;queries 为空数组或超过 10 条、redact_pii 对象指定了本 API 无法脱敏的实体,或 redact_pii 带 mode: "model"(需要本 API 并不运行的 LLM),同样如此。
搜索失败(500 Internal Server Error)
TOOL_ERROR。涵盖上游搜索报错、搜索提供方的速率限制,以及 10 秒后超时。错误消息会指出具体原因。失败的搜索不计费。这是单条 query 的路径:一次失败的搜索与一直以来一样报错。queries 批次永远不会走到这里:失败的查询在它自己的 results_by_query 条目中报告,即使所有查询都失败,调用仍然返回 200。
没有匹配结果的搜索会返回 200,results 为空数组——这不是错误。请检查 results_returned,而不要只看状态码。
credits 费用
offset 翻页意味着又一次搜索,因此十页需要 50 credits。失败的搜索不计费。一次 search_web 调用按每条返回了结果的查询收取 5 credits:单条 query 收 5,queries 批次预估为 5 × 发送的查询条数,该值是上限:失败的查询不计费,因此一条都没成功的批次不产生任何费用。一次调用中的十条查询预估为 50,只有十条全部返回了结果才真的收 50。redact_pii 在默认的 fast 模式下不额外收费。包含内容:
实时网页索引(Brave Search API),而不是缓存副本
标题、URL、摘要片段以及一份带高亮的摘要副本
搜索耗时,以及可用时的缩略图和页面发布时间
site、file_type、lang、time_range 与安全搜索过滤
搜索引擎应用了拼写纠正时返回纠正结果
计划推荐:
Free 计划: 1,000 个一次性试用 credits = 200 次搜索
Hobby 计划: 5,000 credits = 1,000 次搜索($19/mo)
Professional 计划: 100,000 credits = 20,000 次搜索($99/mo)
相关工具
准备好试用 search_web 了吗?免费注册并获得 1,000 credits 开始构建。