主题
Apple App Listings 实时搜索
POST /v3/app_data/apple/app_listings/search/live
本接口使用 POST 方法,路径为:
/v3/app_data/apple/app_listings/search/live
用于实时搜索 App Store 中发布的应用,并返回应用 ID、图标、评论数、评分、价格、开发信息及应用。搜索结果取决于请求中设置的 title、description 和 categories 参数。
> 当前支持美国地区,地区代码为 2840。
计费与请求限制
- 本接口按请求计费。
- 实扣费以响应头
X-SeerMarTech-Charge-CNY为准。 - 请求体使用 UTF-8 编码的 JSON 格式。
- POST 请求体是 JSON 数组,每次调用最多 1 个任务。 平台限流以认证说明中的 30/60/120 次/分钟规则为准。
- 同时发送的请求数量最多为 30 个。
请求参数
请求体中的每个任务对象支持以下字段:
| 字段 | 类型 | 填 | 说明 |
|---|---|---|---|
categories | array | 否 | 应用分类。指定的分类用于筛选应用列表,最多支持 10 个分类。可通过分类接口获取完整分类列表:/v3/app_data/apple/app_listings/categories |
description | string | 否 | 应用描述中的,最多 200 个字符。 |
title | string | 否 | 应用标题中的,最多 200 个字符。 |
filters | array | 否 | 结果过滤条件。最多设置 8 个过滤条件,多个条件之间指定逻辑运算符 and 或 or。 |
order_by | array | 否 | 结果排序规则。排序字段可使用与 filters 相同的字段路径,格式为 字段,排序方向。排序方向支持 asc 和 desc,单次请求最多设置 3 条排序规则。 |
limit | integer | 否 | 返回的最大应用数量。默认值为 100,最大值为 1000。 |
offset | integer | 否 | 结果偏移量,默认值为 0。例如设置为 10,表示跳过前 10 条结果。建议在获取不 10,000 条结果时使用。 |
offset_token | string | 否 | 翻页令牌。用于获取后续结果,适合获取 100,000 条结果时请求时。该值由上一次响应返回。使用 offset_token 时,请求参数与上一次请求保持一致。 |
tag | string | 否 | 用户自定义任务标识,最多 255 个字符。该值会原样返回在响应任务的 data 对象中,便于请求与结果。 |
filters 过滤条件
支持以下运算符:
regexnot_regex<<=>>==<>innot_inlikenot_like
使用 like 或 not_like 时,可以使用 % 匹任意长度的字符串空字符串。
过滤条件示例:
json
[
["item.rating.value", ">", 4],
"and",
["item.reviews_count", ">=", 100]
]可用过滤字段列表:
/v3/app_data/apple/app_listings/available_filters
order_by 排序示例
json
[
"item.rating.value,desc",
"item.reviews_count,desc"
]:
asc:升序排列desc:降序排列
请求示例
cURL
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/app_data/apple/app_listings/search/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"title": "vpn",
"description": "vpn",
"categories": ["Utilities"],
"order_by": [
"item.rating.value,desc"
],
"filters": [
["item.rating.value", ">", 4]
],
"limit": 2
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/app_data/apple/app_listings/search/live"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
payload = [
{
"title": "vpn",
"description": "vpn",
"order_by": [
"item.rating.value,desc"
],
"filters": [
["item.rating.value", ">", 4]
],
"limit": 2,
}
]
response = requests.post(url, headers=headers, json=payload)
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 = [
{
title: "vpn",
description: "vpn",
order_by: ["item.rating.value,desc"],
filters: [["item.rating.value", ">", 4]],
limit: 2,
},
];
axios
.post(
"https://api.seermartech.cn/v3/app_data/apple/app_listings/search/live",
payload,
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
)
.then((response) => {
// 处理接口返回结果
console.log(response.data);
})
.catch((error) => {
console.error("请求失败:", error.response?.data || error.message);
});响应结构
接口返回 JSON 对象 tasks 数组任务执行结果。
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本。 |
status_code | integer | 通用响应状态码。成功通常为 20000。 |
status_message | string | 通用状态消息。 |
time | string | 请求执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
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 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
result_count | integer | result 数组中的结果数量。 |
path | array | 请求 URL 路径。 |
data | object | 请求中提交的任务参数。 |
result | array | 搜索结果数组。 |
result 结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
total_count | integer | 数据库中符合条件的结果总数。 |
count | integer | 当前响应中返回的结果数量。 |
offset | integer | 当前结果的偏移量。 |
offset_token | string | 获取后续结果时使用的翻页令牌。 |
items | array | 应用及数据数组。 |
items 应用结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
app_id | string | 应用 ID。 |
se_domain | string | 请求中使用的搜索引擎域名。 |
location_code | integer | 地区代码。 |
language_code | string | 语言代码。 |
check_url | string | 对应搜索结果页面的直接 URL,可用于核验结果准确性。 |
time_update | string | 搜索数据的最后更新时间,ISO 8601 格式。 |
item | object | 应用详细信息。 |
item 应用字段
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 结果类型,当前可能为 app_store_info_organic。 |
rank_group | integer | 在相同 type 结果组中的排名。不同类型结果之间不会计该排名。 |
rank_absolute | integer | 应用在结果中的绝对排名。 |
position | string | 结果在搜索页面中的位置,目前为 left。 |
app_id | string | 应用 ID。 |
title | string | 应用标题。 |
subtitle | string | 应用副标题。 |
url | string | App Store 应用页 URL。 |
icon | string | 应用图标 URL。 |
description | string | 应用描述。 |
reviews_count | integer | 应用评论总数。 |
rating | object | 应用平均评分。 |
price | object | 应用价格信息。 |
is_free | boolean | 是否为应用。 |
main_category | string | 应用主要分类。 |
categories | array | 应用所属的分类。 |
languages | array | 应用支持的语言。 |
advisories | array | 应用年龄分级及使用限制信息。 |
developer | string | 开发名称。 |
developer_id | string | App Store 中的开发 ID。 |
developer_url | string | App Store 开发页面 URL。 |
version | string | 当前应用版本。 |
minimum_os_version | string | 安应用所需的最低操作系统版本。 |
size | string | 应用大小。 |
released_date | string | 应用发布日期,UTC 时间格式:yyyy-MM-dd HH-mm-ss +00:00。 |
last_update_date | string | 应用最后更新时间,UTC 时间格式:yyyy-MM-dd HH-mm-ss +00:00。 |
update_notes | string | 开发提供的最新更新说明。 |
images | array | 应用页中的图片 URL。 |
similar_apps | array | 与当前应用相似的应用。 |
more_apps_by_developer | array | 同一开发发布的应用。 |
rating 评分字段
| 字段 | 类型 | 说明 |
|---|---|---|
rating_type | string | 评分类型,目前为 Max5。 |
value | float | 应用平均评分。 |
votes_count | integer | 评分反馈数量。当前场景下该字段可能为 null。 |
rating_max | integer | 评分上限。对于 Max5,最大值为 5。 |
price 价格字段
| 字段 | 类型 | 说明 |
|---|---|---|
current | float | 当前价格。 |
regular | float | 常规价格。 |
max_value | float | 最高价格,适用于价格区间。 |
currency | string | 价格使用的货币 ISO 代码。 |
is_price_range | boolean | 是否以价格区间形式提供。 |
displayed_price | string | 结果页面中展示的原始价格文本。 |
similar_apps 和 more_apps_by_developer 字段
这两个数组中的应用对象以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
app_id | string | 应用 ID。 |
title | string | 应用标题。 |
url | string | App Store 应用页 URL。 |
响应示例
json
{
"version": "0.1.20260717",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.2633 sec.",
"cost": 0.101,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "01234567-89ab-cdef-0123-456789abcdef",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.2500 sec.",
"cost": 0.101,
"result_count": 1,
"path": [
"v3",
"app_data",
"apple",
"app_listings",
"search",
"live"
],
"data": {
"api": "app_data",
"function": "search",
"se": "apple",
"title": "vpn",
"order_by": [
"item.rating.value,desc"
],
"filters": [
["item.rating.value", ">", 4]
],
"limit": 2
},
"result": [
{
"total_count": 1,
"count": 1,
"offset": 0,
"offset_token": "eyJvZmZzZXQiOjF9",
"items": [
{
"app_id": "1451197812",
"se_domain": "apps.apple.com",
"location_code": 2840,
"language_code": "en",
"check_url": "https://apps.apple.com/us/search?term=vpn",
"time_update": "2023-05-23T10:16:19.000000Z",
"item": {
"type": "app_store_info_organic",
"rank_group": 1,
"rank_absolute": 1,
"position": "left",
"app_id": "1451197812",
"title": "VPN Tracker",
"subtitle": "Secure VPN",
"url": "https://apps.apple.com/us/app/vpn-tracker/id1451197812",
"icon": "https://is1-ssl.mzstatic.com/image/thumb/example/icon.png",
"description": "VPN application description.",
"reviews_count": 120,
"rating": {
"rating_type": "Max5",
"value": 4.6,
"votes_count": null,
"rating_max": 5
},
"price": {
"current": 0,
"regular": 0,
"max_value": 0,
"currency": "USD",
"is_price_range": false,
"displayed_price": "Free"
},
"is_free": true,
"main_category": "Utilities",
"categories": [
"Utilities",
"Productivity"
],
"languages": [
"EN"
],
"advisories": [],
"developer": "equinux AG",
"developer_id": "1451197812",
"developer_url": "https://apps.apple.com/us/developer/equinux-ag/id1451197812?platform=iphone",
"version": "Version 1.4",
"minimum_os_version": "Requires iOS 9.3 or later.",
"size": "48.7 MB",
"released_date": null,
"last_update_date": "2023-04-17 09:39:48 +00:00",
"update_notes": "World Connect now offers servers in 27 additional countries.",
"images": [],
"similar_apps": [],
"more_apps_by_developer": []
}
}
]
}
]
}
]
}错误处理
建议根据顶层和任务级别的 status_code、status_message 实现错误处理:
- 顶层
status_code:表示整个请求的处理状态。 - 任务级
status_code:表示任务的处理状态。 tasks_error:表示失败任务数量。status_message:提供对应的状态说明。
完整错误码请参考错误码文档:/v3/appendix/errors
实用场景
- 搜索竞品应用:按标题、描述和分类发现美国 App Store 中的竞品,支持竞品单构建与市场格局分析。
- 筛选高评分应用:使用评分、评论数等字段过滤结果,快速定位用户认可度较高的应用作为对标对象。
- 分析应用商店覆盖:通过标题和描述搜索应用,评估目标的应用数量与竞争程度。
- 监测竞品商业化信息:读取价格、状态、价格区间和货币字段,比较不同应用的定价策略。
- 构建开发产品矩阵:利用
more_apps_by_developer获取同一开发的应用,分析产品布局和交叉竞争。