主题
竞争对手域名分析
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 个。
- 可通过
limit、offset、filters和order_by控制结果数量、筛选条件和排序方式。 - 每次请求都会计费。
- 启用
include_clickstream_data后,请求费用按双倍计算。 - 实扣费以响应头
X-SeerMarTech-Charge-CNY为准。
请求参数
任务参数
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
target | string | 是 | 目标网站域名。填写时不要 https:// 或 www.。也可以传页面 URL,但分析结果仍按该 URL 所属域名返回。 |
location_name | string | 条件填 | 地区名称。当未指定 location_code 时填。location_name 与 location_code 至少指定一个。 |
location_code | integer | 条件填 | 地区代码。当未指定 location_name 时填。可通过 /v3/dataforseo_labs/locations_and_languages 获取。 |
language_name | string | 条件填 | 语言名称。当未指定 language_code 时填。language_name 与 language_code 至少指定一个。 |
language_code | string | 条件填 | 语言代码。当未指定 language_name 时填。可通过 /v3/dataforseo_labs/locations_and_languages 获取。 |
item_types | array | 否 | 指定返回的 SERP 类型。可选值 organic、paid、local_pack、featured_snippet。如果数组中 organic 以外的类型,结果将按数组中的第一种类型排序;未返回的类型不能用于筛选或排序。 |
include_clickstream_data | boolean | 否 | 是否返回点击流指标。设为 true 时,返回 clickstream_etv、clickstream_gender_distribution 和 clickstream_age_distribution。默认值为 false,启用后费用按双倍计算。 |
filters | array | 否 | 结果筛选条件,最多 8 个。多个条件之间使用 and 或 or 逻辑运算符。支持 regex、not_regex、<、<=、>、>=、=、<>、in、not_in。 |
order_by | array | 否 | 结果排序规则。可使用与 filters 相同的字段和值,并通过 asc 或 desc 指定升序或降序。单次请求最多设置 3 条排序规则。 |
limit | integer | 否 | 返回的最大竞争对手域名数量。默认值为 100,最大值为 1000。 |
offset | integer | 否 | 结果偏移量。默认值为 0。例如设置为 10 时,将跳过前 10 条结果。 |
max_rank_group | integer | 否 | 纳竞争分析的最高排名范围。默认值为 100。设置为 10 时从 Google 前 10 名结果中提取竞争对手。 |
exclude_top_domains | boolean | 否 | 是否排除大型网站。默认值为 false。设为 true 后,将排除 Wikipedia、Pinterest、Amazon、Google、Facebook、WordPress、Medium、Quora、Reddit、YouTube、eBay、UOL、Instagram、OLX、Twitter、LinkedIn 和 SlideShare 等网站。 |
exclude_domains | array | 否 | 要从结果中排除的域名列表,最多 1000 个。 |
intersecting_domains | array | 否 | 用于提高结果准确性的附加域名,最多 20 个。指定后,指标将基于目标域名与这些域名同时出现的 SERP 计算。 |
ignore_synonyms | boolean | 否 | 是否忽略高度相似的。设为 true 时返回核心对应的数据。默认值为 false。 |
tag | string | 否 | 用户自定义任务标识,最长 255 个字符。该值会原样返回在响应的 data 对象中,可用于任务与结果。 |
地区和语言示例
json
{
"location_name": "United Kingdom",
"location_code": 2840,
"language_name": "English",
"language_code": "en"
}location_name 与 location_code 二选一;language_name 与 language_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 为准。
响应字段
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
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 | 任务状态码,通常在 10000–60000 范围。 |
status_message | string | 任务状态说明。 |
time | string | 任务执行耗时。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
result_count | integer | result 数组中的数量。 |
path | array | 请求 API 路径。 |
data | object | 本次请求中提交的任务参数。 |
result | array | 任务结果数组。 |
结果字段
结果级字段
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型,本接口为 google。 |
target | string | 请求中的目标域名。 |
location_code | integer | 地区代码。 |
language_code | string | 语言代码。 |
total_count | integer | 数据库中与当前请求的结果总数。 |
items_count | integer | items 数组返回的结果数量。 |
items | array | 目标域名及竞争对手域名的详细数据。 |
items 竞争对手字段
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型。 |
domain | string | 域名。 |
avg_position | float | 域名在 SERP 中的平均排名。根据交集计算;与不同目标域名组合时,数值可能不同。 |
sum_position | integer | 域名所有排名位置的总和。该值同样基于交集计算。 |
intersections | integer | 与目标域名排名的数量。 |
full_domain_metrics | object | 该域名排名的排名和流量指标。 |
metrics | object | 该域名与目标域名的指标。该对象中的数据针对目标域名。 |
competitor_metrics | object | 该域名与目标域名的指标。该对象中的数据针对返回的竞争对手域名。 |
指标对象
full_domain_metrics、metrics 和 competitor_metrics 均可能以下 SERP 类型对象:
organic:自然搜索结果;paid:付费搜索结果;local_pack:自然搜索中的本地结果;featured_snippet:自然搜索中的精选摘要。
:
full_domain_metrics:统计域名排名;metrics:统计目标域名与当前竞争对手的,数据主体为目标域名;competitor_metrics:统计相同,数据主体为当前竞争对手域名。
SERP 类型指标字段
以下字段适用于 organic、paid、local_pack 和 featured_snippet 对象:
| 字段 | 类型 | 说明 |
|---|---|---|
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 | 估算流量。通常按所有的点击率与搜索量乘积计算,表示估算的月度流量。 |
count | integer | 含该域名的 SERP 总数。 |
estimated_paid_traffic_cost | float | 估算付费流量成本。表示通过 Google 搜索广告获得相应流量的预计月度成本,通常基于 etv 与付费 CPC 计算。 |
is_new | integer | 新发现的排名数量。 |
is_up | integer | 排名上升的数量。 |
is_down | integer | 排名下降的数量。 |
is_lost | integer | 丢失的排名数量,即上次检查时存在、本次检查未发现的数量。 |
clickstream_etv | integer | 基于点击流数据计算的估算流量。在 include_clickstream_data 为 true 时返回。 |
clickstream_gender_distribution | object | 点击流指标的性别分布。在启用点击流数据时返回。 |
clickstream_age_distribution | object | 点击流指标的年龄分布。在启用点击流数据时返回。 |
对于 organic、local_pack 和 featured_snippet,etv 表示估算的自然搜索月度流量;对于 paid,etv 表示估算的付费搜索月度流量。
点击流性别分布
| 字段 | 类型 | 说明 |
|---|---|---|
female | integer | 点击流数据集中女性用户数量。 |
male | integer | 点击流数据集中男性用户数量。 |
点击流年龄分布
| 字段 | 类型 | 说明 |
|---|---|---|
18-24 | integer | 18–24 岁用户数量。 |
25-34 | integer | 25–34 岁用户数量。 |
35-44 | integer | 35–44 岁用户数量。 |
45-54 | integer | 45–54 岁用户数量。 |
55-64 | integer | 55–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_code、status_message 及异常响应进行完整处理。
错误处理
请根据响应顶层的 status_code、任务级 status_code 和对应的 status_message 判断请求是否成功:
20000:请求成功;- 顶层请求成功但
tasks_error大于0:表示部分任务执行失败; - 任务级状态码非
20000:表示该任务执行失败,应根据status_message处理。
实用场景
- 识别最多的竞争对手:根据
intersections对域名排序,快速确定最直接的 SEO 竞争对象,优化竞品监测和资源。 - 发现竞争对手的流量增长机会:结合
full_domain_metrics.organic.etv、排名区间和is_new等字段,定位竞争对手新获得排名的领域。 - 比较自然搜索与付费搜索表现:对比
organic和paid指标,评估竞争对手的 SEO 与 SEM 流量结构,制定渠道预算。 - 分析本地搜索和精选摘要占位:使用
local_pack与featured_snippet数据,识别本地结果和精选摘要中的竞争差距,指导及本地 SEO 优化。 - 评估竞争的人群特征:启用
include_clickstream_data,结合性别和年龄分布分析受众,为定位、广告定向和用户画像提供依据。