主题
Tripadvisor 商家搜索任务提交
接口说明
该接口用于提交 Tripadvisor 商家搜索任务。任务完成后,可返回与指定 keyword 及所选地区的商家资料列表。
适用场景:按品类检索本地商家、查询品牌门店、抓取地标周边商户等。
- 请求方法:
POST - 接口地址:
https://api.seermartech.cn/v3/business_data/tripadvisor/search/task_post
计费说明
创建任务会产生基础任务费用,另外还会根据最终返回的搜索结果数量计费。
注意事项:
- 每返回 30 条搜索结果 计费一次;
- 例如设置
"depth": 31,将按 60 条结果 对应的费用计费; - 高优级任务
priority=2会额外收费; - 实扣费以响应头
X-SeerMarTech-Charge-CNY为准。
请求规则
- 所有 POST 数据使用
JSON(UTF-8 编码) - 请求体格式为 JSON 数组:
[{ ... }] - 每分钟最多可发起 2000 次 API 调用
- 单次 POST 请求最多 100 个任务
- 若单次请求中任务数 100,出部分将返回错误
40006
任务提交后,可通过返回的唯一任务标识 id 获取结果。 如果在创建任务时指定了 postback_url 或 pingback_url,本平台可在任务完成后主动通知或推送结果。
如果您的服务器在 10 秒未响应回调请求,连接会因时中断,任务将转 /v3/business_data/tripadvisor/search/tasks_ready 列表中您后续拉取。
请求参数
| 字段名 | 类型 | 填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 搜索。应表示商家类别、名称或知名地点。最长 700 个字符。所有 %## 会被解码,字符 + 会被解码为空格;如需传字面量 %,请写为 %25。 |
location_name | string | 条件填 | 搜索地区完整名称;当未传 location_code 时填。可通过 /v3/business_data/tripadvisor/locations 获取可用地区列表。示例:London,England,United Kingdom |
location_code | integer | 条件填 | 搜索地区编码;当未传 location_name 时填。可通过 /v3/business_data/tripadvisor/locations 获取可用地区列表。示例:1003854 |
priority | integer | 否 | 任务优级。1 = 普通优级(默认),2 = 高优级。高优级会加速执行,但会额外收费。 |
depth | integer | 否 | 抓取深度,即返回的搜索结果数量。默认 30,最大 210。建议按 30 的倍数设置,因为系统按每批 30 条结果处理和计费。 30 可能产生额外费用。 |
tag | string | 否 | 自定义任务标识,最长 255 个字符。可用于结果回传时与业务侧任务。提交后可在响应的 data 对象中看到该值。 |
postback_url | string | 否 | 结果推送地址。任务完成后,本平台会将结果以 gzip 压缩格式通过 POST 请求发送到该地址。支持变量 $id 和 $tag。示例:http://your-server.com/postbackscript?id=$id&tag=$tag。特殊字符会进行 URL 编码,例如 # 会编码为 %23。 |
pingback_url | string | 否 | 任务完成通知地址。任务完成后,本平台会向该地址发送 GET 请求。支持变量 $id 和 $tag。示例:http://your-server.com/pingscript?id=$id&tag=$tag。特殊字符会进行 URL 编码,例如 # 会编码为 %23。 |
响应说明
接口返回 JSON 数据,顶层 tasks 数组,用于描述本次提交的任务信息。
顶层字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用状态码。完整错误码请参考 /v3/appendix/errors |
status_message | string | 通用状态信息 |
time | string | 执行耗时,单位秒 |
cost | float | 本次请求总费用,单位 USD |
tasks_count | integer | tasks 数组中的任务数量 |
tasks_error | integer | tasks 数组中返回错误的任务数量 |
tasks | array | 任务数组 |
tasks[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 平台唯一任务 ID,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000-60000 |
status_message | string | 任务状态信息 |
time | string | 任务处理耗时,单位秒 |
cost | float | 单个任务费用,单位 USD |
result_count | integer | result 数组中的数量 |
path | array | URL 路径 |
data | object | 与提交请求中该任务对应的参数对象 |
result | array / null | 结果数组。对于任务提交接口,该值通常为 null |
回调说明
pingback_url
- 任务完成后发起 GET 请求
- 适合只接收“任务已完成”通知,再由业务系统主动获取结果
postback_url
- 任务完成后发起 POST 请求
- 结果数据会直接推送到您指定的地址
- 推送使用
gzip压缩
变量替换
在 pingback_url 或 postback_url 中可以使用以下变量:
$id:任务 ID$tag:URL 编码后的自定义标记
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/business_data/tripadvisor/search/task_post" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"keyword": "pizza restaurant",
"location_code": 1003854,
"depth": 30
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/business_data/tripadvisor/search/task_post"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
data = [
{
"keyword": "pizza restaurant",
"location_code": 1003854,
"depth": 30
},
{
"keyword": "pizza restaurant",
"location_code": 1003854,
"priority": 2,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
},
{
"keyword": "pizza restaurant",
"location_code": 1003854,
"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 postArray = [
{
keyword: "pizza restaurant",
location_code: 1003854,
depth: 30
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/business_data/tripadvisor/search/task_post",
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
},
data: postArray
})
.then((response) => {
// 返回任务提交结果
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
json
{
"version": "0.1.20220216",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0847 sec.",
"cost": 0.00075,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "12345678-1234-1234-1234-1234567890ab",
"status_code": 20100,
"status_message": "Task Created.",
"time": "0.0023 sec.",
"cost": 0.00075,
"result_count": 0,
"path": [
"v3",
"business_data",
"tripadvisor",
"search",
"task_post"
],
"data": {
"api": "business_data",
"function": "search",
"keyword": "pizza",
"location_code": 1003854,
"se_type": "organic",
"se": "tripadvisor",
"device": "desktop",
"os": "windows"
},
"result": null
}
]
}常见状态与错误处理
| 状态码 | 含义 |
|---|---|
20000 | 请求成功 |
20100 | 任务已创建 |
40006 | 单次 POST 请求中的任务数 100 |
10000-60000 | 任务级状态码范围,含义请参考 /v3/appendix/errors |
建议在接时同时处理以下:
- 顶层请求成功,但部分任务失败
- 回调时,需改为轮询
/v3/business_data/tripadvisor/search/tasks_ready depth设置过大,导致费用高于预期- 传的
location_name/location_code不可用
使用建议
- 优使用
location_code:编码更稳定,适合程序化调用。 depth按 30 的倍数设置:更符合平台处理与计费机制。- 批量提交时控制任务数:每次最多 100 条,触发
40006。 - 需要异步处理时优回调:能减少轮询成本并提高结果获取效率。
- 以响应
cost为准做费用核算:便于对账和预算控制。
实用场景
- 检索本地餐饮商家:按和城市抓取餐、咖啡馆等列表,用于本地生活 SEO 选题、商户库建设和竞品盘点。
- 监控品牌门店:搜索品牌名并按地区创建任务,追踪品牌在不同城市的商家资料覆盖与可见度。
- 挖掘目的地周边商户:围绕景点、地标或热门区域搜索商家,用于目的地建设和本地推荐页优化。
- 批量采集分类商家数据:按“、吧、披萨店、SPA”等类别批量建任务,快速构建行业样本库,支持市场分析。
- 异步回传搜索结果:结合
postback_url或pingback_url,将大批量商家搜索任务接自动化数据流水线,提升采集效率。