Skip to content

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

你可以通过 limitoffsetfiltersorder_by 控制返回结果的数量、筛选条件及排序方式。

计费说明

每次请求均会计费。参考费用以平台当前计费策略为准,扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

响应中的 cost 表示本次任务的费用参考值;如需进行账户账单核对,应优使用响应头中的人民币扣费金额。

请求参数

基础参数

参数类型说明
targetstring目标网站域名。不要 https://www.,例如 example.com
location_namestring条件填地区名称。当未提供 location_code 时填。当前接口支持美国地区。示例:United States
location_codeinteger条件填地区代码。当未提供 location_name 时填。当前接口支持美国地区,示例:2840
language_namestring条件填语言名称。当未提供 language_code 时填。示例:English
language_codestring条件填语言代码。当未提供 language_name 时填。示例:en
item_typesarray指定返回的搜索结果类型。若数组中 organic 以外的类型,结果将优数组中的第一个类型排序。未在数组中的结果类型不能用于筛选或排序。
filtersarray返回结果筛选规则,最多设置 8 个过滤条件。多个条件之间使用 andor
order_byarray返回结果排序规则。最多设置 3 条。排序方向支持 asc(升序)和 desc(降序)。
limitinteger返回的最大竞争域名数量。默认值为 100,最大值为 1000
offsetinteger结果偏移量。默认值为 0。例如设置为 10,将跳过前 10 条结果。
max_rank_groupinteger纳竞争分析的最高排名范围。默认值为 100。设置为 10 时分析 Bing 搜索结果前 10 名中的竞争域名。
exclude_top_domainsboolean是否排除大型网站。默认值为 false。设置为 true 后,将排除 Wikipedia、Pinterest、Amazon、Google、Facebook、WordPress、Medium、Quora、Reddit、YouTube、eBay、Instagram、Twitter、LinkedIn 等大型网站,以获得更的竞争域名。
intersecting_domainsarray用于提高结果准确性的域名。指定后,指标将基于目标域名与这些域名出现的 SERP 计算。最多可指定 20 个域名。
ignore_synonymsboolean是否忽略高度相似的。设置为 true 时返回核心,排除高度相似的。默认值为 false
tagstring自定义任务标识,最长 255 个字符。该值会原样返回在响应的 data 对象中,可用于任务与结果。

item_types 可选值

可用值取决于接口返回的数据类型。常见类型:

  • organic:自然搜索结果
  • paid:付费搜索结果
  • local_pack:本地结果
  • featured_snippet:精选摘要

filters 格式

支持以下运算符:

regexnot_regex<<=>>==<>innot_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 数组。

顶层字段

字段类型说明
versionstring当前 API 版本。
status_codeinteger请求级状态码。成功通常为 20000
status_messagestring请求级状态消息。
timestring请求执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
tasks_countintegertasks 数组中的任务总数。
tasks_errorintegertasks 数组中执行失败的任务数。
tasksarray任务结果数组。

tasks 字段

字段类型说明
idstring任务唯一标识,采用 UUID 格式。
status_codeinteger任务状态码。
status_messagestring任务状态消息。
timestring任务执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
result_countintegerresult 数组中的数量。
patharray请求路径。
dataobject本次请求中提交的任务参数。
resultarray分析结果数组。

result 字段

字段类型说明
se_typestring搜索引擎类型,本接口为 bing
targetstring请求中的目标域名。
location_codeinteger地区代码。
language_codestring语言代码。
total_countinteger数据库中与请求条件的结果总数。
items_countintegeritems 数组中返回的结果数量。
itemsarray目标域名及竞争域名的数据。

items 字段

每个 items素代表一个竞争域名或目标域名。

字段类型说明
se_typestring搜索引擎类型。
domainstring域名。
avg_positioninteger域名在 SERP 中的平均排名。该值根据交集计算;同一域名与不同目标网站组合时,结果可能不同。
sum_positioninteger域名在 SERP 中所有排名位置的总和。该值根据交集计算。
intersectionsinteger与目标域名产生交集的数量。
full_domain_metricsobject该域名所有排名的排名和流量指标。
metricsobject该域名与目标域名的排名和流量指标。
competitor_metricsobject竞争域名在上的排名和流量指标。

full_domain_metrics

该对象描述域名排名对应的指标,通常以下结果类型:

  • organic:自然搜索指标
  • paid:付费搜索指标
  • local_pack:自然搜索中的本地结果指标
  • featured_snippet:自然搜索中的精选摘要指标

metrics

该对象描述目标域名与当前域名的指标。该对象中的目标域名排名和流量数据根据双方的计算。

competitor_metrics

该对象描述当前竞争域名在上的排名和流量数据。

搜索结果类型指标对象

full_domain_metricsmetricscompetitor_metrics 中的各类结果对象均使用相同的字段结构。

字段类型说明
pos_1integer排名第 1 的 SERP 数量。
pos_2_3integer排名第 2–3 的 SERP 数量。
pos_4_10integer排名第 4–10 的 SERP 数量。
pos_11_20integer排名第 11–20 的 SERP 数量。
pos_21_30integer排名第 21–30 的 SERP 数量。
pos_31_40integer排名第 31–40 的 SERP 数量。
pos_41_50integer排名第 41–50 的 SERP 数量。
pos_51_60integer排名第 51–60 的 SERP 数量。
pos_61_70integer排名第 61–70 的 SERP 数量。
pos_71_80integer排名第 71–80 的 SERP 数量。
pos_81_90integer排名第 81–90 的 SERP 数量。
pos_91_100integer排名第 91–100 的 SERP 数量。
etvfloat估算流量。通常表示域名每月的估算流量,根据搜索量与点击率(CTR)计算。
countinteger含该域名的 SERP 总数。
estimated_paid_traffic_costfloat估算付费流量成本。根据估算流量和每次点击费用(CPC)推算,将相应流量通过 Bing 付费搜索获取时的预计月度成本。
is_newinteger新增排名数量。
is_upinteger排名上升的数量。
is_downinteger排名下降的数量。
is_lostinteger丢失排名数量,即上一次检查中存在、但本次检查未发现的排名数量。

不同结果类型的字段含义

organic

自然搜索结果的排名和流量指标。

  • etv:估算自然搜索月流量。
  • count:该域名的自然搜索 SERP 数量。
  • estimated_paid_traffic_cost:将估算自然流量转化为付费搜索流量时的预计月度成本。

付费搜索结果的排名和流量指标。

  • etv:估算付费搜索月流量。
  • count:该域名的付费搜索 SERP 数量。
  • estimated_paid_traffic_cost:根据付费流量及 CPC 推算的预计月度搜索流量成本。

local_pack

自然搜索结果中的本地结果排名和流量指标。

  • etv:本地结果带来的估算自然搜索月流量。
  • count:该域名的自然搜索 SERP 数量。
  • estimated_paid_traffic_cost:将相应自然流量通过付费搜索获取时的预计月度成本。

自然搜索结果中的精选摘要排名和流量指标。

  • 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:请求或任务成功。
  • 状态码:请求失败、参数错误、权限错误、频率限制或平台数据处理异常。

建议在程序中同时检查:

  1. HTTP 状态码;
  2. 顶层 status_code
  3. 每个任务的 status_code
  4. tasks_error 是否大于 0
  5. status_message 中的错误描述。

实用场景

  • 识别目标域名的主要竞争对手,基于 Bing 和 SERP 交集发现真实搜索竞争,为竞品单和市场格局分析提供依据。
  • 比较自然搜索与付费搜索表现,结合 organicpaid 的排名区间、估算流量和流量成本,评估竞争对手的 SEO 与广告结构。
  • 定位重叠机会,使用 intersectionsmetrics 分析双方排名的,筛选可抢占的主题和排名位置。
  • 跟踪竞争域名排名变化,利用 is_newis_upis_downis_lost 识别竞争对手新增、上升、下降及丢失的排名。
  • 筛选高价值竞争网站,通过 filtersmax_rank_groupexclude_top_domains 排除噪声结果,集中分析排名靠前且业务的竞争域名。

统一入口:官网 · LLM API · 控制台