# Bing Web Search v7

> 把已停用的 Bing Web Search API v7 端点指向 Search1API 的 Bing 引擎，让为其编写的代码继续运行。

Canonical URL: https://s1.dev/zh/docs/compatibility/bing

Microsoft 已于 2025 年 8 月 11 日停用 Bing Search API。Search1API 支持 v7 的网页、新闻和图片搜索端点，由其 Bing 引擎提供结果：

| Bing v7 | Search1API |
| --- | --- |
| `https://api.bing.microsoft.com/v7.0/search` | `https://api.search1api.com/compat/bing/v7.0/search` |
| `https://api.bing.microsoft.com/v7.0/news/search` | `https://api.search1api.com/compat/bing/v7.0/news/search` |
| `https://api.bing.microsoft.com/v7.0/images/search` | `https://api.search1api.com/compat/bing/v7.0/images/search` |

与 Bing 客户端的做法一样，在 `Ocp-Apim-Subscription-Key` 请求头中发送你的 Search1API 密钥。也可以使用 `Authorization: Bearer`。

迁移概览和配置变更请参阅[从 Bing v7 迁移](https://s1.dev/compatible-apis/bing)。

## 配置客户端

<Tabs items={['Open WebUI', 'LangChain', 'curl']}>

<Tab value="Open WebUI">

选择 **bing** 作为网页搜索引擎，并设置：

```bash
BING_SEARCH_V7_ENDPOINT="https://api.search1api.com/compat/bing/v7.0/search"
BING_SEARCH_V7_SUBSCRIPTION_KEY="YOUR_API_KEY"
```

</Tab>

<Tab value="LangChain">

```python
from langchain_community.utilities import BingSearchAPIWrapper

search = BingSearchAPIWrapper(
    bing_subscription_key="YOUR_API_KEY",
    bing_search_url="https://api.search1api.com/compat/bing/v7.0/search",
    k=5,
)
results = search.results("hono cloudflare workers", 5)
```

</Tab>

<Tab value="curl">

```bash
curl "https://api.search1api.com/compat/bing/v7.0/search?q=hono+workers&count=5" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"
```

</Tab>

</Tabs>

其他接受 Bing 端点的客户端，例如 Semantic Kernel 的 Bing 连接器或 Dify 的 Bing 工具，填写同一个 URL 即可。

## 参数

| 参数 | 行为 |
| --- | --- |
| `q` | 必填。 |
| `count` | 网页和新闻默认 `10`，图片默认 `35`，最多 `50`。 |
| `offset` | 要跳过的结果数，与 Bing 一致。 |
| `mkt`、`setLang` | 结果的主要语言，例如从 `en-US` 取 `en`。空值表示不过滤。 |
| `freshness` | `Day`、`Week`、`Month`，或 `YYYY-MM-DD..YYYY-MM-DD` 范围；范围会转换为能覆盖它的最短时间窗口（日、周、月或年）。 |

`safeSearch`、`responseFilter`、`textDecorations`、`textFormat`、`answerCount`、`promote` 和 `cc` 会被忽略。即使设置了 `textDecorations`，摘要也是不带命中高亮的纯文本。

## 响应

- **网页搜索**返回 `_type: "SearchResponse"`、`queryContext.originalQuery` 和 `webPages.value`，其中每个页面包含 `id`、`name`、`url`、`displayUrl`、`snippet`，以及已知时的 `datePublished`。只返回 `webPages`；不返回 `news`、`images`、`relatedSearches` 和 `rankingResponse` 部分。
- **新闻搜索**返回 `_type: "News"` 和 `value`，其中每篇文章包含 `name`、`url`、`description`、`datePublished` 和 `provider`（站点主机名）。
- **图片搜索**返回 `_type: "Images"` 和 `value`，其中每张图片包含 `contentUrl` 和 `thumbnailUrl`。由于无法得知图片所在的页面，`hostPageUrl` 为图片 URL。

`totalEstimatedMatches` 等于 `offset` 加上本次返回的结果数，而不是对全部匹配数的估计。持续翻页直到达到 `totalEstimatedMatches` 的客户端，会在最后一个完整页之后停止。

新闻搜索要求提供 `q`；在 Bing 中不带查询的请求会返回头条新闻，这里则返回 `400`。

## 积分

每次请求消耗 1 积分，与原生搜索价格相同。

## 错误

错误以 `{ "_type": "ErrorResponse", "errors": [{ "code": "…", "message": "…" }] }` 返回，并带有相应的状态码。错误码包括 `InvalidRequest`（400）、`InvalidAuthorization`（401）、`InsufficientAuthorization`（402、403）、`RateLimitExceeded`（429）和 `ServerError`。