Skip to content

设置 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_urlpingback_url 接收任务完成通知

任务提交后对设置任务本身计费。高优级任务、增加抓取深度以及启用像素排名等可能产生额外费用。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

如果回调服务器在 10 秒未响应,连接将因时中止,任务会转移到“任务就绪”列表。

请求参数

任务级参数

参数类型说明
keywordstring搜索,最长 700 个字符。字段中的 %## 会被解码,字符 + 会被解码为空格。若中需要使用 %,请编码为 %25;需要使用 +,请编码为 %2B
location_namestring条件填搜索引擎位置的完整名称。未指定 location_code 时填。使用此参数时无需同时指定 location_code
location_codeinteger条件填搜索引擎位置代码。未指定 location_name 时填。使用此参数时无需同时指定 location_name
language_namestring条件填搜索引擎语言的完整名称。未指定 language_code 时填。
language_codestring条件填搜索引擎语言代码。未指定 language_name 时填。Seznam 通常使用 cs(捷语)。
urlstring搜索请求的完整 URL。平台会从 URL 中解析参数。该方式处理复杂度较高,且 URL须准确的语言和位置参数,通常不建议使用。
priorityinteger任务优级:1 为普通优级(默认值),2 为高优级。高优级任务可能产生额外费用。
depthintegerSERP 解析深度,即返回的结果数量。默认值为 10,最大值为 500。每抓取最多 10 条结果的 SERP 计费一次;当 depth 大于 10 且搜索引擎返回更多结果时,可能产生额外费用。
max_crawl_pagesinteger最多抓取的搜索结果页数。默认值为 1,最大值为 10。该参数与 depth合使用。
devicestring设备类型,可选值:desktopmobile。默认值为 desktop
osstring设备操作系统。当 device=desktop 时,可选 windowsmacos,默认值为 windows;当 device=mobile 时,可选 androidios,默认值为 android
se_domainstring搜索引擎域名。平台会自动选择域名,也可以手动指定,例如 search.seznam.cz
search_paramstring搜索请求的参数。
calculate_rectanglesboolean是否计算高级 SERP素的像素排名。像素排名表示结果摘要相对于屏幕左上角的距离。默认值为 false;设置为 true 时,任务费用将乘以 2。
stop_crawl_on_matcharray达到指定目标后停止继续抓取的目标数组,最多 10 个目标对象。每个对象 match_typematch_value。平台会返回截至匹目标(该目标)为止的 SERP 结果。费用按已抓取的每个 SERP 计算。
tagstring用户自定义任务标识,最长 255 个字符。可用于任务与结果,响应中的 data 对象会返回该值。
postback_urlstring任务完成后接收结果的 URL。平台将以 POST 方式发送 gzip 压缩后的结果。URL 中可使用 $id$tag 占位符,平台发送请求前会替换为值。
postback_datastring条件填postback_url 的返回数据类型。指定 postback_url 时填。可选值:regularadvancedhtml
pingback_urlstring任务完成通知 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_urlpingback_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 数据已提交任务的信息。

顶层字段

字段类型说明
versionstring当前 API 版本。
status_codeinteger请求整体状态码。成功时通常为 20000
status_messagestring请求整体状态说明。
timestring请求执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
tasks_countintegertasks 数组中的任务总数。
tasks_errorintegertasks 数组中返回错误的任务数。
tasksarray已提交任务数组。

tasks 子字段

字段类型说明
idstring平台生成的唯一任务标识,UUID 格式。可用于查询任务结果。
status_codeinteger任务状态码,通常在 1000060000 范围。
status_messagestring任务状态说明。
timestring任务执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
result_countintegerresult 数组中的数量。任务提交接口通常为 0
patharray请求路径信息。
dataobject请求中提交的任务参数。
resultarray | 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:分别设置 deviceos 参数,分析不同设备下的排名差异,为移动端 SEO 优化提供依据。
  • 抓取指定深度的竞争结果:通过 depthmax_crawl_pages 获取更多搜索结果页,发现竞争对手及长尾机会。
  • 按目标域名提前停止抓取:使用 stop_crawl_on_match 在匹指定域名或 URL 模式后停止任务,降低不的抓取与费用。
  • 构建异步排名监控流程pingback_urlpostback_url,在任务完成后自动接收通知或结果,减少轮询开销。

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