主题
Bing 竞争域名分析(实时)
本接口使用 POST 方法,路径为:
/v3/dataforseo_labs/bing/competitors_domain/live
用于分析目标域名在 Bing 自然搜索和付费搜索中的竞争域名,并返回排名、流量、交集及 SERP 特性数据。数据通常每周更新,最新更新时间可通过状态接口查询。
接口信息
- 请求方式:
POST - 请求地址:
https://api.seermartech.cn/v3/dataforseo_labs/bing/competitors_domain/live - 请求格式:
application/json - 请求体格式:JSON 数组,例如
[{ ... }] - 单次请求最大任务数:以平台账户及接口限制为准 平台限流以认证说明中的 30/60/120 次/分钟规则为准
- 最大并发请求数:30
你可以通过 limit、offset、filters 和 order_by 控制返回结果的数量、筛选条件及排序方式。
计费说明
每次请求均会计费。参考费用以平台当前计费策略为准,扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
响应中的 cost 表示本次任务的费用参考值;如需进行账户账单核对,应优使用响应头中的人民币扣费金额。
请求参数
基础参数
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
target | string | 是 | 目标网站域名。不要 https:// 或 www.,例如 example.com。 |
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。 |
item_types | array | 否 | 指定返回的搜索结果类型。若数组中 organic 以外的类型,结果将优数组中的第一个类型排序。未在数组中的结果类型不能用于筛选或排序。 |
filters | array | 否 | 返回结果筛选规则,最多设置 8 个过滤条件。多个条件之间使用 and 或 or。 |
order_by | array | 否 | 返回结果排序规则。最多设置 3 条。排序方向支持 asc(升序)和 desc(降序)。 |
limit | integer | 否 | 返回的最大竞争域名数量。默认值为 100,最大值为 1000。 |
offset | integer | 否 | 结果偏移量。默认值为 0。例如设置为 10,将跳过前 10 条结果。 |
max_rank_group | integer | 否 | 纳竞争分析的最高排名范围。默认值为 100。设置为 10 时分析 Bing 搜索结果前 10 名中的竞争域名。 |
exclude_top_domains | boolean | 否 | 是否排除大型网站。默认值为 false。设置为 true 后,将排除 Wikipedia、Pinterest、Amazon、Google、Facebook、WordPress、Medium、Quora、Reddit、YouTube、eBay、Instagram、Twitter、LinkedIn 等大型网站,以获得更的竞争域名。 |
intersecting_domains | array | 否 | 用于提高结果准确性的域名。指定后,指标将基于目标域名与这些域名出现的 SERP 计算。最多可指定 20 个域名。 |
ignore_synonyms | boolean | 否 | 是否忽略高度相似的。设置为 true 时返回核心,排除高度相似的。默认值为 false。 |
tag | string | 否 | 自定义任务标识,最长 255 个字符。该值会原样返回在响应的 data 对象中,可用于任务与结果。 |
item_types 可选值
可用值取决于接口返回的数据类型。常见类型:
organic:自然搜索结果paid:付费搜索结果local_pack:本地结果featured_snippet:精选摘要
filters 格式
支持以下运算符:
regex、not_regex、<、<=、>、>=、=、<>、in、not_in
示例:
json
[
"metrics.organic.count",
">=",
50
]多个条件示例:
json
[
[
"metrics.organic.count",
">=",
50
],
"and",
[
"intersections",
">",
10
]
]order_by 格式
排序规则使用字段路径及排序方向组成:
json
[
"intersections,desc",
"metrics.organic.etv,desc",
"avg_position,asc"
]请求示例
curl
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/dataforseo_labs/bing/competitors_domain/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"target": "newmouth.com",
"location_code": 2840,
"language_code": "en",
"intersecting_domains": [
"dentaly.org",
"health.com",
"trysnow.com"
],
"filters": [
[
"metrics.organic.count",
">=",
50
]
],
"order_by": [
"intersections,desc"
],
"limit": 3
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/bing/competitors_domain/live"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
payload = [
{
"target": "newmouth.com",
"location_name": "United States",
"language_name": "English",
"intersecting_domains": [
"dentaly.org",
"health.com",
"trysnow.com",
],
"filters": [
["metrics.organic.count", ">=", 50]
],
"limit": 3,
}
]
response = requests.post(url, headers=headers, json=payload, timeout=60)
response.raise_for_status()
result = response.json()
if result.get("status_code") == 20000:
print(result)
else:
print(
"请求失败:",
result.get("status_code"),
result.get("status_message"),
)TypeScript
typescript
import axios from "axios";
const response = await axios.post(
"https://api.seermartech.cn/v3/dataforseo_labs/bing/competitors_domain/live",
[
{
target: "newmouth.com",
location_code: 2840,
language_code: "en",
intersecting_domains: [
"dentaly.org",
"health.com",
"trysnow.com",
],
filters: [
["metrics.organic.count", ">=", 50],
],
limit: 3,
},
],
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
);
if (response.data.status_code === 20000) {
console.log(response.data);
} else {
console.error(
response.data.status_code,
response.data.status_message
);
}响应结构
接口返回 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 | 任务结果数组。 |
tasks 字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,采用 UUID 格式。 |
status_code | integer | 任务状态码。 |
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。 |
target | string | 请求中的目标域名。 |
location_code | integer | 地区代码。 |
language_code | string | 语言代码。 |
total_count | integer | 数据库中与请求条件的结果总数。 |
items_count | integer | items 数组中返回的结果数量。 |
items | array | 目标域名及竞争域名的数据。 |
items 字段
每个 items素代表一个竞争域名或目标域名。
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型。 |
domain | string | 域名。 |
avg_position | integer | 域名在 SERP 中的平均排名。该值根据交集计算;同一域名与不同目标网站组合时,结果可能不同。 |
sum_position | integer | 域名在 SERP 中所有排名位置的总和。该值根据交集计算。 |
intersections | integer | 与目标域名产生交集的数量。 |
full_domain_metrics | object | 该域名所有排名的排名和流量指标。 |
metrics | object | 该域名与目标域名的排名和流量指标。 |
competitor_metrics | object | 竞争域名在上的排名和流量指标。 |
full_domain_metrics
该对象描述域名排名对应的指标,通常以下结果类型:
organic:自然搜索指标paid:付费搜索指标local_pack:自然搜索中的本地结果指标featured_snippet:自然搜索中的精选摘要指标
metrics
该对象描述目标域名与当前域名的指标。该对象中的目标域名排名和流量数据根据双方的计算。
competitor_metrics
该对象描述当前竞争域名在上的排名和流量数据。
搜索结果类型指标对象
full_domain_metrics、metrics 和 competitor_metrics 中的各类结果对象均使用相同的字段结构。
| 字段 | 类型 | 说明 |
|---|---|---|
pos_1 | integer | 排名第 1 的 SERP 数量。 |
pos_2_3 | integer | 排名第 2–3 的 SERP 数量。 |
pos_4_10 | integer | 排名第 4–10 的 SERP 数量。 |
pos_11_20 | integer | 排名第 11–20 的 SERP 数量。 |
pos_21_30 | integer | 排名第 21–30 的 SERP 数量。 |
pos_31_40 | integer | 排名第 31–40 的 SERP 数量。 |
pos_41_50 | integer | 排名第 41–50 的 SERP 数量。 |
pos_51_60 | integer | 排名第 51–60 的 SERP 数量。 |
pos_61_70 | integer | 排名第 61–70 的 SERP 数量。 |
pos_71_80 | integer | 排名第 71–80 的 SERP 数量。 |
pos_81_90 | integer | 排名第 81–90 的 SERP 数量。 |
pos_91_100 | integer | 排名第 91–100 的 SERP 数量。 |
etv | float | 估算流量。通常表示域名每月的估算流量,根据搜索量与点击率(CTR)计算。 |
count | integer | 含该域名的 SERP 总数。 |
estimated_paid_traffic_cost | float | 估算付费流量成本。根据估算流量和每次点击费用(CPC)推算,将相应流量通过 Bing 付费搜索获取时的预计月度成本。 |
is_new | integer | 新增排名数量。 |
is_up | integer | 排名上升的数量。 |
is_down | integer | 排名下降的数量。 |
is_lost | integer | 丢失排名数量,即上一次检查中存在、但本次检查未发现的排名数量。 |
不同结果类型的字段含义
organic
自然搜索结果的排名和流量指标。
etv:估算自然搜索月流量。count:该域名的自然搜索 SERP 数量。estimated_paid_traffic_cost:将估算自然流量转化为付费搜索流量时的预计月度成本。
paid
付费搜索结果的排名和流量指标。
etv:估算付费搜索月流量。count:该域名的付费搜索 SERP 数量。estimated_paid_traffic_cost:根据付费流量及 CPC 推算的预计月度搜索流量成本。
local_pack
自然搜索结果中的本地结果排名和流量指标。
etv:本地结果带来的估算自然搜索月流量。count:该域名的自然搜索 SERP 数量。estimated_paid_traffic_cost:将相应自然流量通过付费搜索获取时的预计月度成本。
featured_snippet
自然搜索结果中的精选摘要排名和流量指标。
etv:精选摘要带来的估算自然搜索月流量。count:该域名的自然搜索 SERP 数量。estimated_paid_traffic_cost:将相应自然流量通过付费搜索获取时的预计月度成本。
响应示例
json
{
"version": "0.1.20220216",
"status_code": 20000,
"status_message": "Ok.",
"time": "2.0979 sec.",
"cost": 0.011,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": " ಕಾಂ",
"status_code": 20000,
"status_message": "Ok.",
"time": "2.0512 sec.",
"cost": 0.011,
"result_count": 1,
"path": [
"v3",
"dataforseo_labs",
"bing",
"competitors_domain",
"live"
],
"data": {
"api": "dataforseo_labs",
"function": "competitors_domain",
"se_type": "bing",
"target": "newmouth.com",
"language_name": "English",
"location_code": 2840,
"limit": 10
},
"result": [
{
"se_type": "bing",
"target": "newmouth.com",
"location_code": 2840,
"language_code": "en",
"total_count": 1,
"items_count": 1,
"items": [
{
"se_type": "bing",
"domain": "example.com",
"avg_position": 18,
"sum_position": 180,
"intersections": 42,
"full_domain_metrics": {
"organic": {
"pos_1": 3,
"pos_2_3": 8,
"pos_4_10": 21,
"pos_11_20": 35,
"etv": 12500.5,
"count": 120,
"estimated_paid_traffic_cost": 8400.25,
"is_new": 4,
"is_up": 12,
"is_down": 6,
"is_lost": 2
},
"paid": {
"pos_1": 1,
"pos_2_3": 2,
"pos_4_10": 5,
"etv": 2100.2,
"count": 18,
"estimated_paid_traffic_cost": 3200.1,
"is_new": 1,
"is_up": 2,
"is_down": 1,
"is_lost": 0
}
},
"metrics": {
"organic": {
"pos_1": 1,
"pos_2_3": 3,
"pos_4_10": 7,
"etv": 1900.4,
"count": 20,
"estimated_paid_traffic_cost": 1300.6,
"is_new": 1,
"is_up": 3,
"is_down": 1,
"is_lost": 0
}
},
"competitor_metrics": {
"organic": {
"pos_1": 2,
"pos_2_3": 4,
"pos_4_10": 10,
"etv": 2400.8,
"count": 25,
"estimated_paid_traffic_cost": 1700.3,
"is_new": 2,
"is_up": 4,
"is_down": 2,
"is_lost": 1
}
}
}
]
}
]
}
]
}状态码与异常处理
请根据顶层 status_code 和任务级 status_code 判断请求及任务是否成功:
20000:请求或任务成功。- 状态码:请求失败、参数错误、权限错误、频率限制或平台数据处理异常。
建议在程序中同时检查:
- HTTP 状态码;
- 顶层
status_code; - 每个任务的
status_code; tasks_error是否大于0;status_message中的错误描述。
实用场景
- 识别目标域名的主要竞争对手,基于 Bing 和 SERP 交集发现真实搜索竞争,为竞品单和市场格局分析提供依据。
- 比较自然搜索与付费搜索表现,结合
organic、paid的排名区间、估算流量和流量成本,评估竞争对手的 SEO 与广告结构。 - 定位重叠机会,使用
intersections和metrics分析双方排名的,筛选可抢占的主题和排名位置。 - 跟踪竞争域名排名变化,利用
is_new、is_up、is_down和is_lost识别竞争对手新增、上升、下降及丢失的排名。 - 筛选高价值竞争网站,通过
filters、max_rank_group和exclude_top_domains排除噪声结果,集中分析排名靠前且业务的竞争域名。