主题
Google SERP 竞争域分析(Live)
本接口用于根据你提交的一组,返回在这些搜索结果中排名的竞争域名列表。除域名本身外,还会提供对应的 SERP 排名表现、评分、预估流量(ETV)和可见度(Visibility)等指标,便于快速识别搜索竞争对手。
接口说明
- 请求方式:
POST - 接口地址:
https://api.seermartech.cn/v3/dataforseo_labs/google/serp_competitors/live - 请求格式:
application/json - 请求体结构:JSON 数组
[{...}]
计费与调用限制
本接口按请求计费。
根据示例响应中的费用,本次调用参考价约 ¥0.1680 / 次。 扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
调用限制:
- 每分钟最多
2000次 API 调用 - 最大并发请求数
30
功能特性
你可以通过本接口:
- 指定最多 200 个进行竞争域分析
- 按国家/地区与语言限定结果范围
- 控制是否子域名
- 指定返回数量与分页偏移
- 对结果进行过滤和排序
请求参数
顶层请求体示例
json
[
{
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840,
"item_types": [],
"limit": 5
}
]参数说明
| 字段 | 类型 | 说明 |
|---|---|---|
keywords | array | 填。数组,结果将基于该数组中的生成。使用 UTF-8 编码;会自动转换为小写。最多支持 200 个。 |
location_name | string | 地区名。未提供 location_code 时填。location_name 与 location_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区列表。示例:United Kingdom |
location_code | integer | 地区唯一标识。未提供 location_name 时填。location_name 与 location_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区列表。示例:2840 |
language_name | string | 语言名。未提供 language_code 时填。language_name 与 language_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用语言列表。示例:English |
language_code | string | 语言唯一标识。未提供 language_name 时填。language_name 与 language_code 二选一。示例:en |
include_subdomains | boolean | 是否在分析中子域名。可选,默认值:true。如设为 false,则忽略子域名。 |
item_types | array | 搜索结果类型。用于限定响应中统计的搜索结果类型。可选。未指定时使用默认类型集合。 |
limit | integer | 返回域名数量上限。可选,默认值:100,最大值:1000。 |
offset | integer | 结果偏移量。可选,默认值:0。例如设置为 10 时,会跳过前 10 条结果,从后续结果开始返回。 |
filters | array | 结果过滤条件数组。可选。最多支持 8 个过滤条件,条件之间需使用逻辑运算符 and 或 or 连接。支持运算符:regex、not_regex、<、<=、>、>=、=、<>、in、not_in、match、not_match、ilike、not_ilike、like、not_like。 like / not_like / ilike / not_ilike 支持 % 通任意长度字符串。过滤器规则可参考 /v3/dataforseo_labs/filters。 |
order_by | array | 排序规则。可选。可使用与 filters 相同的字段作为排序字段,排序方式为 asc 或 desc。单次请求最多设置 3 条排序规则。多条规则之间使用逗号分隔。 |
tag | string | 自定义任务标识。可选,最大长度 255 字符。可用于在响应中识别和匹该任务;返回值会出现在响应的 data 对象中。 |
过滤与排序
支持的过滤运算符
regexnot_regex<<=>>==<>innot_inmatchnot_matchilikenot_ilikelikenot_like
过滤示例
筛选出 relevant_serp_items > 0 或 median_position 属于 [1, 10] 的竞争域:
json
[
{
"keywords": ["phone", "watch"],
"location_name": "United States",
"language_name": "English",
"filters": [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
]
}
]响应结构
接口返回 JSON 数据,核心位于 tasks 数组中。
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本。 |
status_code | integer | 通用状态码。建议在接时实现完整的异常与错误处理机制。错误码参考 /v3/appendix/errors。 |
status_message | string | 通用状态信息。 |
time | string | 接口执行耗时,单位秒。 |
cost | float | 本次请求总成本,单位 USD。 |
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。 |
result_count | integer | result 数组中的数量。 |
path | array | 请求路径。 |
data | object | 回显请求中提交的参数。 |
result | array | 结果数组。 |
result[] 字段
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型。 |
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 | 检测到的竞争域名。 |
avg_position | integer | 域名在指定上的平均排名,即 keywords_positions 中位置值的算术平均数。 |
median_position | integer | 域名在指定上的排名中位数。 |
rating | integer | 排名与理论最佳排名之间的差值,用于表示该域名在指定上的相对可见度。计算:sum(100 - keywords_positions) |
etv | float | 预估流量(Estimated Traffic Volume)。表示这些预计每月为该网站带来的流量。计算基于搜索量与对应 SERP 位置 CTR 的乘积之和。 |
keywords_count | integer | 该域名在 SERP 中有排名的指定数量。 |
visibility | float | SERP 可见度。根据排名计算网站可见度:排名 1-10 的分别对应 1 到 0.1 的可见度指数;排名 11-20 固定为 0.05;排名 21-100 为 0。 |
relevant_serp_items | integer | 与该域名的 SERP素数量,即该域名在指定下搜索结果的数量。 |
keywords_positions | object | 排名明细,表示该域名在各指定下的 SERP 排名。 |
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/dataforseo_labs/google/serp_competitors/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840,
"item_types": [],
"limit": 5
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/google/serp_competitors/live"
payload = [
{
"keywords": ["phone", "watch"],
"location_name": "United States",
"language_name": "English",
"filters": [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
]
}
]
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json)TypeScript
typescript
import axios from "axios";
const postArray = [
{
keywords: ["phone", "watch"],
language_name: "English",
location_code: 2840,
filters: [
["relevant_serp_items", ">", 0],
"or",
["median_position", "in", [1, 10]]
]
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/dataforseo_labs/google/serp_competitors/live",
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
},
data: postArray
})
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
json
{
"version": "0.1.20220216",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0779 sec.",
"cost": 0.0105,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "dataforseo_labs",
"function": "serp_competitors",
"se_type": "google",
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840,
"item_types": [],
"limit": 5
},
"result": [
{
"location_code": 2840,
"language_code": "en",
"total_count": 86,
"items_count": 5,
"items": [
{
"se_type": "google",
"domain": "www.phone.com",
"avg_position": 2,
"median_position": 2,
"rating": 98,
"etv": 59616,
"keywords_count": 1,
"visibility": 0.9,
"relevant_serp_items": 1,
"keywords_positions": {
"phone": [2]
}
},
{
"se_type": "google",
"domain": "www.t-mobile.com",
"avg_position": 3,
"median_position": 3,
"rating": 97,
"etv": 35806.4,
"keywords_count": 1,
"visibility": 0.8,
"relevant_serp_items": 1,
"keywords_positions": {
"phone": [3]
}
},
{
"se_type": "google",
"domain": "www.cnet.com",
"avg_position": 4,
"median_position": 4,
"rating": 96,
"etv": 24251.2,
"keywords_count": 1,
"visibility": 0.7,
"relevant_serp_items": 1,
"keywords_positions": {
"phone": [4]
}
},
{
"se_type": "google",
"domain": "www.pcmag.com",
"avg_position": 5,
"median_position": 5,
"rating": 95,
"etv": 17259.2,
"keywords_count": 1,
"visibility": 0.6,
"relevant_serp_items": 1,
"keywords_positions": {
"phone": [5]
}
}
]
}
]
}
]
}状态码与错误处理
- 顶层
status_code表示整个请求的执行状态 tasks[].status_code表示单个任务的执行状态- 建议同时校验:
- HTTP 状态码
- 顶层
status_code - 任务级
tasks[].status_code
常见成功状态:
20000:请求成功
更多错误码可参考:/v3/appendix/errors
使用建议
- 量较大时,建议按主题或业务线分批请求,便于分析竞争格局
- 如需统一站点级竞争分析,可将
include_subdomains设为false - 若只高价值竞争域,可结合
filters对visibility、etv、median_position等字段做筛选 - 若需要分页拉取量结果,可合
limit与offset使用
实用场景
- 识别自然搜索竞争对手:一组核心业务,快速找出在 SERP 中真正与你争夺流量的域名,用于竞品监控与市场判断。
- 筛选高可见度竞争站点:基于
visibility、rating和etv过滤强势域名,帮助团队优研究值得越的对手。 - 评估组竞争强度:通过查看同一集下的竞争域数量、排名分布和流量预估,制定优级。
- 拆分品牌站与站对手结构:结合
include_subdomains、domain和排名指标,区分官方站、媒体站、评测站等不同竞争类型。 - 发现可切的 SERP 机会:分析哪些竞争域覆盖多但平均排名不高,从中寻找可通过优化或专题页布局实现突破的机会。