Skip to content

设置扩展任务

POST /v3/keywords_data/bing/keywords_for_keywords/task_post

本接口使用 POST /v3/keywords_data/bing/keywords_for_keywords/task_post 创建 Bing 扩展任务。接口会根据指定,返回由 Bing Ads 推荐的。单个任务最多提交 200 个,最多可获取 3000 条建议。

该接口采用标准任务模式:提交任务后,系统异步采集数据,随后通过任务查询接口获取结果。任务执行时间取决于系统负载。如果业务需要实时返回结果,可使用 Live 接口:

POST /v3/keywords_data/bing/keywords_for_keywords/live

历史数据最长可查询近 24 个月。

接口信息

  • 请求方法: POST
  • 请求路径: /v3/keywords_data/bing/keywords_for_keywords/task_post
  • 完整 URL: https://api.seermartech.cn/v3/keywords_data/bing/keywords_for_keywords/task_post
  • 请求格式: application/json
  • 认证方式: Authorization: Bearer smt_live_YOUR_KEY

计费说明

提交任务时计费,查询任务结果不重复计费。

参考价约 ¥0.36 / 个任务(示例响应中的 0.05 美按参考汇率换算供说明);扣费以响应头 X-SeerMarTech-Charge-CNY 为准。

请求限制

平台限流以认证说明中的 30/60/120 次/分钟规则为准。

  • 每次 POST 请求最多 100 个任务。 -过 100 个任务的部分将返回错误码 40006
  • 每个任务最多 200 个。
  • 每个长度不得 100 个字符。
  • 所有 POST 数据使用 UTF-8 编码的 JSON 格式。
  • 请求体是 JSON 数组,即使只提交一个任务也需要使用数组格式。

任务创建成功后,可通过返回的任务 id 查询结果。也可以在请求中 postback_urlpingback_url,由本平台在任务完成后主动通知。

如果回调服务器在 10 秒未返回响应,连接将因时中断,任务会转 tasks_ready 列表。

请求参数

请求体为任务对象数组,每个对象代表一个任务。

参数类型说明
keywordsarray用于获取的种子数组。每个任务最多 200 个,每个最多 100 个字符。系统会将转换为小写,并在结果中单独返回。
location_namestring条件填搜索引擎地域的完整名称。未指定 location_codelocation_coordinate 时填。使用此参数后,无需再传另外两个地域参数。示例:London,England,United Kingdom
location_codeinteger条件填搜索引擎地域代码。未指定 location_namelocation_coordinate 时填。示例:2840
location_coordinatestring条件填地域 GPS 坐标,格式为 "纬度,经度",例如 52.6178549,-155.352142。返回数据将对应坐标所属国家。使用此参数后,无需再传 location_namelocation_code
language_namestring条件填搜索引擎语言名称。未指定 language_code 时填。支持:EnglishFrenchGerman
language_codestring条件填搜索引擎语言代码。未指定 language_name 时填。支持:enfrde
sort_bystring结果排序字段,支持 search_volumecpccompetitionrelevance。结果按降序排列。默认值:relevance
keywords_negativearray需要从结果中排除的数组,最多 200 个。系统会将转换为小写。
devicestring设备类型。可选值:allmobiledesktoptablet。默认值:all
date_fromstring数据起始日期,格式为 yyyy-mm-dd。如果不指定,默认返回最近 12 个月的数据。可查询范围最长为近 24 个月。
date_tostring数据结束日期,格式为 yyyy-mm-dd。如果不指定,默认返回最近 12 个月的数据。最大可设置为当前日期前一个月,最早可追溯至两年前。
search_partnersboolean是否 Bing 搜索合作伙伴网络。设置为 true 时, Bing、Yahoo、AOL 及托管搜索网络的合作伙伴站点。默认值:false,返回 Bing、AOL 和 Yahoo 搜索网络数据。
postback_urlstring任务完成后,本平台向该地址发送结果的 POST 请求。请求使用 gzip 压缩。支持在 URL 中使用 $id$tag 占位符。
pingback_urlstring任务完成后,本平台向该地址发送 GET 请求进行通知。支持在 URL 中使用 $id$tag 占位符。
tagstring自定义任务标识,最长 255 个字符。可用于任务与业务数据,提交的值会原样返回在响应的 data 对象中。

地域参数说明

location_namelocation_codelocation_coordinate 三只能选择一个。

可通过以下接口获取 Bing 支持的地域列表:

GET /v3/keywords_data/bing/locations

日期参数说明

  • 未指定 date_fromdate_to 时,默认返回最近 12 个月数据。
  • 当状态接口 /v3/keywords_data/bing/status/ 返回的 actual_datafalse 时,date_from 最多只能设置为上上个月及更早日期。
  • actual_datatrue 时,date_from 可设置为上个月及更早日期。
  • 对过去一年的数据,不建议使用自定义日期范围。

cURL 示例

bash
curl --location --request POST \
  "https://api.seermartech.cn/v3/keywords_data/bing/keywords_for_keywords/task_post" \
  --header "Authorization: Bearer smt_live_YOUR_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '[
    {
      "location_name": "United States",
      "language_name": "English",
      "keywords": [
        "average page rpm adsense",
        "adsense blank ads how long",
        "leads and prospects"
      ],
      "sort_by": "relevance",
      "device": "all",
      "tag": "keyword-expansion-demo"
    }
  ]'

Python 示例

python
import requests

url = "https://api.seermartech.cn/v3/keywords_data/bing/keywords_for_keywords/task_post"

headers = {
    "Authorization": "Bearer smt_live_YOUR_KEY",
    "Content-Type": "application/json",
}

# 请求体是 JSON 数组
payload = [
    {
        "language_code": "en",
        "location_code": 2840,
        "keywords": [
            "average page rpm adsense",
            "adsense blank ads how long",
            "leads and prospects",
        ],
        "keywords_negative": ["free"],
        "tag": "some_string_123",
        "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag",
    }
]

response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()

result = response.json()

if result.get("status_code") == 20000:
    print(result)
else:
    print(
        "请求失败,错误码:{},错误信息:{}".format(
            result.get("status_code"),
            result.get("status_message"),
        )
    )

TypeScript 示例

typescript
import axios from "axios";

const payload = [
  {
    language_code: "en",
    location_code: 2840,
    keywords: [
      "average page rpm adsense",
      "adsense blank ads how long",
      "leads and prospects",
    ],
    tag: "some_string_123",
    pingback_url:
      "https://your-server.com/pingscript?id=$id&tag=$tag",
  },
];

axios
  .post(
    "https://api.seermartech.cn/v3/keywords_data/bing/keywords_for_keywords/task_post",
    payload,
    {
      headers: {
        Authorization: "Bearer smt_live_YOUR_KEY",
        "Content-Type": "application/json",
      },
    }
  )
  .then((response) => {
    const result = response.data;

    if (result.status_code === 20000) {
      console.log("任务提交成功:", result);
    } else {
      console.error(
        `请求失败,错误码:${result.status_code},错误信息:${result.status_message}`
      );
    }
  })
  .catch((error) => {
    console.error("网络或接口请求异常:", error.message);
  });

回调通知

pingback_url

任务完成后,本平台向指定地址发送 GET 请求。例如:

text
https://your-server.com/pingscript?id=$id&tag=$tag

  • $id 会被替换为任务 ID。
  • $tag 会被替换为经过 URL 编码的任务标签。

postback_url

任务完成后,本平台向指定地址发送 POST 请求,并在请求体中发送 gzip 压缩后的任务结果。例如:

text
https://your-server.com/postbackscript?id=$id&tag=$tag

  • $id 会被替换为任务 ID。
  • $tag 会被替换为经过 URL 编码的任务标签。
  • URL 中的特殊字符会进行 URL 编码,例如 # 会编码为 %23
  • 回调服务器应在 10 秒返回响应,否则连接会时,任务将转 tasks_ready 列表。

响应字段

接口返回 JSON 对象 tasks 数组。

顶层响应字段

字段类型说明
versionstring当前 API 版本。
status_codeinteger请求级状态码。完整错误码请参考错误码文档。
status_messagestring请求级状态信息。
timestring请求执行耗时,例如 0.0917 sec.
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当前 API 请求路径信息。
dataobject创建任务时提交的参数。
resultarray | null任务结果数组。使用标准任务模式创建任务后,提交响应中的值为 null,需要通过任务查询接口获取结果。

响应示例

json
{
  "version": "0.1.20200923",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "0.0917 sec.",
  "cost": 0.36,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "01234567-89ab-cdef-0123-456789abcdef",
      "status_code": 20100,
      "status_message": "Task Created.",
      "time": "0.0123 sec.",
      "cost": 0.36,
      "result_count": 0,
      "path": [
        "v3",
        "keywords_data",
        "bing",
        "keywords_for_keywords",
        "task_post"
      ],
      "data": {
        "api": "keywords_data",
        "function": "keywords_for_keywords",
        "se": "bing",
        "location_code": 2840,
        "language_code": "en",
        "keywords": [
          "average page rpm adsense",
          "adsense blank ads how long",
          "leads and prospects"
        ]
      },
      "result": null
    }
  ]
}

错误处理

请根据顶层 status_code、任务级 status_code 及对应的 status_message 判断请求和任务是否成功。

常见:

  • 20000:请求成功。
  • 40006:单次请求中的任务数量 100 个。
  • 任务级状态码非成功状态:任务创建或处理失败,应结合 status_message 进行排查。

建议在客户端实现以下处理机制:

  1. 检查 HTTP 状态码和 JSON 中的 status_code
  2. 分别统计 tasks_error 和每个任务的状态码。
  3. 保存任务 id,用于后续查询或失败重试。
  4. 对回调时、网络异常和服务端错误进行重试控制。
  5. 以响应头 X-SeerMarTech-Charge-CNY 记录扣费金额。

实用场景

  • 扩展种子:根据核心词批量获取 Bing ,扩大 SEO选题和覆盖范围。
  • 筛选区域:结合地域名称、地域代码或坐标获取本地化建议,支持多地区 SEO 规划。
  • 比较设备搜索需求:分别提交移动端、桌面端和平板端任务,识别不同设备用户的搜索偏好。
  • 排除无效词项:使用 keywords_negative 过滤品牌无词、类词或低价值词,提升分析效率。
  • 回传任务结果:通过 postback_urlpingback_url 自动通知业务系统,减少轮询并加快生产、广告投放和报表更新流程。

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