Skip to content

App Store 应用竞品分析(实时)

本接口用于查询与目标 App 在 App Store 排名上发生交集的竞品应用列表。你可以获得竞品应用 ID、交叉数量、搜索量,以及竞品在这些上的排名分布数据。

返回结果基于请求中指定的 app_idapp_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_idstring。App Store 中的应用 ID。可从应用 URL 中提取,例如 https://apps.apple.com/us/app/id835599320 中的 835599320
location_namestring当未提供 location_code 时填。地区名称。location_namelocation_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区。当前支持美国。示例:United States
location_codeinteger当未提供 location_name 时填。地区编码。location_namelocation_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用地区编码。当前支持美国。示例:2840
language_namestring当未提供 language_code 时填。语言名称。language_namelanguage_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用语言。当前支持英语。示例:English
language_codestring当未提供 language_name 时填。语言代码。language_namelanguage_code 二选一。可通过 /v3/dataforseo_labs/locations_and_languages 获取可用语言代码。当前支持英语。示例:en
filtersarray可选。结果过滤条件数组,最多支持 8 个过滤条件。多个条件之间需使用逻辑运算符 andor 连接。支持操作符:<<=>>==<>innot_in。过滤字段通常可使用返回结果中的数值字段。更多规则可参考 /v3/dataforseo_labs/filters
order_byarray可选。结果排序规则。可使用与 filters 相同的字段名进行排序。排序方式支持:asc(升序)、desc(降序)。单次请求最多可设置 3 条排序规则。
limitinteger可选。返回的竞品应用数量上限。默认值:100;最大值:1000
offsetinteger可选。结果偏移量。默认值:0。例如设置为 10 时,将跳过前 10 条结果,从后续结果开始返回。
tagstring可选。自定义任务标识,最长 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 数组,每个任务对应一次提交的请求参数。

顶层字段

字段名类型说明
versionstringAPI 当前版本。
status_codeinteger通用状态码。完整错误码请参考 /v3/appendix/errors。建议在接时做好异常与错误处理。
status_messagestring通用状态信息。
timestring请求执行耗时,单位秒。
costfloat本次请求总成本,单位 USD。
tasks_countintegertasks 数组中的任务数量。
tasks_errorintegertasks 数组中返回错误的任务数量。
tasksarray任务结果数组。

tasks 数组字段

字段名类型说明
idstring任务唯一标识,UUID 格式。
status_codeinteger任务状态码,范围通常为 10000-60000。完整错误码请参考 /v3/appendix/errors
status_messagestring任务状态信息。
timestring任务执行耗时,单位秒。
costfloat该任务成本,单位 USD。
result_countintegerresult 数组中的数量。
patharray请求路径。
dataobject回显请求时提交的参数。
resultarray获取结果数组。

result 数组字段

字段名类型说明
se_typestring搜索引擎类型。
app_idstring请求中的目标应用 ID。
location_codeinteger请求中的地区编码。
language_codestring请求中的语言代码。
total_countinteger数据库中与当前请求的结果总数。
items_countinteger当前 items 数组返回的竞品数量。
itemsarray竞品应用数据列表。

items 数组字段

字段名类型说明
se_typestring搜索引擎类型。
app_idstring竞品应用 ID。
avg_positionfloat该竞品在 App Store 搜索结果中的平均排名。基于与目标应用存在交集的计算,因此同一竞品与不同目标应用组合时,该值可能不同。
sum_positioninteger该竞品在 App Store 搜索结果中的排名总和。基于交集计算,因此同一竞品与不同目标应用组合时,该值可能不同。
intersectionsinteger与目标应用发生交集的数量。
competitor_metricsobject竞品在交集上的指标数据。该对象中的排名数据针对当前返回的竞品 app_id
full_metricsobject竞品在排名上的整体指标数据。

competitor_metrics.app_store_search_organic 字段

字段名类型说明
pos_1integer竞品在自然搜索结果中排名第 1 的数量。
pos_2_3integer竞品在自然搜索结果中排名第 2-3 的数量。
pos_4_10integer竞品在自然搜索结果中排名第 4-10 的数量。
pos_11_100integer竞品在自然搜索结果中排名第 11-100 的数量。
countinteger含该竞品的自然搜索结果总数。
search_volumeinteger交集在 App Store 自然搜索中的总搜索量。

full_metrics.app_store_search_organic 字段

字段名类型说明
pos_1integer竞品在自然搜索结果中排名第 1 的数量。
pos_2_3integer竞品在自然搜索结果中排名第 2-3 的数量。
pos_4_10integer竞品在自然搜索结果中排名第 4-10 的数量。
pos_11_100integer竞品在自然搜索结果中排名第 11-100 的数量。
countinteger含该竞品的自然搜索结果总数。
search_volumeinteger该竞品排名在 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

使用建议

  1. 通过目标 App 的 app_id 获取竞品集合;
  2. 使用 filters 筛选高交叉竞品,例如 intersections >= 100
  3. 使用 order_byintersectionsavg_position 排序,优识别最直接的搜索竞品;
  4. 结合 competitor_metricsfull_metrics,区分“与你重叠高”的竞品和“整体体量大”的竞品。

实用场景

  • 识别直接竞品:基于交集找出与目标 App 在 App Store 搜索结果中正面竞争的应用,帮助市场与 ASO 团队快速锁定核心对手。
  • 筛选高价值竞品:按 intersectionssearch_volumeavg_position 过滤排序,优重叠词多、流量大的竞品,提高竞品分析效率。
  • 评估竞品覆盖能力:查看竞品在交集上的排名分布,判断对方在核心词上的占位强度,为抢位提供依据。
  • 发现头部流量对手:结合 full_metrics 分析竞品整体覆盖规模,区分局部重叠竞品与局强势竞品,优化投放和 ASO 策略。
  • 监控竞争格局变化:定期拉取同一 app_id 的竞品结果,观察交集数量和排名分布的变化,及时发现新或竞品增长趋势。

统一入口:官网 · LLM API · 控制台