主题
页面交集分析(旧版)实时接口
接口说明
注意:本接口为旧版 Page Intersection 接口。平台 API 已于 2022-03-19 更新了 本平台 Labs 请求与响应结构,但当前文档所述旧版接口仍持续容可用。 如需新版结构,请参考对应新版接口文档。
该接口用于查询:多个指定页面在同一搜索结果页(SERP)中排名的。
对于每个交集,返回的数据:
- 搜索量
- 竞争度
- 平均点击成本(CPC)
- 展现量(Impressions)
- SERP素数据
- 预估自然流量
- 预估广告流量成本
支持的结果类型:
organicpaidlocal_packfeatured_snippet
型用途
1)找出多个页面排名的 只传 pages 对象即可。接口将返回这些 URL 在同一 SERP 中覆盖的。
2)找出竞争对手覆盖、但你未覆盖的 同时传 pages 和 exclude_pages。接口将返回:pages 中 URL 有排名、但 exclude_pages 中 URL 没有排名的。
请求地址
POST https://api.seermartech.cn/v3/dataforseo_labs/page_intersection/live
计费说明
按请求计费。 扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
调用限制
- 请求体为 UTF-8 编码的 JSON
- POST 请求体格式为 JSON 数组:
[{ ... }] - 每分钟最多可发送 2000 次 API 调用
- 支持通过
limit和order_by控制返回数量与排序
请求参数
顶层参数说明
| 字段名 | 类型 | 说明 |
|---|---|---|
pages | object | 填。目标页面 URL 集合,最多可传 20 个页面。使用绝对 URL( http:// 或 https://)。例如:"1": "https://www.apple.com/mac/*" |
exclude_pages | array | 可选。要排除的页面 URL,最多 10 个。如果设置该字段,结果会返回 pages 中 URL 有排名、但 exclude_pages 中 URL 没有排名的。 |
location_name | string | 当未提供 location_code 时填。位置完整名称,例如:United Kingdom |
location_code | integer | 当未提供 location_name 时填。位置编码,例如:2840 |
language_name | string | 当未提供 language_code 时填。语言完整名称,例如:English |
language_code | string | 当未提供 language_name 时填。语言代码,例如:en |
item_types | array | 可选。要在响应中的搜索结果类型。 |
limit | integer | 可选。返回的最大数量。默认 100,最大 1000。 |
offset | integer | 可选。结果偏移量,默认 0。例如传 10 时,将跳过前 10 个结果。 |
include_subdomains | boolean | 可选。是否子域名。默认 true;设为 false 时忽略子域名。 |
intersection_mode | string | 可选。交集计算方式。可选值:union、intersect |
include_serp_info | boolean | 可选。是否返回每个对应的 serp_info 数据。默认 false。 |
filters | array | 可选。结果过滤条件数组,最多支持 8 个过滤条件。 |
order_by | array | 可选。排序规则,最多支持 3 条排序规则。 |
tag | string | 可选。自定义任务标识,最大长度 255 字符。会原样返回到响应 data 中。 |
重点参数说明
pages
- 最多 20 个页面
- 使用对象形式传值,如:
json
{
"pages": {
"1": "https://www.apple.com/mac/*",
"2": "https://example.com/blog/*",
"3": "https://support.microsoft.com/"
}
}URL 匹规则
"https://example.com/page":匹精确 URL"https://example.com/eng/*":匹该路径下所有以/eng/开头的 URL
通符使用限制
通符 *须放在 URL 末尾的 / 后面。
正确示例:
https://example.com/*
错误示例:
https://example.com*
注意:如果交集数量 1000 万,本接口将不返回结果。
exclude_pages
- 最多 10 个页面
- 支持通符
* - 如果设置该字段:
- 默认按
union模式处理,即基于pages中任意一个 URL 有排名的 - 如需返回
pages中所有 URL 都排名、且exclude_pages未排名的,请将intersection_mode设为intersect
location_name / location_code
二选一填。 位置与语言列表可通过以下接口获取:
/v3/dataforseo_labs/locations_and_languages
language_name / language_code
二选一填。 语言与位置列表同样可通过以下接口获取:
/v3/dataforseo_labs/locations_and_languages
item_types
表示响应中的搜索结果类型。支持以下值:
organicpaidfeatured_snippetlocal_pack
intersection_mode
可选值:
union:基于pages中任意 URL 有排名的intersect:基于pages中所有 URL 都在同一 SERP 中有排名的
默认规则:
- 传
pages时,默认使用intersect - 同时传
pages与exclude_pages时,默认使用union
include_serp_info
设为 true 时,响应中每个都会返回 serp_info,:
- 搜索结果直达检查链接
- SERP 中出现的结果类型
- 搜索结果总数
- 难度
- SERP 数据更新时间
filters
- 最多支持 8 个过滤条件
- 条件之间可用
and、or - 支持操作符:
<<=>>==<>innot_inlikenot_like
like 与 not_like 支持 % 通任意长度字符串。
过滤 intersection_result 的注意事项
如果要按 intersection_result 中某个页面的数据过滤,需要指定对应页面编号。
例如:
- 过滤第一个页面的排名
- 过滤第三个页面是否为自然结果
过滤语法请参考平台过滤器文档。
order_by
可使用与 filters 相同的字段路径进行排序。
排序方向:
asc:升序desc:降序
默认排序规则:以平台 API 默认行为为准。 单次请求最多设置 3 条排序规则。
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/dataforseo_labs/page_intersection/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"pages": {
"1": "https://example.com/*",
"2": "https://ahrefs.com/*"
},
"language_name": "English",
"location_code": 2840,
"limit": 3
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/page_intersection/live"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
data = [
{
"pages": {
"1": "https://example.com/*",
"2": "https://ahrefs.com/*"
},
"location_name": "United States",
"language_name": "English",
"limit": 3
}
]
response = requests.post(url, json=data, headers=headers)
print(response.json)TypeScript
typescript
import axios from "axios";
const postArray = [
{
pages: {
"1": "https://example.com/*",
"2": "https://ahrefs.com/*"
},
language_name: "English",
location_code: 2840,
limit: 3
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/dataforseo_labs/page_intersection/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,顶层 tasks 数组。
顶层响应字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用状态码 |
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 | 任务状态码 |
status_message | string | 任务状态信息 |
time | string | 任务执行耗时 |
cost | float | 单任务成本,单位 USD |
result_count | integer | result 数组中的数 |
path | array | 接口路径 |
data | object | 与请求中提交参数一致 |
result | array | 获取结果数组 |
result[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
pages | object | 请求中提交的页面 |
exclude_pages | array | 请求中提交的排除页面 |
location_code | integer | 请求中的位置编码 |
language_code | string | 请求中的语言编码 |
total_count | integer | 数据库中命中的总结果数 |
items_count | integer | 当前 items 返回数量 |
items | array | 及 SERP/流量数据 |
items[] 结果项说明
每个 items[] 代表一个交集结果,主要由两部分组成:
keyword_data:及指标数据intersection_result:每个指定页面在该下的排名结果
keyword_data
| 字段名 | 类型 | 说明 |
|---|---|---|
keyword | string | 返回的 |
location_code | integer | 位置编码 |
language_code | string | 语言代码 |
keyword_info | object | 基础指标 |
impressions_info | object | 展现量指标 |
bing_keyword_info | object | 基于 Bing Ads 的数据,覆盖范围有限 |
serp_info | object | SERP 信息;若未开启 include_serp_info=true,则可能为 null |
keyword_info
| 字段名 | 类型 | 说明 |
|---|---|---|
last_updated_time | string | 数据更新时间,UTC |
competition | float | 竞争度,范围 0~1 |
cpc | float | 历史平均点击成本,单位 USD |
search_volume | integer | 月均搜索量 |
categories | array | 产品与服务分类 |
monthly_searches | array | 过去 12 个月的月度搜索量 |
monthly_searches[]
| 字段名 | 类型 | 说明 |
|---|---|---|
year | integer | 年 |
month | integer | 月 |
search_volume | integer | 当月搜索量 |
impressions_info
该对象提供比传统搜索量更细的展现量估算指标,使用 999 出价作为统一基准,以降低账号差异带来的影响。
| 字段名 | 类型 | 说明 |
|---|---|---|
last_updated_time | string | 展现量数据更新时间,UTC |
bid | integer | 最大 CPC 出价,固定基准值通常为 999 |
match / match_type | string | 匹类型:exact、broad、phrase |
ad_position_min | float | 广告最小位置 |
ad_position_max | float | 广告最大位置 |
ad_position_average | float | 广告平均位置 |
cpc_min | float | 基准模型下最小 CPC(非真实 CPC) |
cpc_max | float | 基准模型下最大 CPC(非真实 CPC) |
cpc_average | float | 基准模型下平均 CPC(非真实 CPC) |
daily_impressions_min | float | 最小日展现量 |
daily_impressions_max | float | 最大日展现量 |
daily_impressions_average | float | 平均日展现量 |
daily_clicks_min | float | 最小日点击量 |
daily_clicks_max | float | 最大日点击量 |
daily_clicks_average | float | 平均日点击量 |
daily_cost_min | float | 最小日花费,单位 USD |
daily_cost_max | float | 最大日花费,单位 USD |
daily_cost_average | float | 平均日花费,单位 USD |
注意:
cpc_min、cpc_max、cpc_average为基于bid=999的估算值,不代表真实 CPC。真实 CPC 请看keyword_info.cpc。
bing_keyword_info
| 字段名 | 类型 | 说明 |
|---|---|---|
last_updated_time | string | 更新时间,UTC |
search_volume | integer | Bing 最近一个月搜索量 |
monthly_searches | array | 月度 Bing 搜索量 |
serp_info
| 字段名 | 类型 | 说明 |
|---|---|---|
check_url | string | 搜索引擎结果直达链接,可用于核验 |
serp_item_types | array | SERP 中发现的结果类型 |
se_results_count | string | 搜索结果总数 |
keyword_difficulty | integer | 难度,0~100 |
last_updated_time | string | 最近一次 SERP 更新时间 |
previous_updated_time | string | 上一次 SERP 更新时间 |
serp_item_types 可能:
answer_boxappcarouselmulti_carouselfeatured_snippetgoogle_flightsgoogle_reviewsimagesjobsknowledge_graphlocal_packmaporganicpaidpeople_also_askrelated_searchespeople_also_searchshoppingtop_storiestwittervideoeventsmention_carouselrecipestop_sightsscholarly_articlespopular_productspodcastsquestions_and_answersfind_results_onstocks_box
但本接口返回可解析的目标结果:
organic、paid、featured_snippet、local_pack
intersection_result
intersection_result 用于描述:针对当前,你在 pages 中提交的每个 URL 分别在 SERP 中出现了什么结果。
- 每个页面按编号返回,如
1、2、3 - 最多可到
20 - 每个编号对应一个 SERP素对象
- 支持的类型:
organicpaidlocal_packfeatured_snippet
各 SERP素字段说明
1)organic 自然结果
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 organic |
rank_group | integer | 同类型结果组排名 |
rank_absolute | integer | SERP部中的绝对排名 |
position | string | 展示位置:left、right |
xpath | string | 素 XPath |
domain | string | 结果子域名 |
title | string | 标题 |
url | string | 落地 URL |
breadcrumb | string | 面屑 |
is_image | boolean | 是否图片 |
is_video | boolean | 是否视频 |
is_featured_snippet | boolean | 是否同时为精选摘要 |
is_malicious | boolean | 是否被标记为恶意 |
description | string | 描述文本 |
pre_snippet | string | 描述前附加信息 |
extended_snippet | string | 描述后附加信息 |
amp_version | boolean | 是否有 AMP 版本 |
rating | object | 评分信息 |
highlighted | array | 描述中高亮加粗的词 |
links | array | Sitelinks,若无则为 null |
main_domain | string | 主域名 |
relative_url | string | 相对路径 |
etv | float | 预估自然月流量 |
impressions_etv | float | 基于展现量的预估自然月流量 |
estimated_paid_traffic_cost | float | 若用广告获取同等流量的预估月成本(USD) |
rank_changes | object | 相比上一次抓取的排名变化 |
rating
| 字段名 | 类型 | 说明 |
|---|---|---|
rating_type | string | Max5、Percents、CustomMax |
value | integer | 评分值 |
votes_count | integer | 评价数 |
rating_max | integer | 满分值 |
links[]
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 link_element |
title | string | 链接标题 |
description | string | 链接描述 |
url | string | Sitelink URL |
rank_changes
| 字段名 | 类型 | 说明 |
|---|---|---|
previous_rank_absolute | integer | 上次绝对排名;新结果则可能为 null |
is_new | boolean | 是否为新出现结果 |
is_up | boolean | 排名是否上升 |
is_down | boolean | 排名是否下降 |
2)paid 付费结果
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 paid |
rank_group | integer | 同类型组排名 |
rank_absolute | integer | 绝对排名 |
position | string | left、right |
xpath | string | 素 XPath |
title | string | 广告标题 |
domain | string | 广告域名 |
description | string | 描述 |
breadcrumb | string | 广告面屑 |
url | string | 广告目标 URL |
highlighted | array | 加粗 |
extra | array | 额外信息 |
ad_aclk | string | 广告标识 |
description_rows | array | 扩展描述;无则为 null |
links | array | 广告附加链接;无则为 null |
main_domain | string | 主域名 |
relative_url | string | 相对路径 |
etv | float | 预估流量 |
impressions_etv | float | 基于展现量的预估流量 |
estimated_paid_traffic_cost | float | 预估付费月流量成本(USD) |
rank_changes | object | 排名变化 |
links[]
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 ad_link_element |
title | string | 链接标题 |
description | string | 链接描述 |
url | string | 链接 URL |
ad_aclk | string | 广告标识 |
3)local_pack 本地结果
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 local_pack |
rank_group | integer | 同类型组排名 |
rank_absolute | integer | 绝对排名 |
position | string | left、right |
xpath | string | 素 XPath |
title | string | 标题 |
description | string | 描述 |
domain | string | 域名 |
phone | string | 电话 |
url | string | URL |
is_paid | boolean | 是否广告 |
rating | object | 评分信息 |
main_domain | string | 主域名 |
relative_url | string | 相对路径 |
etv | float | 预估流量 |
impressions_etv | float | 基于展现量的预估流量 |
estimated_paid_traffic_cost | float | 若通过广告获取同等流量的预估成本(USD) |
rank_changes | object | 排名变化 |
4)featured_snippet 精选摘要
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 featured_snippet |
rank_group | integer | 同类型组排名 |
rank_absolute | integer | 绝对排名 |
position | string | left、right |
xpath | string | 素 XPath |
domain | string | 域名 |
title | string | 标题 |
featured_title | string | 精选摘要来源页标题 |
description | string | 描述 |
url | string | URL |
table | array | 表格结果,无则为 null |
about_this_result | object | “此结果”面板信息 |
main_domain | string | 主域名 |
relative_url | string | 相对路径 |
etv | float | 预估流量 |
impressions_etv | float | 基于展现量的预估流量 |
estimated_paid_traffic_cost | float | 获取同等流量的预估广告成本(USD) |
rank_changes | object | 排名变化 |
table[]
| 字段名 | 类型 | 说明 |
|---|---|---|
table_header | array | 列名 |
table_content | array | 表格,每个代表一行 |
about_this_result
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 about_this_result_element |
url | string | 结果 URL |
source | string | 额外信息来源 |
source_info | string | 来源说明 |
source_url | string | 来源链接 |
language | string | 结果语言 |
location | string | 结果适用地区 |
search_terms | array | 命中的搜索词 |
related_terms | array | 搜索词 |
响应示例
json
{
"version": "0.1.20210430",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.5750 sec.",
"cost": 0.0103,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "dataforseo_labs",
"function": "page_intersection",
"pages": {
"1": "https://example.com",
"2": "https://ahrefs.com/*"
},
"location_code": "2840",
"language_name": "English",
"limit": 3
},
"result": [
{
"items": [
{
"keyword_data": {
"keyword": "google trends dataset",
"location_code": 2840,
"language_code": "en",
"serp_info": {
"check_url": "https://www.google.com/search?q=google%20trends%20dataset&num=100&hl=en&gl=US",
"se_results_count": 102000000,
"keyword_difficulty": 47,
"last_updated_time": "2021-04-16 05:38:42 +00:00",
"previous_updated_time": "2021-03-17 04:38:41 +00:00"
}
},
"intersection_result": {
"1": {
"type": "organic",
"rank_group": 58,
"rank_absolute": 59,
"domain": "example.com",
"title": "示例页面标题",
"url": "https://example.com/",
"etv": 1.8480000495910645,
"estimated_paid_traffic_cost": 5.336818695068359
},
"2": {
"type": "organic",
"rank_group": 18,
"rank_absolute": 19,
"domain": "ahrefs.com",
"title": "How to Use Google Trends for Keyword Research",
"url": "https://ahrefs.com/blog/how-to-use-google-trends-for-keyword-research/",
"etv": 2.9040000438690186,
"estimated_paid_traffic_cost": 8.386429786682129
}
}
}
]
}
]
}
]
}状态码与错误处理
- 顶层
status_code表示整个请求状态 tasks[].status_code表示单个任务状态- 建议同时处理 HTTP 错误与业务状态码
- 错误码完整列表请参考
/v3/appendix/errors
常见成功状态:
20000:请求成功
使用建议
做页面重合分析时优使用
intersect如果你要判断多个页面真正覆盖哪些,建议传pages或显式指定intersection_mode: "intersect"。做竞争对手缺口分析时结合
exclude_pages可将竞品页面放pages,自家页面放exclude_pages,找出竞品覆盖而你未覆盖的词。需要核验 SERP 时开启
include_serp_info这样可获得check_url和难度等信息,便于运营或分析师复核结果。控制大结果集的分页读取 使用
limit+offset分页抓取,一次读取过多数据。结果集过大可能无返回 若交集 1000 万,本接口不会返回结果,建议缩小页面范围或增加过滤条件。
实用场景
- 筛选排名词:比较多个落地页或多个竞品页面的覆盖,识别同赛道核心主题与重叠区域。
- 挖掘缺口:将竞品页面放
pages、自家页面放exclude_pages,找出“对方有排名、我方没有”的高价值词,指导补齐。 - 评估页面竞争强度:结合
keyword_info.competition、cpc、keyword_difficulty,判断交集词是否值得 SEO 或 PPC 资源。 - 识别 SERP 占位类型:分析页面在
organic、paid、featured_snippet、local_pack中的表现,制定更精准的与结构化优化策略。 - 估算流量与替代投放成本:利用
etv、impressions_etv、estimated_paid_traffic_cost评估某批的自然流量价值,为预算分和 ROI 分析提供依据。