主题
按类别查询 Google 域名指标
POST /v3/dataforseo_labs/google/domain_metrics_by_categories/live
接口概述
POST https://api.seermartech.cn/v3/dataforseo_labs/google/domain_metrics_by_categories/live
本接口根据指定的产品和服务类别,返回 Google 搜索结果中域名的历史排名、当前指标及指标变化:
- 自然搜索 ETV(预估流量价值)
- 展示 ETV
- 预估付费流量成本 -含目标域名的搜索结果数量
- 各排名区间的结果数量
- 新增、上升、下降和丢失的排名
- 自然搜索、付费搜索、精选摘要和本地的历史数据
数据每周更新。最新更新时间可通过 /v3/dataforseo_labs/status/ 查询。
请求限制
- 请求体使用 UTF-8 编码的 JSON。
- 请求体是 JSON 数组。
- 每次 Live 请求最多 1 个任务。 平台限流以认证说明中的 30/60/120 次/分钟规则为准。
- 同时发送的请求数最多为 30。
- 单个请求最多指定 5 个
category_codes。 - 单个请求最多返回 1000 个域名。
filters最多 8 个过滤条件。order_by最多 3 条排序规则。
计费说明
本接口按请求计费。参考价约 ¥0.1030 / 次,扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
请求参数
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
category_codes | array | 是 | 产品和服务类别编码。最多指定 5 个。 |
first_date | string | 是 | 对比周期的第一个日期,格式为 yyyy-mm-dd,例如 2021-06-01。最早支持 2020-10-01。 |
second_date | string | 是 | 对比周期的第二个日期,格式为 yyyy-mm-dd,例如 2021-10-01。最早支持 2020-10-01。 |
location_name | string | 条件填 | 地理位置完整名称。未指定 location_code 时填。 |
location_code | integer | 条件填 | 地理位置唯一编码。未指定 location_name 时填。 |
language_name | string | 条件填 | 语言完整名称。未指定 language_code 时填。 |
language_code | string | 条件填 | 语言唯一编码。未指定 language_name 时填。 |
item_types | array | 否 | 指定返回的搜索结果类型。常用值 organic、paid、featured_snippet 和 local_pack。默认使用 organic。 |
top_categories_count | integer | 否 | 返回的额外域名类别数量。默认值等于 category_codes 中的类别数量,最大值为 5,且不能小于指定的类别数量。 |
include_subdomains | boolean | 否 | 是否返回子域名。false 返回 main_domain;true 同时返回主域名及子域名(如有)。默认值为 true。 |
etv_min | integer | 否 | 当前自然搜索 ETV 下限。返回 organic_etv 大于该值的域名。 |
etv_max | integer | 否 | 当前自然搜索 ETV 上限。返回 organic_etv 小于该值的域名。 |
correlate | boolean | 否 | 是否与历史获取的数据集进行校正。默认值为 true。建议保持默认值,以减少数据库变化造成的数据不一致。 |
limit | integer | 否 | 返回域名数量上限。默认值为 100,最大值为 1000。 |
offset | integer | 否 | 结果偏移量。默认值为 0。例如设置为 10 时,将跳过前 10 条结果。 |
filters | array | 否 | 结果过滤条件。最多 8 个条件,条件之间使用 and 或 or 连接。 |
order_by | array | 否 | 结果排序规则。支持与 filters 相同的字段和表达式,排序方向为 asc 或 desc。最多设置 3 条规则。 |
tag | string | 否 | 自定义任务标识,最多 255 个字符。该值会原样返回在响应的 data 对象中。 |
日期规则
first_date和second_date均不能晚于当前日期。- 两个日期不能属于同一年同一月份。
- 两个日期可以按任意顺序传。
- 返回的月份键(如
202110)对应两个日期中较晚的月份。
地理位置和语言
在以下参数中分别选择一种:
- 地理位置:
location_name或location_code - 语言:
language_name或language_code
可通过以下接口获取可用的地理位置和语言:
https://api.seermartech.cn/v3/dataforseo_labs/locations_and_languages
过滤器
支持以下运算符:
regex、not_regex、<、<=、>、>=、=、<>、in、not_in、match、not_match、ilike、not_ilike、like、not_like
对于 like、not_like、ilike 和 not_ilike,可使用 % 匹零个或多个任意字符。
过滤条件示例:
json
[
["metrics_history.202106.organic.pos_1", ">", 0],
"and",
["organic_etv", ">", 10000]
]排序规则
排序规则使用以下格式:
json
["organic_etv,desc", "organic_count,asc"]asc:升序desc:降序- 多条规则之间使用逗号分隔
- 单次请求最多设置 3 条规则
请求示例
cURL
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/dataforseo_labs/google/domain_metrics_by_categories/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"category_codes": [13418, 10004],
"location_name": "United States",
"language_name": "English",
"first_date": "2021-06-01",
"second_date": "2021-10-01",
"filters": [
["metrics_history.202106.organic.pos_1", ">", 0],
"and",
["organic_etv", ">", 10000]
],
"limit": 3
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/google/domain_metrics_by_categories/live"
payload = [
{
"category_codes": [13418, 10004],
"location_name": "United States",
"language_name": "English",
"first_date": "2021-06-01",
"second_date": "2021-10-01",
"filters": [
["metrics_history.202106.organic.pos_1", ">", 0],
"and",
["organic_etv", ">", 10000]
],
"limit": 3
}
]
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
result = response.json()
if result.get("status_code") == 20000:
print(result)
else:
print(
"请求失败,错误码:%s,错误信息:%s"
% (result.get("status_code"), result.get("status_message"))
)TypeScript
typescript
import axios from "axios";
const requestData = [
{
category_codes: [13418, 10004],
location_name: "United States",
language_name: "English",
first_date: "2021-06-01",
second_date: "2021-10-01",
filters: [
["metrics_history.202106.organic.pos_1", ">", 0],
"and",
["organic_etv", ">", 10000]
],
limit: 3
}
];
axios.post(
"https://api.seermartech.cn/v3/dataforseo_labs/google/domain_metrics_by_categories/live",
requestData,
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
}
)
.then((response) => {
const result = response.data;
if (result.status_code === 20000) {
console.log(result);
} else {
console.error(result.status_code, result.status_message);
}
})
.catch((error) => {
console.error("请求异常:", error);
});响应结构
接口返回 JSON 对象 tasks 数组。以下为型响应结构:
json
{
"version": "0.1.20220216",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.8991 sec.",
"cost": 0.103,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": " ಕುUUID",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.8991 sec.",
"cost": 0.103,
"result_count": 1,
"path": [
"v3",
"dataforseo_labs",
"google",
"domain_metrics_by_categories",
"live"
],
"data": {
"api": "dataforseo_labs",
"function": "domain_metrics_by_categories",
"se_type": "google",
"location_code": 2840,
"language_code": "en",
"category_codes": [13418, 10004],
"first_date": "2021-06-01",
"second_date": "2021-10-01",
"limit": 3
},
"result": [
{
"se_type": "google",
"location_code": 2840,
"language_code": "en",
"total_count": 1131,
"items_count": 3,
"items": [
{
"domain": "example.com",
"main_domain": "example.com",
"organic_etv": 1179.6579,
"organic_count": 58,
"organic_is_lost": 11,
"organic_is_new": 12,
"metrics_history": {},
"metrics_difference": {}
}
]
}
]
}
]
}> 示例中的 id 为 UUID 格式的任务标识。响应中的任务 ID、指标值和结果数量会根据请求参数变化。
顶层响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
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 | 任务结果数组。 |
任务字段
| 字段 | 类型 | 说明 |
|---|---|---|
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 | 请求路径。 |
data | object | 本次请求使用的参数集合,通常 api、function、se_type、位置、语言、类别和日期等字段。 |
result | array | 查询结果数组。 |
result 字段
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型,固定为 google。 |
categories | array | 请求中指定的类别。 |
location_code | integer | 地理位置编码。 |
language_code | string | 语言编码。 |
total_count | integer | 数据库中符合条件的结果总数。 |
items_count | integer | 本次 items 数组返回的结果数量。 |
items | array | 域名及历史排名、流量和指标变化数据。 |
items 域名字段
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型。 |
top_categories | array | 收集该域名时匹到的类别。 |
organic_etv | float | 域名当前自然搜索 ETV。 |
organic_count | integer | 当前该域名的自然搜索结果数量。 |
organic_is_lost | integer | 最近一次检查中丢失的排名数量。 |
organic_is_new | integer | 最近一次检查中新发现的排名数量。 |
domain | string | 与指定类别的域名。 |
main_domain | string | 域名对应的主域名。 |
metrics_history | object | 指定两个日期对应月份的历史排名和流量数据。 |
metrics_difference | object | 两个日期之间的指标差值。 |
metrics_history
metrics_history 使用 yyyyMM 形式的月份作为动态字段名,例如 202106、202110。每个月份对象可能以下四类数据:
organic:自然搜索数据paid:付费搜索数据featured_snippet:精选摘要数据local_pack:本地数据
当某类搜索结果不存在时,对应字段可能为 null。
历史指标对象字段
以下字段适用于 organic、paid、featured_snippet 和 local_pack 对象:
| 字段 | 类型 | 说明 |
|---|---|---|
pos_1 | integer | 排名第 1 的搜索结果数量。 |
pos_2_3 | integer | 排名第 2 至 3 的搜索结果数量。 |
pos_4_10 | integer | 排名第 4 至 10 的搜索结果数量。 |
pos_11_20 | integer | 排名第 11 至 20 的搜索结果数量。 |
pos_21_30 | integer | 排名第 21 至 30 的搜索结果数量。 |
pos_31_40 | integer | 排名第 31 至 40 的搜索结果数量。 |
pos_41_50 | integer | 排名第 41 至 50 的搜索结果数量。 |
pos_51_60 | integer | 排名第 51 至 60 的搜索结果数量。 |
pos_61_70 | integer | 排名第 61 至 70 的搜索结果数量。 |
pos_71_80 | integer | 排名第 71 至 80 的搜索结果数量。 |
pos_81_90 | integer | 排名第 81 至 90 的搜索结果数量。 |
pos_91_100 | integer | 排名第 91 至 100 的搜索结果数量。 |
etv | float | 预估月流量。根据域名排名的点击率和搜索量估算。对于 organic,表示自然搜索月流量;对于 paid,表示付费搜索月流量。 |
count | integer | 含该域名的对应类型搜索结果总数。 |
estimated_paid_traffic_cost | float | 预估月度付费流量成本。对于自然搜索数据,表示将预估自然流量转化为付费广告流量的成本;对于付费搜索数据,表示付费流量的预估成本。 |
is_new | integer | 新增排名数量。 |
is_up | integer | 排名上升的数量。 |
is_down | integer | 排名下降的数量。 |
is_lost | integer | 在此前搜索结果中存在、但在指定日期未再次发现的排名数量。 |
:
featured_snippet的各排名字段表示域名在精选摘要中的排名数量。local_pack的各排名字段表示域名在本地中的排名数量。estimated_paid_traffic_cost的数值单位以数据源容格式返回;人民币扣费不依据该字段计算。
metrics_difference
metrics_difference 表示两个日期之间的指标变化,计算方式为:
> 较晚日期指标 − 较早日期指标
该对象以下字段:
organic:自然搜索指标变化paid:付费搜索指标变化featured_snippet:精选摘要指标变化local_pack:本地指标变化
各对象使用与历史指标对象相同的字段:
| 字段 | 类型 | 说明 |
|---|---|---|
pos_1 至 pos_91_100 | integer | 对应排名区间的结果数量变化。正数表示增加,负数表示减少。 |
etv | float | 预估流量变化。 |
count | integer | 对应搜索结果总数变化。 |
estimated_paid_traffic_cost | float | 预估付费流量成本变化。 |
is_new | integer | 新增排名数量变化。 |
is_up | integer | 排名上升数量变化。 |
is_down | integer | 排名下降数量变化。 |
is_lost | integer | 丢失排名数量变化。 |
状态码和异常处理
请根据响应中的 status_code 和 status_message 判断请求及任务是否成功:
20000:请求成功。- 状态码:请求或任务执行失败,应结合
status_message记录日志并进行异常处理。
建议客户端至少处理以下:
- 参数缺失或参数格式错误
- 日期范围不符合要求
- 地理位置或语言编码无效
- 类别数量限制
- 过滤器或排序规则格式错误
- 请求频率限制
- 任务执行失败或暂时无结果
实用场景
- 比较不同产品类别下的域名排名变化:识别竞争对手在目标行业中的自然搜索增长或下滑趋势,为竞品分析和策略提供依据。
- 筛选高流量潜在合作域名:使用
organic_etv、organic_count和类别过滤条件,发现适合外链、媒体投放或合作拓展的站点。 - 定位自然搜索流量损失来源:分析
organic_is_lost、is_down和各排名区间变化,帮助 SEO 团队排查排名下降和流量减少原因。 - 评估自然流量的广告替代成本:结合
estimated_paid_traffic_cost,估算通过 Google 付费广告替代自然流量所需的预算。 - 监控精选摘要和本地竞争表现:比较
featured_snippet与local_pack的历史指标变化,优化本地 SEO、结构化和搜索结果增强展示策略。