主题
dataforseo_labs/bing/serp_competitors/live
GET /v3/dataforseo_labs/locations_and_languages
SERP 竞争对手
POST https://api.seermartech.cn/v3/dataforseo_labs/bing/serp_competitors/live
本接口根据指定,返回在 Bing 搜索结果中排名的域名列表,以及这些域名的平均排名、中位数排名、评级、预估流量和搜索可见度等数据。
请求体使用 UTF-8 编码的 JSON 格式,并以 JSON 数组提交任务参数:
json
[
{
"keywords": ["phone", "watch"],
"location_name": "United States",
"language_name": "English"
}
]单个请求最多可提交 200 个。平台限流以认证说明中的 30/60/120 次/分钟规则为准,同时进行的请求数最多为 30 个。
计费说明
每次请求均会产生费用。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
请求参数
每个任务对象支持以下字段。
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
keywords | array | 是 | 用于查询的数组。使用 UTF-8 编码,平台会将转换为小写格式。单个任务最多支持 200 个。 |
location_name | string | 条件填 | 地区完整名称。未指定 location_code 时填。当前接口支持美国地区。示例:United States |
location_code | integer | 条件填 | 地区唯一标识。未指定 location_name 时填。当前接口支持美国地区。示例:2840 |
language_name | string | 条件填 | 语言完整名称。未指定 language_code 时填。示例:English |
language_code | string | 条件填 | 语言唯一标识。未指定 language_name 时填。示例:en |
include_subdomains | boolean | 否 | 是否在搜索中子域名。设置为 false 时忽略子域名。默认值:true |
item_types | array | 否 | 要纳统计的搜索结果类型。可用值取决于平台 API 支持范围;未指定时使用默认结果类型。 |
limit | integer | 否 | 返回的最大域名数量。默认值:100,最大值:1000。 |
offset | integer | 否 | 返回结果的偏移量。默认值:0。例如设置为 10 时,跳过结果数组中的前 10 个域名。 |
filters | array | 否 | 结果过滤条件。最多可同时设置 8 个过滤器,条件之间使用 and 或 or 连接。 |
order_by | array | 否 | 结果排序规则。可使用与 filters 相同的字段和运算符。最多设置 3 条排序规则。 |
tag | string | 否 | 用户自定义任务标识,最大长度为 255 个字符。该值会原样返回在响应的 data 对象中。 |
地区与语言参数
location_name 与 location_code 二选一;language_name 与 language_code 二选一。
可通过以下接口获取可用的地区和语言:
text
GET https://api.seermartech.cn/v3/dataforseo_labs/locations_and_languagesfilters 过滤器
支持的运算符:
text
regex
not_regex
<
<=
>
>=
=
<>
in
not_in
ilike
not_ilike
like
not_like
match
not_match使用 like、not_like、ilike 或 not_ilike 时,可以使用 % 匹零个或多个字符。
示例:
json
"filters": [
["relevant_serp_items", ">", 0],
"and",
["median_position", "in", [1, 10]]
]order_by 排序规则
排序方向支持:
asc:升序desc:降序
多个排序规则使用逗号分隔,最多支持 3 条规则。例如:
json
"order_by": [
"etv,desc",
"avg_position,asc"
]响应字段
接口返回 JSON 对象 tasks 数组。
顶层响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本。 |
status_code | integer | 请求的通用状态码。20000 表示成功。 |
status_message | string | 请求的通用说明信息。 |
time | string | 请求执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
tasks_count | integer | tasks 数组中的任务数量。 |
tasks_error | integer | tasks 数组中执行失败的任务数量。 |
tasks | array | 任务结果数组。 |
任务字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式。 |
status_code | integer | 任务状态码,通常位于 10000-60000 范围。 |
status_message | string | 任务状态说明。 |
time | string | 任务执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
result_count | integer | result 数组中的数量。 |
path | array | 请求路径。 |
data | object | 创建任务时提交的参数。 |
result | array | 查询结果数组。 |
result 字段
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型,本接口返回 bing。 |
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 | 检测到的 SERP 竞争对手域名。 |
avg_position | integer | 域名针对指定的平均排名,即 keywords_positions 中排名值的算术平均值。 |
median_position | integer | 域名针对指定的排名中位数。 |
rating | integer | 排名可见度评级,计算方式为 sum(100 - keywords_positions)。 |
etv | float | 预估流量,表示指定预计每月为该网站带来的流量。该指标根据搜索量与在对应排名位置的点击率计算。 |
keywords_count | integer | 该域名在 SERP 中排名的指定数量。 |
visibility | float | SERP 可见度。排名在 1~10 位的分别获得 1~0.1 的可见度指数;排名在 11~20 位时固定为 0.05;排名在 20~100 位时为 0。 |
relevant_serp_items | integer | 与该域名的 SERP素数量。 |
keywords_positions | object | 排名映射,记录该域名针对各指定的 SERP 排名。 |
请求示例
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"],
"location_name": "United States",
"language_name": "English",
"filters": [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
],
"limit": 5
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/bing/serp_competitors/live"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
post_data = [
{
"keywords": ["phone", "watch"],
"location_name": "United States",
"language_name": "English",
"filters": [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]],
],
"limit": 5,
}
]
response = requests.post(url, headers=headers, json=post_data)
result = response.json()
if result.get("status_code") == 20000:
print(result)
else:
print(
"请求失败。状态码:%s,信息:%s"
% (result.get("status_code"), result.get("status_message"))
)TypeScript
typescript
import axios from "axios";
const postArray = [
{
keywords: ["phone", "watch"],
location_name: "United States",
language_name: "English",
filters: [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]],
],
limit: 5,
},
];
axios
.post(
"https://api.seermartech.cn/v3/dataforseo_labs/bing/serp_competitors/live",
postArray,
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
)
.then((response) => {
// 处理响应数据
console.log(response.data);
})
.catch((error) => {
// 处理请求错误
console.error(error.response?.data || error.message);
});响应示例
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": [
{
"id": "01234567-89ab-cdef-0123-456789abcdef",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0950 sec.",
"cost": 0.0113,
"result_count": 1,
"path": [
"v3",
"dataforseo_labs",
"bing",
"serp_competitors",
"live"
],
"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]]
],
"limit": 5
},
"result": [
{
"se_type": "bing",
"seed_keywords": ["phone", "watch"],
"location_code": 2840,
"language_code": "en",
"total_count": 13,
"items_count": 5,
"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": {
"watch": 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
}
}
]
}
]
}
]
}状态码与异常处理
请根据顶层 status_code 以及每个任务中的 status_code 判断请求和任务是否成功。建议客户端同时处理以下:
- HTTP 请求失败;
- 顶层
status_code非20000; tasks_error大于0;- 单个任务的
status_code非成功状态; result为空或返回结果数量少于预期。
完整状态码应以本平台的错误码说明为准。
实用场景
- 识别目标的主要排名域名,快速建立 Bing SERP 竞争对手名单,为竞品研究和市场分析提供数据基础。
- 比较竞争域名的平均排名与中位数排名,定位排名更稳定的竞争对手,制定和外链优化策略。
- 按
etv、visibility或keywords_count筛选竞争对手,优分析能够获得较高搜索流量和可见度的网站。 - 通过
keywords_positions反查排名归属,发现竞争对手覆盖而自身未覆盖的,扩展 SEO选题。 - 使用
limit、offset、filters和order_by分页整理结果,构建可复用的竞品排名监控和报表系统。