主题
为站点创建建议任务
POST /v3/keywords_data/google_ads/keywords_for_site/task_post
接口说明
该接口用于为指定域名或页面创建“站点”采集任务。任务完成后,可返回与目标站点的列表,以及以下核心指标:
- 出价数据
- 上个月搜索量
- 最近一年的搜索量趋势
- 竞争度
这是标准异步模式接口,适合不要求实时返回结果的场景。您创建任务,本平台完成数据采集后,再通过结果接口按任务 id 获取结果。
如果您需要即时结果,建议使用对应的 实时(Live)接口;Live 模式无需拆分 POST 建任务和 GET 取结果两个步骤。
历史数据最长可追溯 4 年。
接口地址:
POST https://api.seermartech.cn/v3/keywords_data/google_ads/keywords_for_site/task_post
计费说明
该接口按任务创建次数计费在成功创建任务时扣费。
参考价约 ¥0.8000 / 次 无论最终返回 1 个还是最多 2000 个建议,请求单价相同。 扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
请求规则
- 请求方法:
POST - 请求体格式:
JSON - 编码:
UTF-8 - 请求体为数组结构:
[{ ... }] - 单次 POST 最多可提交 100 个任务
- 每分钟最多 2000 次 API 调用
- 如果单次请求中任务数 100,出部分会返回错误
40006
单个请求最多可获得 2000 条建议及指标。
回调与结果获取
任务创建后,您可以通过以下方式获取结果:
- 使用任务唯一标识
id查询已完成任务结果 - 在创建任务时传
postback_url,任务完成后由本平台主动推送结果 - 在创建任务时传
pingback_url,任务完成后由本平台发送通知
说明:
postback_url:本平台会向该地址发送 POST 请求,并以gzip压缩格式返回结果pingback_url:本平台会向该地址发送 GET 请求用于完成通知- 如果您的服务器 10 秒未响应,连接会因时中断,任务会转对应的
tasks_ready列表,之后可自行获取结果 - 回调地址中的特殊字符会进行 URL 编码,例如
#会被编码为%23
请求参数
以下为创建任务时可用的字段说明。
| 字段名 | 类型 | 填 | 说明 |
|---|---|---|---|
target | string | 是 | 目标站点域名或目标页面 URL。若希望按整个站点获取,请结合 target_type 使用。 |
target_type | string | 否 | 目标类型,可选值:site、page;默认值:page。site 表示返回整个站点,page 表示返回指定页面。 |
location_name | string | 否 | 搜索引擎地区名。不传则返回范围数据。使用该字段时,不再传 location_code 或 location_coordinate。示例:London,England,United Kingdom |
location_code | integer | 否 | 搜索引擎地区编码。不传则返回范围数据。使用该字段时,不再传 location_name 或 location_coordinate。示例:2840 |
location_coordinate | string | 否 | 地理坐标,格式为 "latitude,longitude"。使用该字段时,不再传 location_name 或 location_code。系统将按该坐标所属国家返回数据。示例:52.6178549,-155.352142 |
language_name | string | 否 | 搜索引擎语言名。示例:English |
language_code | string | 否 | 搜索引擎语言编码。示例:en |
search_partners | boolean | 否 | 是否搜索合作伙伴数据。true 表示搜索合作网络;默认 false,返回 Google 搜索站点数据。 |
date_from | string | 否 | 时间范围起始日期,格式:yyyy-mm-dd。最早可设置为当前日期往前 4 年。默认返回过去 12 个月数据。该值不能大于 date_to,也不能晚于昨天。若状态接口中 actual_data=false,最晚可设置到上上个月;若 actual_data=true,最晚可设置到上个月。 |
date_to | string | 否 | 时间范围结束日期,格式:yyyy-mm-dd。不能晚于昨天;不传时默认使用昨天。示例:2022-11-30 |
include_adult_keywords | boolean | 否 | 是否成人。true 表示;默认 false。注意:受平台广告平台限制,此类可能仍无数据返回。 |
sort_by | string | 否 | 结果排序字段,按降序排序。可选值:relevance、search_volume、competition_index、low_top_of_page_bid、high_top_of_page_bid。默认:relevance |
postback_url | string | 否 | 任务完成后接收结果推送的 URL。本平台会向该地址发送 POST 请求,结果为 gzip 压缩。支持在 URL 中使用 $id 和 $tag 变量。示例:http://your-server.com/postbackscript?id=$id |
pingback_url | string | 否 | 任务完成后接收通知的 URL。本平台会向该地址发送 GET 请求。支持在 URL 中使用 $id 和 $tag 变量。示例:http://your-server.com/pingscript?id=$id&tag=$tag |
tag | string | 否 | 自定义任务标识,最长 255 个字符。可用于将任务与业务记录,返回结果中的 data 对象会原样带回该值。 |
地区与语言枚举获取
可通过以下容路径查询可用地区和语言:
- 地区列表:
/v3/keywords_data/google_ads/locations - 语言列表:
/v3/keywords_data/google_ads/languages
日期参数说明
- 若未指定
date_from/date_to,默认返回近 12 个月数据 date_to默认取昨天date_from最早支持最近 4 年- 日期使用
yyyy-mm-dd格式
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/keywords_data/google_ads/keywords_for_site/task_post" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"location_name": "United States",
"target": "example.com"
},
{
"location_code": 2840,
"target": "example.com",
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
},
{
"location_name": "United States",
"target": "example.com",
"postback_url": "https://your-server.com/postbackscript"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/keywords_data/google_ads/keywords_for_site/task_post"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
data = [
{
# 基础任务:按地区获取站点
"location_name": "United States",
"target": "example.com"
},
{
# 带通知回调
"location_code": 2840,
"target": "example.com",
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
},
{
# 带结果推送回调
"location_name": "United States",
"target": "example.com",
"postback_url": "https://your-server.com/postbackscript"
}
]
response = requests.post(url, headers=headers, json=data)
print(response.json)TypeScript
typescript
import axios from "axios";
const postData = [
{
// 基础任务
location_name: "United States",
target: "example.com"
},
{
// 任务完成后接收 GET 通知
location_code: 2840,
target: "example.com",
tag: "some_string_123",
pingback_url: "https://your-server.com/pingscript?id=$id&tag=$tag"
},
{
// 任务完成后接收 POST 结果推送
location_name: "United States",
target: "example.com",
postback_url: "https://your-server.com/postbackscript"
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/keywords_data/google_ads/keywords_for_site/task_post",
headers: {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
},
data: postData
}).then((response) => {
console.log(response.data);
}).catch((error) => {
console.error(error);
});响应结构
接口返回 JSON 对象 tasks 数组各任务的创建结果。
顶层字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 局状态码 |
status_message | string | 局状态信息 |
time | string | 执行耗时,单位秒 |
cost | float | 本次请求总费用,单位 USD |
tasks_count | integer | tasks 数组中的任务数量 |
tasks_error | integer | 返回错误的任务数量 |
tasks | array | 任务结果数组 |
tasks 数组字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000-60000 |
status_message | string | 任务状态信息 |
time | string | 任务处理耗时,单位秒 |
cost | float | 单个任务费用,单位 USD |
result_count | integer | result 数组中的数量 |
path | array | 请求路径 |
data | object | 您在 POST 请求中提交的参数回显 |
result | array | null | 结果数组。对于建任务接口,此处通常为 null |
响应示例
json
{
"version": "0.1.20200130",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.1108 sec.",
"cost": 0.15,
"tasks_count": 3,
"tasks_error": 0,
"tasks": [
{
"id": "01301901-1535-0108-0000-2f0f18b0f39b",
"status_code": 20100,
"status_message": "Task Created.",
"time": "0.0018 sec.",
"cost": 0.05,
"result_count": 0,
"path": [
"v3",
"keywords_data",
"google_ads",
"keywords_for_site",
"task_post"
],
"data": {
"api": "keywords_data",
"function": "keywords_for_site",
"se": "google_ads",
"location_name": "United States",
"target": "example.com"
},
"result": null
},
{
"id": "01301901-1535-0108-0000-daf9eadecca9",
"status_code": 20100,
"status_message": "Task Created.",
"time": "0.0019 sec.",
"cost": 0.05,
"result_count": 0,
"path": [
"v3",
"keywords_data",
"google_ads",
"keywords_for_site",
"task_post"
],
"data": {
"api": "keywords_data",
"function": "keywords_for_site",
"se": "google_ads",
"location_code": 2840,
"target": "example.com",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag",
"tag": "some_string_123"
},
"result": null
},
{
"id": "01301901-1535-0108-0000-d86ef6dbd3a8",
"status_code": 20100,
"status_message": "Task Created.",
"time": "0.0018 sec.",
"cost": 0.05,
"result_count": 0,
"path": [
"v3",
"keywords_data",
"google_ads",
"keywords_for_site",
"task_post"
],
"data": {
"api": "keywords_data",
"function": "keywords_for_site",
"se": "google_ads",
"location_name": "United States",
"language_name": null,
"target": "example.com",
"postback_url": "https://your-server.com/postbackscript"
},
"result": null
}
]
}状态码与错误处理
请务根据 status_code 和 status_message 做好异常处理。
常见点:
- 顶层
status_code=20000:请求成功 - 任务级
status_code=20100:任务创建成功 40006:单次 POST 中的任务数 100,出部分会报错
建议同时处理以下:
- 请求体格式错误
- 参数冲突,例如同时传
location_name和location_code - 日期范围非法
- 回调地址不可用或响应时
- 平台数据源当期无可用数据
如需完整错误码体系,请参考错误码附录。
使用建议
- 按整个域名挖掘时,将
target_type设为site - 只分析某个落地页时,将
target_type设为page - 如果需要按国家级别估算搜索需求,可传
location_name、location_code或location_coordinate - 如果希望自动接收结果,优使用
postback_url - 若需获知任务完成状态,可使用
pingback_url
实用场景
- 挖掘站点主题词:竞品域名,获取核心,用于制定栏目结构和选题。
- 分析落地页覆盖度:针对单个页面创建任务,判断页面与哪些最,优化标题、正文与链。
- 评估市场搜索需求:结合地区和语言参数,查看不同国家/语言下的规模与趋势,支持化 SEO 规划。
- 监控热度变化:通过设置时间范围,观察近一年甚至更长周期的搜索趋势,用于季节性布局。
- 筛选高价值投放词:结合搜索量、竞争度和页首出价区间,快速挑选更适合 SEO 与广告协同投放的。