主题
Bing 自然搜索实时结果 API
本接口用于实时获取指定在 Bing 搜索结果页中的自然搜索结果数据,可按语言、地区、设备等条件获取对应 SERP。
接口说明
- 请求方式:
POST - 接口地址:
https://api.seermartech.cn/v3/serp/bing/organic/live/regular
该接口为实时请求接口,请求发出后直接返回解析后的搜索结果。
计费说明
本接口按请求计费。
- 参考价约 ¥0.0480 / 次
- 当
depth过 10,且搜索引擎返回 10 条结果时,可能产生额外费用 - 实扣费以响应头
X-SeerMarTech-Charge-CNY为准
调用限制
- 每分钟最多可发送 2000 次 API 调用
- 每次 Live SERP 请求 支持一个任务
- POST 请求体为 JSON 数组格式:
[{ ... }]
请求参数
主要参数
| 字段名 | 类型 | 说明 |
|---|---|---|
keyword | string | 填。搜索,最长 700 个字符。%## 会被解码,+ 会被解码为空格。如需传 % 字符,请写为 %25;如需传 + 字符,请写为 %2B。 |
location_code | integer | 当未传 location_name 或 location_coordinate 时填。搜索地区编码。传该字段后,无需再传 location_name 或 location_coordinate。地区列表可通过 /v3/serp/wp/locations 获取。示例:2840 |
language_code | string | 当未传 language_name 时填。搜索语言编码。传该字段后,无需再传 language_name。语言列表可通过 /v3/serp/wp/languages 获取。示例:en |
depth | integer | 可选。解析深度,即返回的 SERP 结果数量。默认 10,最大 200。每最多 10 条结果的 SERP 会计费一次;若 10,且搜索引擎返回了更多结果,可能产生额外费用。 |
device | string | 可选。设备类型。可选值:desktop、mobile。默认:desktop |
附加参数
| 字段名 | 类型 | 说明 |
|---|---|---|
location_name | string | 当未传 location_code 或 location_coordinate 时填。搜索地区完整名称。传后无需再传 location_code 或 location_coordinate。地区列表可通过 /v3/serp/wp/locations 获取。示例:London,England,United Kingdom |
language_name | string | 当未传 language_code 时填。搜索语言完整名称。传后无需再传 language_code。语言列表可通过 /v3/serp/wp/languages 获取。示例:English |
os | string | 可选。设备操作系统。若 device=desktop,可选:windows、macos,默认 windows;若 device=mobile,可选:android、ios,默认 android |
tag | string | 可选。用户自定义任务标识,最长 255 字符。可用于在响应中匹任务,返回于响应的 data 对象中。 |
target | string | 可选。用于筛选指定域名、子域名或页面的结果。域名或子域名不要带 https:// 和 www.。返回 url 字段的 SERP素。支持通符 *。示例:example.com、example.com*、*example.com*、*example.com、example.com/example-page、example.com/example-page* |
stop_crawl_on_match | array | 可选。用于命中指定目标后停止抓取。为目标对象数组,每个对象 match_type 和 match_value。最多支持 10 个目标对象。若设置该字段,响应返回直到命中指定目标为止的 SERP 结果(命中项)。在命中条件满足前,抓取到的每个 SERP 都会计费。 |
match_type | string | 当设置 stop_crawl_on_match 时填。匹类型。可选值:domain(指定域名/子域名)、with_subdomains(主域名及子域名)、wildcard(通模式) |
match_value | string | 当设置 stop_crawl_on_match 时填。目标域名、子域名或通值。域名或子域名不要带请求协议。示例:"match_value": "example.com"、"match_value": "/blog/post-*" |
max_crawl_pages | integer | 可选。最多抓取的搜索结果页数。默认 1,最大 100。该参数与 depth合使用。 |
search_param | string | 可选。附加搜索参数。用于补搜索查询条件。 |
url | string | 可选。直接传搜索结果页 URL,由系统自动拆解为所需字段。此方式处理难度较高,且需要 URL 中准确的语言和地区信息,通常不建议优使用。示例:https://www.bing.com/search?q=rank%20checker&count=50&first=1&setlang=en&cc=US&safesearch=Moderate&FORM=SEPAGE |
location_coordinate | string | 当未传 location_name 或 location_code 时填。位置坐标,格式为 "latitude,longitude",经纬度最多支持 7 位小数。示例:53.476225,-2.243572 |
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/serp/bing/organic/live/regular" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/serp/bing/organic/live/regular"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
data = [
{
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein"
}
]
response = requests.post(url, headers=headers, json=data)
print(response.json)TypeScript
typescript
import axios from "axios";
async function main {
const response = await axios.post(
"https://api.seermartech.cn/v3/serp/bing/organic/live/regular",
[
{
language_code: "en",
location_code: 2840,
keyword: "albert einstein",
},
],
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
);
// 输出接口响应
console.log(response.data);
}
main.catch(console.error);响应结构
接口返回 JSON 编码数据,顶层 tasks 数组。
顶层字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | API 当前版本 |
status_code | integer | 通用状态码,完整列表见 /v3/appendix/errors |
status_message | string | 通用状态消息,完整列表见 /v3/appendix/errors |
time | string | 执行耗时,单位秒 |
cost | float | 总任务费用,单位 USD |
tasks_count | integer | tasks 数组中的任务数量 |
tasks_error | integer | tasks 数组中返回错误的任务数量 |
tasks | array | 任务数组 |
tasks[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 平台唯一任务 ID,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000-60000,完整列表见 /v3/appendix/errors |
status_message | string | 任务状态信息 |
time | string | 任务执行耗时 |
cost | float | 当前任务费用,单位 USD |
result_count | integer | result 数组数量 |
path | array | URL 路径 |
data | object | 与请求中提交的参数一致 |
result | array | 结果数组 |
result[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
keyword | string | 请求中的。返回时 %## 已被解码,+ 会被解码为空格 |
type | string | 请求中的搜索类型 |
se_domain | string | 搜索引擎域名 |
location_code | integer | 请求中的地区编码 |
language_code | string | 请求中的语言编码 |
check_url | string | 搜索结果直达 URL,可用于核对结果是否一致 |
datetime | string | 结果获取时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00 |
spell | object | 搜索引擎自动纠错信息。若被自动修正,将返回修正后的及纠错类型 |
refinement_chips | object | 搜索细分建议。该接口中通常为 null |
item_types | array | 当前 SERP 中出现的结果类型,如 organic、paid |
se_results_count | integer | SERP 总结果数 |
pages_count | integer | 实抓取的结果页数 |
items_count | integer | items 数组中的结果数量 |
items | array | SERP 明细结果 |
spell 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
keyword | string | 搜索引擎自动修正后的 |
type | string | 自动修正类型,可选值:including_results_for |
SERP素字段说明
organic 自然结果
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 素类型,固定为 organic |
rank_group | integer | 同类型结果组排名 |
rank_absolute | integer | SERP 中的绝对排名 |
page | integer | 所在搜索结果页码 |
domain | string | 结果域名 |
title | string | 结果标题 |
description | string | 结果摘要 |
url | string | 结果链接 |
breadcrumb | string | 面屑路径 |
paid 广告结果
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 素类型,固定为 paid |
rank_group | integer | 同类型结果组排名 |
rank_absolute | integer | SERP 中的绝对排名 |
page | integer | 所在搜索结果页码 |
domain | string | 广告域名 |
title | string | 广告标题 |
description | string | 广告描述 |
url | string | 广告链接 |
breadcrumb | string | 广告面屑路径 |
related_searches 搜索
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 素类型,固定为 related_searches |
rank_group | integer | 同类型结果组排名 |
rank_absolute | integer | SERP 中的绝对排名 |
page | integer | 所在搜索结果页码 |
items | array | 搜索词数组,通常 8 个与的搜索建议 |
响应示例
json
{
"version": "0.1.20220104",
"status_code": 20000,
"status_message": "Ok.",
"time": "9.1028 sec.",
"cost": 0.003,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "serp",
"function": "live",
"se": "bing",
"se_type": "organic",
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein",
"device": "desktop",
"os": "windows"
},
"result": [
{
"se_results_count": 5099,
"pages_count": 1,
"items_count": 103,
"items": []
}
]
}
]
}错误处理
建议对以下字段进行统一处理:
- 顶层
status_code/status_message - 任务级
tasks[].status_code/tasks[].status_message
完整错误码与状态说明参考:
/v3/appendix/errors
生产环境中建议建立以下机制:
- 区分接口级错误与任务级错误
- 对限流、参数错误、权限错误进行分类处理
- 对实时查询时或异常结果进行重试或降级处理
实用场景
- 监控排名:实时获取指定在 Bing 的自然结果位置,帮助 SEO 团队跟踪核心词排名波动。
- 分析竞品:通过
target参数筛选竞品域名,快速识别在指定下的自然。 - 检测广告挤压程度:同时观察
organic与paid素分布,判断广告位对自然点击空间的影响。 - 挖掘搜索词:利用
related_searches提取用户延伸需求,为选题与拓展提供依据。 - 按地区设备做本地化对比:结合
location_code、device、os获取不同地区和终端下的 SERP 差异,用于化 SEO 和移动端优化。