Skip to content

通过任务 ID 获取 Bing 自然搜索常规结果

接口说明

用于根据已创建任务的 id,获取 Bing 自然搜索(Regular)结果。

请求方式

GET https://api.seermartech.cn/v3/serp/wp/v2/task_get/regular/$id

说明:原始页面标题为 Bing,但正文示例路径中同时出现了 /v3/serp/wp/v2/.../v3/serp/bing/organic/...。如需与已创建任务保持一致,请以任务返回的可用 endpoint 或任务所属搜索引擎路径为准。

计费说明

该接口本身不重复计费。费用在创建任务时产生;任务结果在 30 天 可反复获取。

扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

路径参数

参数名类型说明
idstring任务唯一标识,UUID 格式。任务创建后,可在 30 天随时通过该 ID 获取结果。

沙盒测试

可使用沙盒端点获取完整字段结构的模拟数据,调用沙盒不会产生费用。

示例:

https://api.seermartech.cn/v3/serp/bing/organic/task_get/regular/00000000-0000-0000-0000-000000000000

沙盒响应会返回该端点下可用的字段,但字段值为模拟。

响应结构

接口返回 JSON,对象中 tasks 数组。

顶层字段

字段名类型说明
versionstring当前 API 版本
status_codeinteger通用状态码
status_messagestring通用状态信息
timestring接口执行耗时,单位秒
costfloat本次请求的总费用,单位 USD
tasks_countintegertasks 数组中的任务数量
tasks_errorintegertasks 数组中返回错误的任务数
tasksarray任务结果数组

建议在接时建立完整的异常处理机制,并根据 status_codestatus_message 做错误分流处理。

tasks[] 字段

字段名类型说明
idstring任务 ID,UUID 格式
status_codeinteger任务状态码,范围通常为 10000-60000
status_messagestring任务状态信息
timestring任务执行耗时
costfloat该任务费用,单位 USD
result_countintegerresult 数组中的结果数
patharray请求路径
dataobject与创建任务时 POST 请求中传的参数一致
resultarray结果数组

result[] 字段

字段名类型说明
keywordstringPOST 请求中提交的;返回时会对 %## 进行解码,+ 会被还原为空格
typestringPOST 请求中的搜索引擎类型
se_domainstringPOST 请求中的搜索引擎域名
location_codeintegerPOST 请求中的地区编码
language_codestringPOST 请求中的语言编码
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纠错类型,可能值:including_results_for

SERP素说明

organic 自然结果

字段名类型说明
typestring固定为 organic
rank_groupinteger分组排名在相同 type 组计数
rank_absoluteintegerSERP局绝对排名
pageinteger所在搜索结果页码
domainstring结果域名
titlestring标题
descriptionstring描述摘要
urlstring结果链接
breadcrumbstring面屑路径
字段名类型说明
typestring固定为 paid
rank_groupinteger分组排名在相同 type 组计数
rank_absoluteinteger结果页中的绝对排名
pageinteger所在搜索结果页码
domainstring广告域名
titlestring广告标题
descriptionstring广告描述
urlstring广告链接
breadcrumbstring广告面屑
字段名类型说明
typestring固定为 related_searches
rank_groupinteger分组排名
rank_absoluteinteger局绝对排名
pageinteger所在搜索结果页码
itemsarray搜索词列表,通常 8 个查询词

请求示例

cURL

bash
id="09171517-0696-0242-0000-a96bc1ad0bce"

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/bing/organic/task_get/regular/{task_id}"
headers = {
 "Authorization": "Bearer smt_live_YOUR_KEY",
 "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
result = response.json

# 输出返回结果
print(result)

TypeScript

typescript
import axios from "axios";

const taskId = "02231256-2604-0066-2000-57133b8fc54e";

axios({
 method: "get",
 url: "https://api.seermartech.cn/v3/serp/bing/organic/task_get/regular/" + taskId,
 headers: {
 "Authorization": "Bearer smt_live_YOUR_KEY",
 "content-type": "application/json"
 }
}).then(function (response) {
 // 输出结果数据
 console.log(response.data);
}).catch(function (error) {
 console.error(error);
});

结合 tasks_ready 拉取已完成任务

使用中,通常调用已完成任务列表接口,再逐个获取结果。

Python 示例

python
import requests

base_url = "https://api.seermartech.cn"
headers = {
 "Authorization": "Bearer smt_live_YOUR_KEY",
 "Content-Type": "application/json"
}

# 1. 获取已完成任务列表
ready_resp = requests.get(
 base_url + "/v3/serp/wp/v2/tasks_ready",
 headers=headers
)
ready_data = ready_resp.json

results = []

if ready_data.get("status_code") == 20000:
 for task_group in ready_data.get("tasks", []):
 for task in task_group.get("result", []) if isinstance(task_group, dict) else []:
 endpoint = task.get("endpoint_regular")
 task_id = task.get("id")

 # 2. 通过返回的 endpoint 获取结果
 if endpoint:
 r = requests.get(base_url + endpoint, headers=headers)
 results.append(r.json)

 # 3. 或通过任务 ID 直接拼接路径获取
 # if task_id:
 # r = requests.get(
 # base_url + f"/v3/serp/wp/v2/task_get/regular/{task_id}",
 # headers=headers
 # )
 # results.append(r.json)

 print(results)
else:
 print("error:", ready_data.get("status_code"), ready_data.get("status_message"))

响应示例

json
{
 "version": "0.1.20220104",
 "status_code": 20000,
 "status_message": "Ok.",
 "time": "0.0432 sec.",
 "cost": 0,
 "tasks_count": 1,
 "tasks_error": 0,
 "tasks": [
 {
 "id": "02231256-2604-0066-2000-57133b8fc54e",
 "status_code": 20000,
 "status_message": "Ok.",
 "time": "0.0211 sec.",
 "cost": 0,
 "result_count": 1,
 "path": [
 "v3",
 "serp",
 "bing",
 "organic",
 "task_get",
 "regular",
 "02231256-2604-0066-2000-57133b8fc54e"
 ],
 "data": {
 "api": "serp",
 "function": "task_get",
 "se": "bing",
 "se_type": "organic",
 "language_code": "en",
 "location_code": 2840,
 "keyword": "albert einstein",
 "depth": 10,
 "tag": "some_string_123",
 "device": "desktop",
 "os": "windows"
 },
 "result": [
 {
 "keyword": "albert einstein",
 "type": "organic",
 "se_results_count": 0,
 "pages_count": 1,
 "items_count": 9,
 "items": []
 }
 ]
 }
 ]
}

状态码说明

状态码说明
20000请求成功
10000-60000任务级状态码范围,含义请结合响应中的 status_message 判断

如任务未完成、参数有误、授权失败或处理异常,接口会返回相应状态码与错误信息。建议在业务侧至少处理以下:

  • 顶层 status_code20000
  • tasks_error 大于 0
  • 单个任务 status_code 大于等于 40000
  • result 为空或不存在

使用建议

  • 优通过 /v3/serp/.../tasks_ready 获取已完成任务,再按 endpoint_regular 获取结果。
  • 若系统中已保存任务 ID,也可直接请求 /v3/serp/.../task_get/regular/$id
  • 建议保存 check_url,便于抽样校验 SERP 数据。
  • 若可能触发拼写纠错,请 spell.keyword,分析时将纠错词与原词混淆。

实用场景

  • 监控排名:按任务 ID 回查 Bing SERP,持续跟踪目标的自然排名和页面波动。
  • 复核广告竞争态势:提取 paid 结果,识别竞品是否在目标词上投放广告以及广告文案变化。
  • 校验抓取结果准确性:利用 check_url 回放搜索结果页,支持质检、异常排查和人工复核。
  • 分析搜索纠错影响:结合 spell 字段识别被自动纠正的,误判真实搜索意图。
  • 挖掘搜索机会:读取 related_searches 中的查询词,为扩词、专题规划和长尾词布局提供依据。

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