主题
Bing SERP 竞争对手分析(实时)
接口说明
通过本接口,你可以基于一组指定,获取在 Bing 搜索结果中参与竞争的域名列表。返回结果这些域名的排名信息,还以下指标:
- SERP 平均排名
- 排名中位数
- rating(排名能力评分)
- etv(预估流量)
- visibility(可见度)
- 对应的排名位置
请求方式: POST接口地址: https://api.seermartech.cn/v3/dataforseo_labs/bing/serp_competitors/live
计费与调用限制
- 本接口按请求计费
- 参考价请以游价格换算,扣费以响应头
X-SeerMarTech-Charge-CNY为准 - 请求体需使用 UTF-8 编码的 JSON
- POST 请求体格式为 JSON 数组:
[{ ... }] - 每分钟最多可发起 2000 次 API 调用
- 最大并发请求数为 30
- 支持通过
limit、offset、filters、order_by控制返回数量、分页、筛选和排序
请求参数
任务参数字段
| 字段名 | 类型 | 说明 |
|---|---|---|
keywords | array | 填。数组,结果将基于该数组中的生成。使用 UTF-8 编码;会自动转换为小写;最多支持 200 个。 |
location_name | string | 当未传 location_code 时填。地区完整名称。在 location_name 与 location_code 之间二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区。当前接口支持美国。示例:United States |
location_code | integer | 当未传 location_name 时填。地区唯一标识。在 location_name 与 location_code 之间二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区。当前接口支持美国。示例:2840 |
language_name | string | 当未传 language_code 时填。语言完整名称。在 language_name 与 language_code 之间二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用语言。示例:English |
language_code | string | 当未传 language_name 时填。语言唯一标识。在 language_name 与 language_code 之间二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用语言。示例:en |
include_subdomains | boolean | 可选。是否在搜索中子域名。设为 false 时忽略子域名。默认值:true |
item_types | array | 可选。限定返回的搜索结果类型统计这些类型中的竞争域名。未指定时使用默认逻辑。 |
limit | integer | 可选。返回域名的最大数量。默认值:100;最大值:1000 |
offset | integer | 可选。结果偏移量。默认值:0。例如传 10 时,将跳过前 10 个域名,返回后续结果。 |
filters | array | 可选。结果过滤条件数组。最多支持 8 个过滤条件。多个条件之间需使用逻辑运算符 and 或 or。支持操作符:regex、not_regex、<、<=、>、>=、=、<>、in、not_in、ilike、not_ilike、like、not_like、match、not_match |
order_by | array | 可选。结果排序规则。可使用与 filters 相同的字段。排序方式支持:asc(升序)、desc(降序)。单次请求最多设置 3 条排序规则。 |
tag | string | 可选。用户自定义任务标识,最大长度 255。便于在响应结果中匹请求任务。 |
filters
like/not_like/ilike/not_ilike支持使用%匹任意长度字符串- 多条件组合时,需显式写逻辑连接符
and或or - 过滤器详细规则可参考
/v3/dataforseo_labs/filters
示例:
json
[
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
]order_by
示例:
json
["visibility,desc", "etv,desc"]返回结果说明
接口返回 JSON 数据,顶层 tasks 数组。
顶层响应字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | API 当前版本 |
status_code | integer | 通用状态码,完整错误码见 /v3/appendix/errors |
status_message | string | 通用状态信息 |
time | string | 执行耗时,单位秒 |
cost | float | 本次请求总费用,单位 USD |
tasks_count | integer | tasks 数组中的任务数量 |
tasks_error | integer | 返回错误的任务数量 |
tasks | array | 任务结果数组 |
tasks[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000-60000 |
status_message | string | 任务状态信息 |
time | string | 任务执行耗时,单位秒 |
cost | float | 该任务费用,单位 USD |
result_count | integer | result 数组中的数量 |
path | array | 请求路径 |
data | object | 与请求中提交的参数一致 |
result | array | 结果数组 |
result[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型 |
seed_keywords | array | 请求中提交的。会返回解码后的值,+ 会还原为空格 |
location_code | integer | 请求中的地区编码;若无数据则为 null |
language_code | string | 请求中的语言编码;若无数据则为 null |
total_count | integer | 数据库中与当前请求的总结果数 |
items_count | integer | items 数组中返回的结果数 |
items | array | 检测到的 SERP 竞争域名及指标 |
items[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型 |
domain | string | 检测到的竞争域名 |
avg_position | integer | 指定下该域名的平均排名,即 keywords_positions 中所有排名值的算术平均数 |
median_position | integer | 指定下该域名的排名中位数 |
rating | integer | 排名能力评分,表示排名与理论最佳排名之间的差值,计算方式为 sum(100 - keywords_positions) |
etv | float | 预估流量,表示这些每月为该网站带来的预估自然流量 |
keywords_count | integer | 该域名在所给中有排名的数量 |
visibility | float | SERP 可见度。排名 1-10 的分别按 1 到 0.1 计;排名 11-20 固定按 0.05 计;排名 20-100 记为 0 |
relevant_serp_items | integer | 与该域名的 SERP素数量 |
keywords_positions | object | 该域名在各下的 SERP 排名位置 |
指标解释
rating
衡量域名在目标集合中的相对排名表现。值越高,说明该域名在更多上获得更靠前的位置。
etv
预估月度流量指标,基于搜索量与不同排名位置对应的点击率模型计算得出。
visibility
衡量域名在目标集合中的能力。该值越高,说明网站在核心的前排占位越强。
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/dataforseo_labs/bing/serp_competitors/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840,
"item_types": [],
"limit": 5
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/bing/serp_competitors/live"
payload = [
{
"keywords": ["phone", "watch"],
"location_name": "United States",
"language_name": "English",
"filters": [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
]
}
]
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json)TypeScript
typescript
import axios from "axios";
const postArray = [
{
keywords: ["phone", "watch"],
language_name: "English",
location_code: 2840,
filters: [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
]
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/dataforseo_labs/bing/serp_competitors/live",
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
},
data: postArray
})
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
json
{
"version": "0.1.20220216",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.1093 sec.",
"cost": 0.0113,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "dataforseo_labs",
"function": "serp_competitors",
"se_type": "bing",
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840,
"filters": [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
]
},
"result": [
{
"location_code": 2840,
"language_code": "en",
"total_count": 13,
"items_count": 13,
"items": [
{
"se_type": "bing",
"domain": "play.google.com",
"avg_position": 1,
"median_position": 1,
"rating": 99,
"etv": 16796,
"keywords_count": 1,
"visibility": 1,
"relevant_serp_items": 1,
"keywords_positions": {
"phone": [1]
}
},
{
"se_type": "bing",
"domain": "www.apple.com",
"avg_position": 1,
"median_position": 1,
"rating": 99,
"etv": 16747.36,
"keywords_count": 1,
"visibility": 1,
"relevant_serp_items": 1,
"keywords_positions": {
"watch": [1]
}
},
{
"se_type": "bing",
"domain": "www.bestbuy.com",
"avg_position": 2,
"median_position": 2,
"rating": 98,
"etv": 8950.5,
"keywords_count": 1,
"visibility": 0.9,
"relevant_serp_items": 1,
"keywords_positions": {
"phone": [2]
}
},
{
"se_type": "bing",
"domain": "www.merriam-webster.com",
"avg_position": 3,
"median_position": 3,
"rating": 97,
"etv": 5360.257,
"keywords_count": 1,
"visibility": 0.8,
"relevant_serp_items": 1,
"keywords_positions": {
"watch": [3]
}
}
]
}
]
}
]
}状态码与错误处理
- 顶层
status_code表示整次请求的执行状态 tasks[].status_code表示单个任务的执行状态- 建议同时校验:
- HTTP 状态码
- 顶层
status_code - 任务级
tasks[].status_code - 完整错误码说明见:
/v3/appendix/errors
常见成功状态:
| 状态码 | 含义 |
|---|---|
20000 | 请求成功 |
使用建议
- 数量控制在合理范围:虽然最多可传 200 个,但为了便于分析竞争结构,建议按主题或产品线拆分请求。
- 优使用筛选条件收敛结果:例如保留
visibility高、relevant_serp_items大于 0 的域名,减少无效数据。 - 结合排序规则输出高价值竞争对手:可按
visibility desc、etv desc排序,优识别流量争夺最激烈的网站。 - 注意地区限制:当前接口支持美国地区。
实用场景
- 识别竞争网站:一组核心,快速找出在 Bing 中与自身争夺的主要域名,用于竞品盘点与市场格局分析。
- 评估竞品自然流量能力:结合
etv和visibility,判断哪些网站正在从目标中持续获取流量,为投放和 SEO 资源分提供依据。 - 筛选高优级竞争域名:通过
filters和order_by提取排名靠前、可见度高的域名,便于建立重点监控名单。 - 分析覆盖差距:利用
keywords_count与keywords_positions观察不同域名覆盖了哪些,发现自身在词集上的空白点。 - 监控 SERP 格局变化:定期对同一批调用接口,对比返回域名及排名指标变化,及时发现新或竞争强度上升的站点。