主题
App Store 应用竞品分析(实时)
本接口用于查询与目标 App 在 App Store 排名上发生交集的竞品应用列表。你可以获得竞品应用 ID、交叉数量、搜索量,以及竞品在这些上的排名分布数据。
返回结果基于请求中指定的 app_id。 app_id 可从 App Store 应用页 URL 中获取,即链接中 id 后面的数字。例如:
https://apps.apple.com/us/app/id835599320
上述应用的 app_id 为:
835599320
接口地址
POST https://api.seermartech.cn/v3/dataforseo_labs/apple/app_competitors/live
计费说明
本接口按请求计费。 参考价约 ¥0.1760 / 次。
扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
请求说明
- 请求方法:
POST - 请求体格式:
JSON - 编码:
UTF-8 - 请求体为 JSON 数组:
[{ ... }] - 单接口调用频率上限:每分钟最多 2000 次
- 支持通过
limit控制返回数量 - 支持通过
filters过滤结果 - 支持通过
order_by排序结果
请求参数
| 字段名 | 类型 | 说明 |
|---|---|---|
app_id | string | 填。App Store 中的应用 ID。可从应用 URL 中提取,例如 https://apps.apple.com/us/app/id835599320 中的 835599320。 |
location_name | string | 当未提供 location_code 时填。地区名称。在 location_name 和 location_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区。当前支持美国。示例:United States |
location_code | integer | 当未提供 location_name 时填。地区编码。在 location_name 和 location_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区编码。当前支持美国。示例:2840 |
language_name | string | 当未提供 language_code 时填。语言名称。在 language_name 和 language_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用语言。当前支持英语。示例:English |
language_code | string | 当未提供 language_name 时填。语言代码。在 language_name 和 language_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用语言代码。当前支持英语。示例:en |
filters | array | 可选。结果过滤条件数组,最多支持 8 个过滤条件。多个条件之间需使用逻辑运算符 and 或 or 连接。支持操作符:<、<=、>、>=、=、<>、in、not_in。过滤字段通常可使用返回结果中的数值字段。更多规则可参考 /v3/dataforseo_labs/filters。 |
order_by | array | 可选。结果排序规则。可使用与 filters 相同的字段名进行排序。排序方式支持:asc(升序)、desc(降序)。单次请求最多可设置 3 条排序规则。 |
limit | integer | 可选。返回的竞品应用数量上限。默认值:100;最大值:1000。 |
offset | integer | 可选。结果偏移量。默认值:0。例如设置为 10 时,将跳过前 10 条结果,从后续结果开始返回。 |
tag | string | 可选。自定义任务标识,最长 255 个字符。可用于请求与响应结果的业务,响应中的 data 对象会返回该值。 |
过滤与排序
filters 示例
按交叉数量大于等于 500 过滤:
json
[
["intersections", ">=", 500]
]多个条件组合示意:
json
[
["intersections", ">=", 500],
"and",
["avg_position", "<=", 10]
]order_by 示例
按交叉数量降序排序:
json
[
["intersections", "desc"]
]按交叉数量降序、平均排名升序排序:
json
[
["intersections", "desc"],
["avg_position", "asc"]
]返回结果说明
接口返回 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 | 任务唯一标识,UUID 格式。 |
status_code | integer | 任务状态码,范围通常为 10000-60000。完整错误码请参考 /v3/appendix/errors。 |
status_message | string | 任务状态信息。 |
time | string | 任务执行耗时,单位秒。 |
cost | float | 该任务成本,单位 USD。 |
result_count | integer | result 数组中的数量。 |
path | array | 请求路径。 |
data | object | 回显请求时提交的参数。 |
result | array | 获取结果数组。 |
result 数组字段
| 字段名 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型。 |
app_id | string | 请求中的目标应用 ID。 |
location_code | integer | 请求中的地区编码。 |
language_code | string | 请求中的语言代码。 |
total_count | integer | 数据库中与当前请求的结果总数。 |
items_count | integer | 当前 items 数组返回的竞品数量。 |
items | array | 竞品应用数据列表。 |
items 数组字段
| 字段名 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型。 |
app_id | string | 竞品应用 ID。 |
avg_position | float | 该竞品在 App Store 搜索结果中的平均排名。基于与目标应用存在交集的计算,因此同一竞品与不同目标应用组合时,该值可能不同。 |
sum_position | integer | 该竞品在 App Store 搜索结果中的排名总和。基于交集计算,因此同一竞品与不同目标应用组合时,该值可能不同。 |
intersections | integer | 与目标应用发生交集的数量。 |
competitor_metrics | object | 竞品在交集上的指标数据。该对象中的排名数据针对当前返回的竞品 app_id。 |
full_metrics | object | 竞品在排名上的整体指标数据。 |
competitor_metrics.app_store_search_organic 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
pos_1 | integer | 竞品在自然搜索结果中排名第 1 的数量。 |
pos_2_3 | integer | 竞品在自然搜索结果中排名第 2-3 的数量。 |
pos_4_10 | integer | 竞品在自然搜索结果中排名第 4-10 的数量。 |
pos_11_100 | integer | 竞品在自然搜索结果中排名第 11-100 的数量。 |
count | integer | 含该竞品的自然搜索结果总数。 |
search_volume | integer | 交集在 App Store 自然搜索中的总搜索量。 |
full_metrics.app_store_search_organic 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
pos_1 | integer | 竞品在自然搜索结果中排名第 1 的数量。 |
pos_2_3 | integer | 竞品在自然搜索结果中排名第 2-3 的数量。 |
pos_4_10 | integer | 竞品在自然搜索结果中排名第 4-10 的数量。 |
pos_11_100 | integer | 竞品在自然搜索结果中排名第 11-100 的数量。 |
count | integer | 含该竞品的自然搜索结果总数。 |
search_volume | integer | 该竞品排名在 App Store 自然搜索中的总搜索量。 |
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/dataforseo_labs/apple/app_competitors/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"app_id": "686449807",
"location_code": 2840,
"language_name": "English",
"filters": [
["intersections", ">=", 500]
],
"limit": 10
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/apple/app_competitors/live"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
data = [
{
"app_id": "686449807",
"location_name": "United States",
"language_name": "English",
"filters": [
["intersections", ">=", 500]
],
"limit": 10
}
]
response = requests.post(url, json=data, headers=headers)
print(response.json)TypeScript
typescript
import axios from "axios";
const postData = [
{
app_id: "686449807",
location_code: 2840,
language_name: "English",
filters: [
["intersections", ">=", 500]
],
limit: 10
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/dataforseo_labs/apple/app_competitors/live",
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
{
"version": "0.1.20220428",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.9813 sec.",
"cost": 0.011,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.9813 sec.",
"cost": 0.011,
"result_count": 1,
"path": [
"v3",
"dataforseo_labs",
"apple",
"app_competitors",
"live"
],
"data": {
"api": "dataforseo_labs",
"function": "app_competitors",
"se_type": "apple",
"app_id": "686449807",
"language_name": "English",
"location_name": "United States",
"limit": 10
},
"result": [
{
"se_type": "apple",
"app_id": "686449807",
"location_code": 2840,
"language_code": "en",
"total_count": 1,
"items_count": 1,
"items": [
{
"se_type": "apple",
"app_id": "123456789",
"avg_position": 6.4,
"sum_position": 320,
"intersections": 50,
"competitor_metrics": {
"app_store_search_organic": {
"pos_1": 5,
"pos_2_3": 8,
"pos_4_10": 17,
"pos_11_100": 20,
"count": 50,
"search_volume": 12000
}
},
"full_metrics": {
"app_store_search_organic": {
"pos_1": 18,
"pos_2_3": 24,
"pos_4_10": 60,
"pos_11_100": 140,
"count": 242,
"search_volume": 54000
}
}
}
]
}
]
}
]
}状态码与错误处理
- 顶层
status_code表示整个请求的处理状态 tasks[].status_code表示单个任务的执行状态- 建议同时校验:
- HTTP 状态码
- 顶层
status_code tasks[].status_code
常见成功状态:
| 状态码 | 说明 |
|---|---|
20000 | 请求成功 |
更多错误码请参考 /v3/appendix/errors。
使用建议
- 通过目标 App 的
app_id获取竞品集合; - 使用
filters筛选高交叉竞品,例如intersections >= 100; - 使用
order_by按intersections或avg_position排序,优识别最直接的搜索竞品; - 结合
competitor_metrics与full_metrics,区分“与你重叠高”的竞品和“整体体量大”的竞品。
实用场景
- 识别直接竞品:基于交集找出与目标 App 在 App Store 搜索结果中正面竞争的应用,帮助市场与 ASO 团队快速锁定核心对手。
- 筛选高价值竞品:按
intersections、search_volume和avg_position过滤排序,优重叠词多、流量大的竞品,提高竞品分析效率。 - 评估竞品覆盖能力:查看竞品在交集上的排名分布,判断对方在核心词上的占位强度,为抢位提供依据。
- 发现头部流量对手:结合
full_metrics分析竞品整体覆盖规模,区分局部重叠竞品与局强势竞品,优化投放和 ASO 策略。 - 监控竞争格局变化:定期拉取同一
app_id的竞品结果,观察交集数量和排名分布的变化,及时发现新或竞品增长趋势。