主题
获取 Google App 搜索高级结果(按任务 ID)
本接口用于根据任务 ID 获取 Google Play 应用搜索结果。返回为指定 keyword 在 Google Play 中的应用排名列表,并附带每个应用的详细信息,例如应用 ID、图标、评论数、评分、价格、开发等。
搜索结果会基于您在创建任务时提交的参数生成、地区、语言等。平台 API 会尽可能高精度地模拟这些搜索条件,因此返回结果通常可与任务创建时对应参数下的搜索结果保持一致。
您还可以使用返回结果中的 check_url,在浏览器无痕模式下打开进行校验。需要注意的是,用户个性化因素(如搜索历史、偏好设置等)不会被纳结果计算,因此不会反映在返回数据中。
请求地址
GET https://api.seermartech.cn/v3/app_data/google/app_searches/task_get/advanced/$id
计费说明
在创建任务时计费,任务结果在创建后的 30 天可反复获取。
参考价请以异步任务创建接口为准;本接口获取结果通常不额外收费。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
路径参数
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式。创建任务后返回的任务 ID,可在 30 天随时用于获取结果。 |
沙盒调试
如需查看该接口支持的完整结果结构,可使用沙盒地址:
https://api.seermartech.cn/v3/app_data/google/app_searches/task_get/advanced/00000000-0000-0000-0000-000000000000
沙盒响应会返回该接口可能出现的所有字段,并填演示数据。 使用沙盒接口不会产生费用。
返回结构
接口返回 JSON 数据,顶层 tasks 数组,每个对应一个任务结果。
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本。 |
status_code | integer | 接口通用状态码。完整错误码请参考文档中的错误码附录。建议在业务侧实现完善的异常处理机制。 |
status_message | string | 接口通用状态说明。 |
time | string | 请求执行耗时,单位秒。 |
cost | float | 本次请求总成本,单位 USD。 |
tasks_count | integer | tasks 数组中的任务数量。 |
tasks_error | integer | tasks 数组中返回错误的任务数量。 |
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 | 创建任务时提交的原始参数。 |
result | array | 结果数组。 |
result[] 字段
| 字段 | 类型 | 说明 |
|---|---|---|
keyword | string | 创建任务时提交的。 |
se_domain | string | 创建任务时指定的搜索引擎域名。 |
location_code | integer | 创建任务时指定的地区编码。 |
language_code | string | 创建任务时指定的语言编码。 |
check_url | string | 可直接打开的结果校验链接,用于核对返回结果准确性。 |
datetime | string | 抓取结果时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00。例如:2019-11-15 12:57:46 +00:00 |
se_results_count | integer | 搜索结果总数。 |
items_count | integer | items 数组中的数量。 |
items | array | 命中的应用列表。 |
items[] 字段
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 结果类型。当前可能值:google_play_search_organic |
rank_group | integer | 相同 type 分组的排名。不同 type 之间的位置不会计该字段。 |
rank_absolute | integer | 所有已返回应用中的绝对排名。 |
position | string | 素在结果页中的位置。当前值:left |
app_id | string | 应用 ID。 |
title | string | 应用标题。 |
url | string | Google Play 应用页链接。 |
icon | string | 应用图标链接。 |
reviews_count | integer | 应用累计评论数。 |
rating | object | 应用评分信息。 |
rating_type | string | 评分类型。当前值:Max5 |
value | float | 平均评分值。 |
votes_count | integer | 反馈数量。该字段在本场景下可能为 null。 |
rating_max | integer | 当前评分体系下的最大值;Max5 对应 5。 |
is_free | boolean | 是否为应用。 |
price | object | 价格信息。 |
current | float | 当前价格。 |
regular | float | 常规价格。 |
max_value | float | 价格上限。 |
currency | string | 价格币种,ISO 货币代码。 |
is_price_range | boolean | 是否为价格区间。 |
displayed_price | string | 搜索结果中展示的原始价格字符串。 |
developer | string | 开发名称。 |
developer_url | string | 开发在 Google Play 的主页链接。 |
调用示例
cURL
bash
# 通过任务 ID 获取高级结果
id="04011058-0696-0199-0000-2196151a15cb"
curl --location --request GET "https://api.seermartech.cn/v3/app_data/google/app_searches/task_get/advanced/${id}" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json"Python
python
import requests
# 通过任务 ID 获取结果
task_id = "06141103-2692-0309-1000-980b778b6d25"
url = f"https://api.seermartech.cn/v3/app_data/google/app_searches/task_get/advanced/{task_id}"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json
print(data)TypeScript
typescript
import axios from "axios";
// 通过任务 ID 获取结果
const taskId = "02231934-2604-0066-2000-570459f04879";
axios({
method: "get",
url: `https://api.seermartech.cn/v3/app_data/google/app_searches/task_get/advanced/${taskId}`,
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"content-type": "application/json",
},
})
.then((response) => {
// 结果数据
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
json
{
"version": "0.1.20220428",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0887 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"data": {
"se_type": "organic",
"se": "google",
"api": "app_data",
"function": "app_searches",
"keyword": "vpn",
"location_code": 2840,
"language_code": "en",
"depth": 200,
"device": "desktop",
"os": "windows"
},
"result": [
{}
]
}
]
}状态码与错误处理
- 顶层
status_code表示接口请求是否成功。 tasks[].status_code表示单个任务的执行状态。- 建议同时检查:
- 顶层
status_code tasks_errortasks[].status_codetasks[].result是否为空
常见处理建议:
| 场景 | 建议 |
|---|---|
| 顶层请求失败 | 记录 status_code 和 status_message,重试或告警流程 |
| 单个任务失败 | 检查 tasks[].status_code 与 tasks[].status_message |
| 结果为空 | 可能任务尚未完成、ID 无效,或对应无结果 |
| 结果校验 | 使用 check_url 在无痕模式下手动核验 |
使用说明
- 通过对应的任务创建接口提交、地区、语言等参数。
- 获取任务创建后返回的
id。 - 使用该
id调用本接口获取结果。 - 若任务尚未完成,可稍后重试,或调用
/v3/app_data/google/app_searches/tasks_ready获取已完成任务列表。
实用场景
- 监控下的应用排名:按拉取 Google Play 搜索结果,持续跟踪自家应用及竞品的自然排名变化。
- 分析竞品应用表现:获取评分、评论数、价格和开发信息,评估竞品增长状态与市场策略。
- 筛选高潜力:结合不同地区和语言下的搜索结果,识别哪些更容易前列,指导 ASO 投放与优化。
- 对比多市场搜索结果差异:按国家/语言维度拉取同一的结果,发现不同市场中的竞品分布和上架机会。
- 验证应用商店展示信息:通过结果中的应用标题、图标、价格、评分等字段,检查应用在搜索结果页中的形态。