主题
设置 Seznam 自然搜索结果任务
POST /v3/serp/seznam/organic/task_post
本接口用于设置 Seznam 自然搜索结果(SERP)抓取任务。
POST https://api.seermartech.cn/v3/serp/seznam/organic/task_post
Seznam 是捷常用的搜索引擎之一,本接口面向捷语搜索场景,返回前 10 条自然搜索结果。任务支持普通和高优级两种执行优级。
接口说明
- 请求方法:
POST - 请求路径:
/v3/serp/seznam/organic/task_post - 请求格式:JSON
- 请求体格式:JSON 数组
- 单次请求最多 100 个任务 平台限流以认证说明中的 30/60/120 次/分钟规则为准 -过单次 100 个任务限制的部分将返回错误码
40006 - 任务提交成功后,可通过返回的任务
id获取结果 - 也可以通过
postback_url或pingback_url接收任务完成通知
任务提交后对设置任务本身计费。高优级任务、增加抓取深度以及启用像素排名等可能产生额外费用。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
如果回调服务器在 10 秒未响应,连接将因时中止,任务会转移到“任务就绪”列表。
请求参数
任务级参数
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 搜索,最长 700 个字符。字段中的 %## 会被解码,字符 + 会被解码为空格。若中需要使用 %,请编码为 %25;需要使用 +,请编码为 %2B。 |
location_name | string | 条件填 | 搜索引擎位置的完整名称。未指定 location_code 时填。使用此参数时无需同时指定 location_code。 |
location_code | integer | 条件填 | 搜索引擎位置代码。未指定 location_name 时填。使用此参数时无需同时指定 location_name。 |
language_name | string | 条件填 | 搜索引擎语言的完整名称。未指定 language_code 时填。 |
language_code | string | 条件填 | 搜索引擎语言代码。未指定 language_name 时填。Seznam 通常使用 cs(捷语)。 |
url | string | 否 | 搜索请求的完整 URL。平台会从 URL 中解析参数。该方式处理复杂度较高,且 URL须准确的语言和位置参数,通常不建议使用。 |
priority | integer | 否 | 任务优级:1 为普通优级(默认值),2 为高优级。高优级任务可能产生额外费用。 |
depth | integer | 否 | SERP 解析深度,即返回的结果数量。默认值为 10,最大值为 500。每抓取最多 10 条结果的 SERP 计费一次;当 depth 大于 10 且搜索引擎返回更多结果时,可能产生额外费用。 |
max_crawl_pages | integer | 否 | 最多抓取的搜索结果页数。默认值为 1,最大值为 10。该参数与 depth合使用。 |
device | string | 否 | 设备类型,可选值:desktop、mobile。默认值为 desktop。 |
os | string | 否 | 设备操作系统。当 device=desktop 时,可选 windows、macos,默认值为 windows;当 device=mobile 时,可选 android、ios,默认值为 android。 |
se_domain | string | 否 | 搜索引擎域名。平台会自动选择域名,也可以手动指定,例如 search.seznam.cz。 |
search_param | string | 否 | 搜索请求的参数。 |
calculate_rectangles | boolean | 否 | 是否计算高级 SERP素的像素排名。像素排名表示结果摘要相对于屏幕左上角的距离。默认值为 false;设置为 true 时,任务费用将乘以 2。 |
stop_crawl_on_match | array | 否 | 达到指定目标后停止继续抓取的目标数组,最多 10 个目标对象。每个对象 match_type 和 match_value。平台会返回截至匹目标(该目标)为止的 SERP 结果。费用按已抓取的每个 SERP 计算。 |
tag | string | 否 | 用户自定义任务标识,最长 255 个字符。可用于任务与结果,响应中的 data 对象会返回该值。 |
postback_url | string | 否 | 任务完成后接收结果的 URL。平台将以 POST 方式发送 gzip 压缩后的结果。URL 中可使用 $id 和 $tag 占位符,平台发送请求前会替换为值。 |
postback_data | string | 条件填 | postback_url 的返回数据类型。指定 postback_url 时填。可选值:regular、advanced、html。 |
pingback_url | string | 否 | 任务完成通知 URL。任务完成后,平台将向该 URL 发起 GET 请求。URL 中可使用 $id 和 $tag 占位符。 |
location_name 示例
text
London,England,United Kingdom可通过以下容路径查询可用搜索位置及名称:
/v3/serp/wp/locations
location_code 示例
text
2840可通过以下容路径查询可用搜索位置及代码:
/v3/serp/wp/locations
language_name 示例
text
Czech可通过以下容路径查询可用搜索语言及名称:
/v3/serp/wp/languages
language_code 示例
text
cs可通过以下容路径查询可用搜索语言及代码:
/v3/serp/wp/languages
stop_crawl_on_match 参数
示例:
json
{
"stop_crawl_on_match": [
{
"match_type": "domain",
"match_value": "example.cz"
},
{
"match_type": "wildcard",
"match_value": "/blog/post-*"
}
]
}match_value
- 类型:
string-填条件:指定stop_crawl_on_match时填 - 说明:目标域名、子域名或通符值
- 域名或子域名不得请求协议,例如不要写
https://example.cz
示例:
json
{
"match_value": "example.cz"
}或:
json
{
"match_value": "/blog/post-*"
}match_type
- 类型:
string-填条件:指定stop_crawl_on_match时填 - 可选值:
| 值 | 说明 |
|---|---|
domain | 匹指定域名或子域名 |
with_subdomains | 匹主域名及所有子域名 |
wildcard | 按通符模式匹 |
回调 URL 占位符
postback_url 和 pingback_url 支持以下占位符:
text
https://your-server.com/callback?id=$id&tag=$tag$id:替换为任务 ID$tag:替换为经过 URL 编码的任务标签- URL 中的特殊字符会进行 URL 编码,例如
#会编码为%23
请求示例
curl
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/serp/seznam/organic/task_post" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"language_code": "cs",
"location_code": 2203,
"keyword": "albert einstein"
},
{
"language_name": "Czech",
"location_name": "Czechia",
"keyword": "albert einstein",
"priority": 2,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
},
{
"url": "https://search.seznam.cz/?q=albert+einstein",
"postback_data": "html",
"postback_url": "https://your-server.com/postbackscript"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/serp/seznam/organic/task_post"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
tasks = [
{
"language_code": "cs",
"location_code": 2203,
"keyword": "albert einstein",
},
{
"language_name": "Czech",
"location_name": "Czechia",
"keyword": "albert einstein",
"priority": 2,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag",
},
{
"url": "https://search.seznam.cz/?q=albert+einstein",
"postback_data": "html",
"postback_url": "https://your-server.com/postbackscript",
},
]
response = requests.post(url, headers=headers, json=tasks, timeout=30)
data = response.json()
if data.get("status_code") == 20000:
print(data)
else:
print(
"请求失败,错误码:%s,错误信息:%s"
% (data.get("status_code"), data.get("status_message"))
)TypeScript
typescript
import axios from "axios";
const tasks = [
{
language_code: "cs",
location_code: 2203,
keyword: "albert einstein",
},
{
language_name: "Czech",
location_name: "Czechia",
keyword: "albert einstein",
priority: 2,
tag: "some_string_123",
pingback_url:
"https://your-server.com/pingscript?id=$id&tag=$tag",
},
{
url: "https://search.seznam.cz/?q=albert+einstein",
postback_data: "html",
postback_url: "https://your-server.com/postbackscript",
},
];
axios
.post(
"https://api.seermartech.cn/v3/serp/seznam/organic/task_post",
tasks,
{
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);
});响应字段
接口返回 JSON 数据已提交任务的信息。
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
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 | 已提交任务数组。 |
tasks 子字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 平台生成的唯一任务标识,UUID 格式。可用于查询任务结果。 |
status_code | integer | 任务状态码,通常在 10000 至 60000 范围。 |
status_message | string | 任务状态说明。 |
time | string | 任务执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
result_count | integer | result 数组中的数量。任务提交接口通常为 0。 |
path | array | 请求路径信息。 |
data | object | 请求中提交的任务参数。 |
result | array | null | 任务结果。任务提交接口返回 null,需要通过任务查询接口或回调获取 SERP 数据。 |
错误码及状态说明请参考错误码文档。
响应示例
json
{
"version": "0.1.20220428",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0616 sec.",
"cost": 0.0006,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "01234567-89ab-cdef-0123-456789abcdef",
"status_code": 20100,
"status_message": "Task Created.",
"time": "0.0200 sec.",
"cost": 0.0006,
"result_count": 0,
"path": [
"v3",
"serp",
"seznam",
"organic",
"task_post"
],
"data": {
"api": "serp",
"function": "task_post",
"se": "seznam",
"se_type": "organic",
"language_code": "cs",
"location_code": 2203,
"keyword": "albert einstein",
"tag": "some_string_123",
"postback_url": "https://your-server.com/postbackscript.php",
"postback_data": "html",
"device": "desktop",
"os": "windows"
},
"result": null
}
]
}实用场景
- 监测捷语排名:批量提交 Seznam 任务,跟踪目标网站在捷市场的自然搜索表现。
- 对比桌面端与移动端 SERP:分别设置
device和os参数,分析不同设备下的排名差异,为移动端 SEO 优化提供依据。 - 抓取指定深度的竞争结果:通过
depth和max_crawl_pages获取更多搜索结果页,发现竞争对手及长尾机会。 - 按目标域名提前停止抓取:使用
stop_crawl_on_match在匹指定域名或 URL 模式后停止任务,降低不的抓取与费用。 - 构建异步排名监控流程:
pingback_url或postback_url,在任务完成后自动接收通知或结果,减少轮询开销。