主题
SERP 任务 ID 列表
POST /v3/serp/id_list
本接口使用 POST 方法,请求路径为 /v3/serp/id_list,用于查询指定时间范围创建的 SERP 任务 ID 及数据已完成和未完成的任务。
调用限制:每分钟最多调用 10 次,每次最多返回 1000 个任务 ID。查询时间范围最多可追溯至当前时间前个月;但任务数据适用于当前时间前一个月创建的任务。
计费说明
本接口,不产生接口调用费用。
请求地址
text
POST https://api.seermartech.cn/v3/serp/id_list所有请求体使用 UTF-8 编码的 JSON 数组格式:
json
[
{
"datetime_from": "2023-01-31 00:00:00 +00:00",
"datetime_to": "2023-02-01 00:00:00 +00:00",
"limit": 100,
"offset": 0,
"sort": "desc",
"include_metadata": true
}
]请求参数
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
datetime_from | string | 是 | 任务创建时间的起始时间。使用 UTC 格式:yyyy-mm-dd hh-mm-ss +00:00,例如 2023-01-15 12:57:46 +00:00。当 include_metadata=true 时,最早可查询当前时间前一个月;当 include_metadata=false 时,最早可查询当前时间前个月。不得晚于当前时间。 |
datetime_to | string | 是 | 任务创建时间的结束时间。使用 UTC 格式,例如 2023-01-31 13:57:46 +00:00。不得晚于当前时间,且大于 datetime_from。当 include_metadata=true 时,时间范围最多追溯一个月;当 include_metadata=false 时,最多追溯个月。 |
limit | integer | 否 | 返回的最大任务数量。默认值为 1000,取值范围为 1 至 1000。 |
offset | integer | 否 | 结果偏移量。例如设置为 10 时,跳过结果中的前 10 个任务。默认值和最小值为 0,最大值为 100000000。 |
sort | string | 否 | 按任务执行时间排序。可选值:asc、desc。默认值为 asc。 |
include_metadata | boolean | 否 | 是否在响应中返回任务数据。设置为 true 时,返回原始任务参数的 metadata 对象。默认值为 false。 |
响应结构
接口返回 JSON 数据 tasks 数组本次查询到的任务信息。
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
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 | 请求 URL 路径。 |
data | object | 本次请求中提交的参数。 |
result | array | 任务结果数组。 |
result 字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务 ID。 |
url | string | 创建该任务时使用的 URL 路径。 |
datetime_posted | string | 任务创建时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00。 |
datetime_done | string | 任务完成时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00。任务未完成时可能为空。 |
status | string | 任务状态说明或状态码。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
metadata | object | 创建任务时提交的参数。在 include_metadata=true 且任务创建时间符合数据查询范围时返回。 |
cURL 示例
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/serp/id_list" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"datetime_from": "2023-01-31 00:00:00 +00:00",
"datetime_to": "2023-02-01 00:00:00 +00:00",
"limit": 100,
"offset": 0,
"sort": "desc",
"include_metadata": true
}
]'PHP 示例
php
<?php
$ch = curl_init('https://api.seermartech.cn/v3/serp/id_list');
$postData = [
[
'datetime_from' => '2023-01-31 00:00:00 +00:00',
'datetime_to' => '2023-02-01 00:00:00 +00:00',
'limit' => 100,
'offset' => 0,
'sort' => 'desc',
'include_metadata' => true
]
];
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer smt_live_YOUR_KEY',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode($postData, JSON_UNESCAPED_UNICODE)
]);
$response = curl_exec($ch);
if ($response === false) {
throw new Exception(curl_error($ch));
}
curl_close($ch);
$result = json_decode($response, true);
print_r($result);TypeScript 示例
typescript
import axios from "axios";
const requestData = [
{
datetime_from: "2023-01-31 00:00:00 +00:00",
datetime_to: "2023-02-01 00:00:00 +00:00",
limit: 100,
offset: 0,
sort: "desc",
include_metadata: true,
},
];
axios
.post(
"https://api.seermartech.cn/v3/serp/id_list",
requestData,
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
)
.then((response) => {
// 处理接口返回结果
console.log(response.data);
})
.catch((error) => {
// 处理请求错误
console.error(error.response?.data || error.message);
});Python 示例
python
import requests
url = "https://api.seermartech.cn/v3/serp/id_list"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
request_data = [
{
"datetime_from": "2023-01-31 00:00:00 +00:00",
"datetime_to": "2023-02-01 00:00:00 +00:00",
"limit": 100,
"offset": 0,
"sort": "desc",
"include_metadata": True,
}
]
response = requests.post(
url,
headers=headers,
json=request_data,
timeout=60,
)
result = response.json()
if result.get("status_code") == 20000:
# 处理成功结果
print(result)
else:
print(
"请求失败,状态码:%s,消息:%s"
% (result.get("status_code"), result.get("status_message"))
)C# 示例
csharp
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
public class SerpIdListDemo
{
public static async Task Main()
{
using var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "smt_live_YOUR_KEY");
var requestData = new[]
{
new
{
datetime_from = "2023-01-31 00:00:00 +00:00",
datetime_to = "2023-02-01 00:00:00 +00:00",
limit = 100,
offset = 0,
sort = "desc",
include_metadata = true
}
};
var json = JsonSerializer.Serialize(requestData);
using var content = new StringContent(
json,
Encoding.UTF8,
"application/json"
);
var response = await httpClient.PostAsync(
"https://api.seermartech.cn/v3/serp/id_list",
content
);
var responseText = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseText);
}
}响应示例
json
{
"version": "0.1.20221214",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.6078 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "01130021-4426-0139-0000-60d2806c6081",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0200 sec.",
"cost": 0,
"result_count": 1,
"path": [
"v3",
"serp",
"google",
"dataset_search",
"live",
"advanced"
],
"data": {
"api": "serp",
"function": "id_list",
"datetime_from": "2023-01-07 00:00:00 +02:00",
"datetime_to": "2023-02-01 00:00:00 +02:00",
"limit": 100,
"sort": "desc",
"include_metadata": true
},
"result": [
{
"id": "01130021-4426-0139-0000-60d2806c6081",
"url": "v3/serp/google/dataset_search/live/advanced",
"datetime_posted": "2023-01-12 22:21:18 +00:00",
"datetime_done": "2023-01-12 22:21:18 +00:00",
"status": "20000",
"cost": 0,
"metadata": {
"api": "serp",
"function": "live",
"se": "google",
"se_type": "dataset_search",
"keyword": "water quality",
"depth": 700,
"device": "desktop",
"os": "windows",
"postback_data": "advanced"
}
}
]
}
]
}状态码说明
- 顶层
status_code用于表示本次接口请求的整体状态。 - 任务对象中的
status_code用于表示单个任务的处理状态。 - 成功状态通常为
20000。 - 状态码和状态消息请参参考文档中的错误码说明。
实用场景
- 批量获取历史 SERP 任务 ID:按时间范围检索已创建任务,便于建立任务台账和历史数据索引。
- 补查未完成任务:查询指定时间段的任务并结合状态字段筛选未完成项,降低任务遗漏风险。
- 审计 SERP 接口调用记录:开启
include_metadata获取原始任务参数,用于核对、搜索引擎、设备和系统。 - 分页处理大规模任务数据:结合
limit与offset分批读取任务列表,支持大批量 SEO 项目的稳定同步。 - 按执行时间整理任务:使用
sort=asc或sort=desc按时间排序,方便进行任务监控、异常排查和数据归档。