Skip to content

按任务 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 倍

请求参数

路径参数

字段类型说明
idstring任务唯一标识,UUID 格式。可在任务创建后的 30 天 用于随时获取结果。

沙箱调试

可使用沙箱地址查看当前端点支持的结果结构与字段,返回为模拟数据,不产生费用。

沙箱地址

https://sandbox.seermartech.cn/v3/serp/baidu/organic/task_get/regular/00000000-0000-0000-0000-000000000000

沙箱响应会该端点支持的所有 SERP素及字段,便于联调和字段映射。

返回结果

接口返回 JSON,对象中 tasks 数组,每个任务对应一组执行结果。

顶层字段

字段类型说明
versionstring当前 API 版本。
status_codeinteger接口通用状态码。建议在程序中统一处理异常与错误状态。
status_messagestring接口通用状态信息。
timestring执行耗时,单位秒。
costfloat当前返回涉及的总任务成本,单位 USD。
tasks_countintegertasks 数组中的任务数量。
tasks_errorintegertasks 数组中返回错误的任务数。
tasksarray任务结果数组。

tasks 数组字段

字段类型说明
idstring任务 ID,UUID 格式。
status_codeinteger任务状态码,通常位于 10000-60000 范围。
status_messagestring任务状态说明。
timestring任务执行耗时,单位秒。
costfloat单任务成本,单位 USD。
result_countintegerresult 数组中的结果数量。
patharray请求路径。
dataobject任务创建时提交的原始参数。
resultarray实搜索结果数组。

data 对象

data 中通常会返回创建任务时使用的参数,例如:

字段类型说明
apistringAPI 类型。
functionstring调用方法。
sestring搜索引擎标识。
se_typestring搜索类型。
location_codeinteger地区编码。
keywordstring查询。
tagstring自定义标签。
devicestring设备类型。
osstring操作系统类型。

result 数组字段

字段类型说明
keywordstring创建任务时的。返回时会对 %## 编码进行解码,+ 会被解码为空格。
typestring创建任务时的搜索引擎类型。
se_domainstring创建任务时的搜索引擎域名。
location_codeinteger创建任务时的地区编码。
language_codestring创建任务时的语言编码。
check_urlstring搜索结果页直达地址,可用于人工校验结果准确性。
datetimestring结果抓取时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00
spellobject搜索引擎自动纠错信息。若搜索引擎对进行了修正,将返回修正后的及纠错类型。
refinement_chipsobject搜索细化标签。该端点中通常为 null
item_typesarray当前 SERP 中识别到的结果类型列表。可能值:organicpaid
se_results_countintegerSERP 总结果数。
pages_countinteger本次抓取返回的结果页数量。
items_countintegeritems 数组中的结果数量。
itemsarraySERP 明细结果。

spell 对象字段

字段类型说明
keywordstring搜索引擎纠错后的。返回结果将基于该纠错词。
typestring纠错类型。可能值:did_you_meanshowing_results_forno_results_found_forincluding_results_for

items 结果结构

该端点主要返回两类 SERP素:

  • organic:自然结果
  • paid:广告结果

organic 自然结果字段

字段类型说明
typestring固定为 organic
rank_groupinteger同类型结果组排名。在相同 type连续计数。
rank_absoluteinteger当前结果在整页 SERP 中的绝对排名。
pageinteger结果所在页码。
domainstring结果域名。
titlestring标题。
descriptionstring摘要描述。
urlstring结果 URL。默认,百度返回的链接通常为搜索引擎跳转编码地址。
breadcrumbstring面屑路径。
字段类型说明
typestring固定为 paid
rank_groupinteger同类型结果组排名。
rank_absoluteinteger整体绝对排名。
pageinteger所在页码。
domainstring结果域名。
titlestring标题。
descriptionstring摘要描述。
urlstring结果 URL。默认通常为百度编码跳转地址。
breadcrumbstring面屑路径。

##百度结果 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_codetasks[].status_code
status_message对应的状态描述信息。
tasks_error返回错误的任务数,大于 0 时应逐项排查。

建议在接时重点处理以下场景:

  • 顶层请求成功,但某个任务返回失败
  • 任务已存在,但 result 为空
  • 任务 30 天,无法继续查询
  • 请求参数或任务 ID 格式不合法

使用建议

  1. 异步流程接:创建任务,再通过 tasks_ready 或任务 ID 获取结果。
  2. 保存任务 ID:任务结果可在 30 天重复查询,建议库保存。
  3. 区分编码 URL 与真实 URL:若做排名监控,编码链接通常已足够;若需站点归因或落地页分析,再考虑开启 get_website_url
  4. 做好错误重试与状态检查:优检查顶层与任务级别的 status_code

实用场景

  • 回查抓取结果:通过任务 ID 获取已完成的百度 SERP 明细,便于异步采集流程中的结果回收与库。
  • 监控自然位与广告位分布:根据 item_typesrank_absolutetype 区分自然结果与广告结果,评估商业化程度。
  • 分析竞争域名排名表现:提取 domaintitlebreadcrumb 等字段,识别竞品在目标下的位置与形态。
  • 校验搜索结果准确性:利用 check_url 回看搜索页,对抓取结果做抽样质检,提高数据可信度。
  • 识别搜索引擎自动纠错影响:通过 spell 字段判断是否被自动改写,将纠错后的结果误判为原词真实排名。

统一入口:官网 · LLM API · 控制台