主题
按任务 ID 获取百度自然搜索结果(Regular)
接口说明
通过任务 id 获取已提交的百度自然搜索 SERP 抓取结果。
注意:原文标题与正文路径存在不一致,正文示例对应的是
wp / v2路径。本文保留平台 API 的容路径写法,不修改/v3/...路径。
请求方式
GET /v3/serp/wp/v2/task_get/regular/{id}
完整请求地址
https://api.seermartech.cn/v3/serp/wp/v2/task_get/regular/{id}
计费说明
该接口本身不对“取结果”重复收费,账户在创建任务时扣费;任务结果在随后 30 天 可查询。
扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
如果任务提交时启用了 get_website_url=true,由于系统会对每个排名站点发起额外请求以解析真实落地页,单任务费用会提升为原来的 10 倍。
请求参数
路径参数
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式。可在任务创建后的 30 天 用于随时获取结果。 |
沙箱调试
可使用沙箱地址查看当前端点支持的结果结构与字段,返回为模拟数据,不产生费用。
沙箱地址
https://sandbox.seermartech.cn/v3/serp/baidu/organic/task_get/regular/00000000-0000-0000-0000-000000000000
沙箱响应会该端点支持的所有 SERP素及字段,便于联调和字段映射。
返回结果
接口返回 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 | 任务 ID,UUID 格式。 |
status_code | integer | 任务状态码,通常位于 10000-60000 范围。 |
status_message | string | 任务状态说明。 |
time | string | 任务执行耗时,单位秒。 |
cost | float | 单任务成本,单位 USD。 |
result_count | integer | result 数组中的结果数量。 |
path | array | 请求路径。 |
data | object | 任务创建时提交的原始参数。 |
result | array | 实搜索结果数组。 |
data 对象
data 中通常会返回创建任务时使用的参数,例如:
| 字段 | 类型 | 说明 |
|---|---|---|
api | string | API 类型。 |
function | string | 调用方法。 |
se | string | 搜索引擎标识。 |
se_type | string | 搜索类型。 |
location_code | integer | 地区编码。 |
keyword | string | 查询。 |
tag | string | 自定义标签。 |
device | string | 设备类型。 |
os | string | 操作系统类型。 |
result 数组字段
| 字段 | 类型 | 说明 |
|---|---|---|
keyword | string | 创建任务时的。返回时会对 %## 编码进行解码,+ 会被解码为空格。 |
type | string | 创建任务时的搜索引擎类型。 |
se_domain | string | 创建任务时的搜索引擎域名。 |
location_code | integer | 创建任务时的地区编码。 |
language_code | string | 创建任务时的语言编码。 |
check_url | string | 搜索结果页直达地址,可用于人工校验结果准确性。 |
datetime | string | 结果抓取时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00。 |
spell | object | 搜索引擎自动纠错信息。若搜索引擎对进行了修正,将返回修正后的及纠错类型。 |
refinement_chips | object | 搜索细化标签。该端点中通常为 null。 |
item_types | array | 当前 SERP 中识别到的结果类型列表。可能值:organic、paid。 |
se_results_count | integer | SERP 总结果数。 |
pages_count | integer | 本次抓取返回的结果页数量。 |
items_count | integer | items 数组中的结果数量。 |
items | array | SERP 明细结果。 |
spell 对象字段
| 字段 | 类型 | 说明 |
|---|---|---|
keyword | string | 搜索引擎纠错后的。返回结果将基于该纠错词。 |
type | string | 纠错类型。可能值:did_you_mean、showing_results_for、no_results_found_for、including_results_for。 |
items 结果结构
该端点主要返回两类 SERP素:
organic:自然结果paid:广告结果
organic 自然结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 organic。 |
rank_group | integer | 同类型结果组排名。在相同 type连续计数。 |
rank_absolute | integer | 当前结果在整页 SERP 中的绝对排名。 |
page | integer | 结果所在页码。 |
domain | string | 结果域名。 |
title | string | 标题。 |
description | string | 摘要描述。 |
url | string | 结果 URL。默认,百度返回的链接通常为搜索引擎跳转编码地址。 |
breadcrumb | string | 面屑路径。 |
paid 广告结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 paid。 |
rank_group | integer | 同类型结果组排名。 |
rank_absolute | integer | 整体绝对排名。 |
page | integer | 所在页码。 |
domain | string | 结果域名。 |
title | string | 标题。 |
description | string | 摘要描述。 |
url | string | 结果 URL。默认通常为百度编码跳转地址。 |
breadcrumb | string | 面屑路径。 |
##百度结果 URL
默认返回的 url 往往是搜索引擎跳转链接,例如:
http://www.baidu.com/link?url=KQt6LSwU5OHnPtB8210R8flBP40grY6lTPxH_0UO7S2kgiZMTmw3ztV0hCo5c1kL
如果希望直接获得站点真实 URL,需要在创建任务时将 get_website_url 设置为 true。
注意:启用
get_website_url后,单任务费用会变为原来的 10 倍。
请求示例
cURL
bash
# 将 {id} 替换为任务 ID
id="02261816-2027-0066-0000-c27d02864073"
curl --location --request GET "https://api.seermartech.cn/v3/serp/wp/v2/task_get/regular/${id}" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json"Python
python
import requests
task_id = "02231256-2604-0066-2000-57133b8fc54e"
url = f"https://api.seermartech.cn/v3/serp/wp/v2/task_get/regular/{task_id}"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json)TypeScript
typescript
import axios from "axios";
const taskId = "02231256-2604-0066-2000-57133b8fc54e";
axios({
method: "get",
url: `https://api.seermartech.cn/v3/serp/wp/v2/task_get/regular/${taskId}`,
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
})
.then((response) => {
// 输出结果数据
console.log(response.data);
})
.catch((error) => {
console.error(error);
});查询已完成任务后再批量取结果
使用中,通常可调用:
GET /v3/serp/wp/v2/tasks_ready
获取已完成任务列表,再逐个请求:
GET /v3/serp/wp/v2/task_get/regular/{id}
这样适合任务异步提交后的批量轮询处理流程。
响应示例
json
{
"version": "0.1.20201026",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.1162 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "serp",
"function": "task_get",
"se": "baidu",
"se_type": "organic",
"location_code": 2156,
"keyword": "iphone 12",
"tag": "some_string_123",
"device": "desktop",
"os": "windows"
},
"result": [
{
"se_results_count": 57200000,
"pages_count": 1,
"items_count": 95,
"items": []
}
]
}
]
}状态码说明
| 字段 | 说明 |
|---|---|
status_code | 接口或任务状态码。建议同时检查顶层 status_code 与 tasks[].status_code。 |
status_message | 对应的状态描述信息。 |
tasks_error | 返回错误的任务数,大于 0 时应逐项排查。 |
建议在接时重点处理以下场景:
- 顶层请求成功,但某个任务返回失败
- 任务已存在,但
result为空 - 任务 30 天,无法继续查询
- 请求参数或任务 ID 格式不合法
使用建议
- 异步流程接:创建任务,再通过
tasks_ready或任务 ID 获取结果。 - 保存任务 ID:任务结果可在 30 天重复查询,建议库保存。
- 区分编码 URL 与真实 URL:若做排名监控,编码链接通常已足够;若需站点归因或落地页分析,再考虑开启
get_website_url。 - 做好错误重试与状态检查:优检查顶层与任务级别的
status_code。
实用场景
- 回查抓取结果:通过任务 ID 获取已完成的百度 SERP 明细,便于异步采集流程中的结果回收与库。
- 监控自然位与广告位分布:根据
item_types、rank_absolute和type区分自然结果与广告结果,评估商业化程度。 - 分析竞争域名排名表现:提取
domain、title、breadcrumb等字段,识别竞品在目标下的位置与形态。 - 校验搜索结果准确性:利用
check_url回看搜索页,对抓取结果做抽样质检,提高数据可信度。 - 识别搜索引擎自动纠错影响:通过
spell字段判断是否被自动改写,将纠错后的结果误判为原词真实排名。