主题
Google 以图搜图任务提交
GET /v3/serp/google/search_by_image/task_post
接口说明
该接口用于提交 Google 以图搜图 SERP 采集任务。系统会基于你提供的图片 URL 发起检索,并返回最多前 100 条搜索结果。
结果会受到所选地区和语言设置影响。任务支持两种执行优级:
1:普通优级(默认)2:高优级
创建任务后,你可以通过任务 id 轮询获取结果;也可以在提交时设置 pingback_url 或 postback_url,由本平台在任务完成后主动通知或回传结果。
请求方式
POST https://api.seermartech.cn/v3/serp/google/search_by_image/task_post
计费与限流
- 在创建任务时扣费
- 实扣费以响应头
X-SeerMarTech-Charge-CNY为准 - 高优级任务会额外收费
- 若开启
calculate_rectangles=true,单任务费用会翻倍
请求限制:
- 每分钟最多
2000次 API 调用 - 每次 POST 最多可提交
100个任务 -过 100 个任务时,出部分将返回错误40006
结果获取方式
任务提交成功后,可通过返回的唯一任务标识 id 获取结果。
也可在创建任务时设置以下回调方式:
pingback_url:任务完成后,以 GET 请求通知你的服务postback_url:任务完成后,以 POST 请求将结果以 gzip 压缩格式发送到你的服务
注意事项:
- 如果你的服务器在 10 秒未响应,连接会因时被中止 -时后,任务结果仍可通过“已完成任务列表”或任务结果接口获取
pingback_url/postback_url中的特殊字符会进行 URL 编码,例如#会被编码为%23- 你可以在回调 URL 中使用
$id和$tag占位符,平台回调时会自动替换为值
请求体格式
POST 请求体为 JSON 数组:
json
[
{
"language_code": "en",
"location_code": 2840,
"image_url": "https://upload.wikimedia.org/wikipedia/commons/e/ed/Elon_Musk_Royal_Society.jpg"
}
]主要参数
| 字段名 | 类型 | 填 | 说明 |
|---|---|---|---|
image_url | string | 是 | 图片 URL。搜索结果将基于该图片生成。示例:https://upload.wikimedia.org/wikipedia/commons/e/ed/Elon_Musk_Royal_Society.jpg |
location_code | integer | 条件填 | 搜索地区代码。如果未提供 location_name 或 location_coordinate,则填写该字段。使用该字段时,无需再传 location_name 或 location_coordinate。可通过 /v3/serp/wp/locations 获取可用地区代码。示例:2840 |
language_code | string | 条件填 | 搜索语言代码。如果未提供 language_name,则填写该字段。使用该字段时,无需再传 language_name。可通过 /v3/serp/wp/languages 获取可用语言代码。示例:en |
pingback_url | string | 否 | 任务完成通知地址。平台会向该地址发送 GET 请求。支持 $id 和 $tag 占位符。示例:http://your-server.com/pingscript?id=$id、http://your-server.com/pingscript?id=$id&tag=$tag |
postback_url | string | 否 | 任务结果回传地址。任务完成后,平台会向该地址发送结果的 POST 请求(gzip 压缩)。支持 $id 和 $tag 占位符。示例:http://your-server.com/postbackscript?id=$id |
postback_data | string | 条件填 | 当指定了 postback_url 时填。表示回传结果的数据类型。可选值:advanced、html |
可选参数
| 字段名 | 类型 | 填 | 说明 |
|---|---|---|---|
priority | integer | 否 | 任务优级。1 = 普通优级(默认),2 = 高优级。高优级会额外收费。 |
location_name | string | 条件填 | 完整地区名称。如果未指定 location_code 或 location_coordinate,则填写。示例:London,England,United Kingdom |
language_name | string | 条件填 | 完整语言名称。如果未指定 language_code,则填写。示例:English |
tag | string | 否 | 自定义任务标识,最大 255 个字符。可用于请求与结果匹;响应的 data 对象中会返回该值。 |
max_crawl_pages | integer | 否 | 最大抓取结果页数。最大值:100。该参数与 depth合使用。 |
search_param | string | 否 | 附加搜索参数,用于控制搜索引擎行为。 |
calculate_rectangles | boolean | 否 | 是否为高级结果计算 SERP素的像素位置。默认 false。若设为 true,单任务费用翻倍。 |
browser_screen_width | integer | 否 | 浏览器屏幕宽度。用于按指定设备尺寸计算像素位置。默认 1920。使用前需设置 calculate_rectangles=true。 |
browser_screen_height | integer | 否 | 浏览器屏幕高度。用于按指定设备尺寸计算像素位置。默认 1080。使用前需设置 calculate_rectangles=true。 |
browser_screen_resolution_ratio | integer | 否 | 屏幕分辨率比例。默认 1。使用前需设置 calculate_rectangles=true。 |
location_coordinate | string | 条件填 | GPS 坐标,格式为 "latitude,longitude,radius"。当未指定 location_name 或 location_code 时填写。纬度和经度最多 7 位小数;radius 范围:199.9 到 199999(毫米)。示例:53.476225,-2.243572,200 |
se_domain | string | 否 | 搜索引擎域名。默认会根据地区和语言自动选择,也可手动指定,如:google.co.uk、google.com.au、google.de。 |
响应说明
接口返回 JSON 编码结果,顶层 tasks 数组,每个任务对应一条提交结果。
顶层字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用状态码,完整列表参考 /v3/appendix/errors |
status_message | string | 通用状态信息 |
time | string | 执行耗时,单位秒 |
cost | float | 本次请求总费用 |
tasks_count | integer | tasks 数组中的任务数 |
tasks_error | integer | 返回错误的任务数 |
tasks | array | 任务结果数组 |
tasks 数组字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 平台唯一任务 ID,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000-60000 |
status_message | string | 任务状态信息 |
time | string | 任务执行耗时 |
cost | float | 该任务费用 |
result_count | integer | result 数组中的数 |
path | array | 请求路径 |
data | object | 与提交请求中一致的任务参数 |
result | array / null | 任务结果。对于任务提交接口,此处通常为 null |
状态码与错误处理
- 顶层
status_code=20000表示请求成功 - 单任务的
status_code反映该任务是否提交成功 - 建议对以下建立健壮的错误处理机制:
- HTTP 请求失败
- 顶层状态码非成功
tasks_error > 0- 单个任务状态码异常
- 回调时或服务器无响应
常见错误场景:
40006:单次 POST 中任务数 100- 缺少条件填参数,如未传地区或语言
- 回调地址不可访问或时
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/serp/google/search_by_image/task_post" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"language_code": "en",
"location_code": 2840,
"image_url": "https://本平台.com/wp-content/uploads/2016/11/data_for_seo_light_429.png"
},
{
"location_name": "New York,New York,United States",
"language_name": "English",
"image_url": "https://本平台.com/wp-content/uploads/2016/11/data_for_seo_light_429.png",
"priority": 2,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/serp/google/search_by_image/task_post"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
payload = [
{
# 基础示例:指定语言、地区和图片 URL
"language_code": "en",
"location_code": 2840,
"image_url": "https://本平台.com/wp-content/uploads/2016/11/data_for_seo_light_429.png"
},
{
# 高优级任务:完成后通过 pingback 通知
"location_name": "New York,New York,United States",
"language_name": "English",
"image_url": "https://本平台.com/wp-content/uploads/2016/11/data_for_seo_light_429.png",
"priority": 2,
"tag": "some_string_123",
"pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag"
}
]
response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json)TypeScript
typescript
import axios from "axios";
const payload = [
{
// 基础示例:指定语言、地区和图片 URL
language_code: "en",
location_code: 2840,
image_url: "https://本平台.com/wp-content/uploads/2016/11/data_for_seo_light_429.png"
},
{
// 高优级任务:完成后通过 pingback 通知
location_name: "New York,New York,United States",
language_name: "English",
image_url: "https://本平台.com/wp-content/uploads/2016/11/data_for_seo_light_429.png",
priority: 2,
tag: "some_string_123",
pingback_url: "https://your-server.com/pingscript?id=$id&tag=$tag"
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/serp/google/search_by_image/task_post",
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
},
data: payload
})
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
json
{
"version": "0.1.20200923",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0926 sec.",
"cost": 0.0015,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"api": "serp",
"function": "task_post",
"se": "google",
"se_type": "search_by_image",
"image_url": "https://本平台.com/wp-content/uploads/2016/11/data_for_seo_light_429.png",
"language_name": "English",
"location_name": "United States",
"priority": 2,
"device": "desktop",
"os": "windows"
},
"result": null
}
]
}计费参考
从示例响应看,单次请求费用为 0.0015 USD,折算后:
参考价约 ¥0.0240 / 次
扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
使用建议
- 优使用
location_code与language_code,参数更稳定 - 批量提交时,单次请求控制在 100 个任务
- 若业务需要低延迟结果,可启用
priority=2 - 若需要页面像素定位,请开启
calculate_rectangles=true并设置对应屏幕参数 - 若接回调,请确保服务端能在 10 秒完成响应
实用场景
- 监控图片来源页面:根据品牌图片或产品图发起以图搜图,识别图片出现在哪些搜索结果中,分发与品牌追踪。
- 排查图片侵权搬运:提交原创图片进行反向搜索,快速发现疑似未授权转载页面,支持法务取证与版权治理。
- 分析竞品视觉素材传播:用竞品主图、海报或人物素材做以图搜图,了解在不同地区语言下的搜索可见度与扩散路径。
- 优化图片 SEO 策略:针对站重点图片定期创建任务,观察不同地区和语言下的搜索表现,反推图片命名、上下文和结构化优化方向。
- 建立自动化图片监测流程:结合
pingback_url或postback_url,在新图片库后自动触发反向搜索并回传结果,提升审核与舆监控效率。