Skip to content

竞争对手域名分析

POST /v3/dataforseo_labs/google/competitors_domain/live

接口说明

POST https://api.seermartech.cn/v3/dataforseo_labs/google/competitors_domain/live

本接口用于分析目标域名与竞争对手域名在 Google 自然搜索、付费搜索及 SERP 类型中的排名和流量数据。接口会返回:

  • 与目标域名排名的竞争对手域名;
  • 竞争对手域名的自然搜索和付费搜索表现;
  • 目标域名与竞争对手在相同 SERP 中的交集指标;
  • 估算流量、流量价值、排名区间及排名变化数据;
  • 可选的点击流性别和年龄分布数据。

数据通常每周更新,最新更新时间可通过 /v3/dataforseo_labs/status 查询。

请求限制与计费

  • 请求体使用 UTF-8 编码的 JSON 格式。
  • POST 请求体是 JSON 数组,单次 Live API 请求只能 1 个任务。 平台限流以认证说明中的 30/60/120 次/分钟规则为准。
  • 同时进行的请求数量最多为 30 个。
  • 可通过 limitoffsetfiltersorder_by 控制结果数量、筛选条件和排序方式。
  • 每次请求都会计费。
  • 启用 include_clickstream_data 后,请求费用按双倍计算。
  • 实扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

请求参数

任务参数

参数类型说明
targetstring目标网站域名。填写时不要 https://www.。也可以传页面 URL,但分析结果仍按该 URL 所属域名返回。
location_namestring条件填地区名称。当未指定 location_code 时填。location_namelocation_code 至少指定一个。
location_codeinteger条件填地区代码。当未指定 location_name 时填。可通过 /v3/dataforseo_labs/locations_and_languages 获取。
language_namestring条件填语言名称。当未指定 language_code 时填。language_namelanguage_code 至少指定一个。
language_codestring条件填语言代码。当未指定 language_name 时填。可通过 /v3/dataforseo_labs/locations_and_languages 获取。
item_typesarray指定返回的 SERP 类型。可选值 organicpaidlocal_packfeatured_snippet。如果数组中 organic 以外的类型,结果将按数组中的第一种类型排序;未返回的类型不能用于筛选或排序。
include_clickstream_databoolean是否返回点击流指标。设为 true 时,返回 clickstream_etvclickstream_gender_distributionclickstream_age_distribution。默认值为 false,启用后费用按双倍计算。
filtersarray结果筛选条件,最多 8 个。多个条件之间使用 andor 逻辑运算符。支持 regexnot_regex<<=>>==<>innot_in
order_byarray结果排序规则。可使用与 filters 相同的字段和值,并通过 ascdesc 指定升序或降序。单次请求最多设置 3 条排序规则。
limitinteger返回的最大竞争对手域名数量。默认值为 100,最大值为 1000
offsetinteger结果偏移量。默认值为 0。例如设置为 10 时,将跳过前 10 条结果。
max_rank_groupinteger纳竞争分析的最高排名范围。默认值为 100。设置为 10 时从 Google 前 10 名结果中提取竞争对手。
exclude_top_domainsboolean是否排除大型网站。默认值为 false。设为 true 后,将排除 Wikipedia、Pinterest、Amazon、Google、Facebook、WordPress、Medium、Quora、Reddit、YouTube、eBay、UOL、Instagram、OLX、Twitter、LinkedIn 和 SlideShare 等网站。
exclude_domainsarray要从结果中排除的域名列表,最多 1000 个。
intersecting_domainsarray用于提高结果准确性的附加域名,最多 20 个。指定后,指标将基于目标域名与这些域名同时出现的 SERP 计算。
ignore_synonymsboolean是否忽略高度相似的。设为 true 时返回核心对应的数据。默认值为 false
tagstring用户自定义任务标识,最长 255 个字符。该值会原样返回在响应的 data 对象中,可用于任务与结果。

地区和语言示例

json
{
  "location_name": "United Kingdom",
  "location_code": 2840,
  "language_name": "English",
  "language_code": "en"
}

location_namelocation_code 二选一;language_namelanguage_code 二选一。可调用以下接口获取可用地区和语言:

https://api.seermartech.cn/v3/dataforseo_labs/locations_and_languages

筛选和排序示例

以下示例表示返回自然搜索结果数量不少于 50 的竞争对手:

json
{
  "filters": [
    ["metrics.organic.count", ">=", 50]
  ],
  "order_by": [
    "intersections,desc"
  ]
}

多个条件示例:

json
{
  "filters": [
    [
      ["metrics.organic.count", ">=", 50],
      "and",
      ["intersections", ">", 10]
    ],
    "or",
    ["domain", "regex", "example"]
  ]
}

请求示例

curl

bash
curl --location --request POST \
  "https://api.seermartech.cn/v3/dataforseo_labs/google/competitors_domain/live" \
  --header "Authorization: Bearer smt_live_YOUR_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '[
    {
      "target": "newmouth.com",
      "location_code": 2840,
      "language_name": "English",
      "intersecting_domains": [
        "dentaly.org",
        "health.com",
        "trysnow.com"
      ],
      "filters": [
        ["metrics.organic.count", ">=", 50]
      ],
      "limit": 3
    }
  ]'

Python

python
import requests

url = "https://api.seermartech.cn/v3/dataforseo_labs/google/competitors_domain/live"

headers = {
    "Authorization": "Bearer smt_live_YOUR_KEY",
    "Content-Type": "application/json",
}

# POST 请求体是 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)
result = response.json()

if result.get("status_code") == 20000:
    print(result)
else:
    print(
        "请求失败,错误码:{},错误信息:{}".format(
            result.get("status_code"),
            result.get("status_message"),
        )
    )

TypeScript

typescript
import axios from "axios";

const 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,
  },
];

axios({
  method: "post",
  url: "https://api.seermartech.cn/v3/dataforseo_labs/google/competitors_domain/live",
  headers: {
    Authorization: "Bearer smt_live_YOUR_KEY",
    "Content-Type": "application/json",
  },
  data: payload,
})
  .then((response) => {
    // 处理响应数据
    console.log(response.data);
  })
  .catch((error) => {
    console.error("请求失败:", error.response?.data || error.message);
  });

响应结构

接口返回 JSON 对象 tasks 为任务数组。以下为结构示例:

json
{
  "version": "0.1.20240514",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "0.5412 sec.",
  "cost": 0.0103,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "status_code": 20000,
      "status_message": "Ok.",
      "time": "0.5000 sec.",
      "cost": 0.0103,
      "result_count": 1,
      "path": [
        "v3",
        "dataforseo_labs",
        "google",
        "competitors_domain",
        "live"
      ],
      "data": {
        "api": "dataforseo_labs",
        "function": "competitors_domain",
        "se_type": "google",
        "target": "newmouth.com",
        "location_code": 2840,
        "language_name": "English",
        "limit": 3
      },
      "result": [
        {
          "se_type": "google",
          "target": "newmouth.com",
          "location_code": 2840,
          "language_code": "en",
          "total_count": 123,
          "items_count": 3,
          "items": []
        }
      ]
    }
  ]
}

> cost 字段为容字段,人民币扣费请以响应头 X-SeerMarTech-Charge-CNY 为准。

响应字段

顶层字段

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

tasks 任务字段

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

结果字段

结果级字段

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

items 竞争对手字段

字段类型说明
se_typestring搜索引擎类型。
domainstring域名。
avg_positionfloat域名在 SERP 中的平均排名。根据交集计算;与不同目标域名组合时,数值可能不同。
sum_positioninteger域名所有排名位置的总和。该值同样基于交集计算。
intersectionsinteger与目标域名排名的数量。
full_domain_metricsobject该域名排名的排名和流量指标。
metricsobject该域名与目标域名的指标。该对象中的数据针对目标域名。
competitor_metricsobject该域名与目标域名的指标。该对象中的数据针对返回的竞争对手域名。

指标对象

full_domain_metricsmetricscompetitor_metrics 均可能以下 SERP 类型对象:

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

  • full_domain_metrics:统计域名排名;
  • metrics:统计目标域名与当前竞争对手的,数据主体为目标域名;
  • competitor_metrics:统计相同,数据主体为当前竞争对手域名。

SERP 类型指标字段

以下字段适用于 organicpaidlocal_packfeatured_snippet 对象:

字段类型说明
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估算流量。通常按所有的点击率与搜索量乘积计算,表示估算的月度流量。
countinteger含该域名的 SERP 总数。
estimated_paid_traffic_costfloat估算付费流量成本。表示通过 Google 搜索广告获得相应流量的预计月度成本,通常基于 etv 与付费 CPC 计算。
is_newinteger新发现的排名数量。
is_upinteger排名上升的数量。
is_downinteger排名下降的数量。
is_lostinteger丢失的排名数量,即上次检查时存在、本次检查未发现的数量。
clickstream_etvinteger基于点击流数据计算的估算流量。在 include_clickstream_datatrue 时返回。
clickstream_gender_distributionobject点击流指标的性别分布。在启用点击流数据时返回。
clickstream_age_distributionobject点击流指标的年龄分布。在启用点击流数据时返回。

对于 organiclocal_packfeatured_snippetetv 表示估算的自然搜索月度流量;对于 paidetv 表示估算的付费搜索月度流量。

点击流性别分布

字段类型说明
femaleinteger点击流数据集中女性用户数量。
maleinteger点击流数据集中男性用户数量。

点击流年龄分布

字段类型说明
18-24integer18–24 岁用户数量。
25-34integer25–34 岁用户数量。
35-44integer35–44 岁用户数量。
45-54integer45–54 岁用户数量。
55-64integer55–64 岁用户数量。

筛选字段路径说明

可用于筛选和排序的字段通常:

text
domain
avg_position
sum_position
intersections
full_domain_metrics.organic.count
full_domain_metrics.organic.etv
metrics.organic.count
metrics.organic.etv
competitor_metrics.organic.count
competitor_metrics.organic.etv

可筛选字段以返回结构和接口版本为准。建议在调用方对 status_codestatus_message 及异常响应进行完整处理。

错误处理

请根据响应顶层的 status_code、任务级 status_code 和对应的 status_message 判断请求是否成功:

  • 20000:请求成功;
  • 顶层请求成功但 tasks_error 大于 0:表示部分任务执行失败;
  • 任务级状态码非 20000:表示该任务执行失败,应根据 status_message 处理。

实用场景

  • 识别最多的竞争对手:根据 intersections 对域名排序,快速确定最直接的 SEO 竞争对象,优化竞品监测和资源。
  • 发现竞争对手的流量增长机会:结合 full_domain_metrics.organic.etv、排名区间和 is_new 等字段,定位竞争对手新获得排名的领域。
  • 比较自然搜索与付费搜索表现:对比 organicpaid 指标,评估竞争对手的 SEO 与 SEM 流量结构,制定渠道预算。
  • 分析本地搜索和精选摘要占位:使用 local_packfeatured_snippet 数据,识别本地结果和精选摘要中的竞争差距,指导及本地 SEO 优化。
  • 评估竞争的人群特征:启用 include_clickstream_data,结合性别和年龄分布分析受众,为定位、广告定向和用户画像提供依据。

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