主题
Google Play 应用竞争对手分析(实时)
POST /v3/dataforseo_labs/google/app_competitors/live
本接口使用 POST 方法,请求路径为:
/v3/dataforseo_labs/google/app_competitors/live
用于获取在 Google Play 排名上与目标应用产生交集的竞争应用列表。响应中会返回竞争应用 ID、交集数量、搜索量及排名分布等数据。
返回结果与 POST 请求中指定的 app_id、地区和语言。本接口当前支持:
- 地区:美国(United States,代码
2840) - 语言:英语(English,代码
en)
数据按周更新,最新更新时间可通过以下接口查询:
/v3/dataforseo_labs/status
计费说明
每次请求均会产生费用。参考价约 ¥0.0320 / 次,扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
所有 POST 数据使用 UTF-8 编码的 JSON 格式提交。每次 Live API 请求只能一个任务;平台限流以认证说明中的 30/60/120 次/分钟规则为准。
请求参数
请求体是 JSON 数组,数组中只能一个任务对象。
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
app_id | string | 是 | Google Play 应用 ID。该值位于应用页 URL 的 id 参数中。例如:https://play.google.com/store/apps/details?id=org.telegram.messenger,对应的 app_id 为 org.telegram.messenger。 |
location_name | string | 条件填 | 地区名称。未指定 location_code 时填。目前支持 United States。 |
location_code | integer | 条件填 | 地区代码。未指定 location_name 时填。目前支持 2840。 |
language_name | string | 条件填 | 语言名称。未指定 language_code 时填。目前支持 English。 |
language_code | string | 条件填 | 语言代码。未指定 language_name 时填。目前支持 en。 |
filters | array | 否 | 结果过滤条件。最多设置 8 个过滤条件,多个条件之间使用 and 或 or 逻辑运算符。支持的运算符:<、<=、>、>=、=、<>、in、not_in。 |
order_by | array | 否 | 结果排序规则。排序字段使用方式与 filters 中的字段一致,排序方向支持 asc 和 desc。单次请求最多设置 3 条排序规则,多条规则使用逗号分隔。 |
limit | integer | 否 | 最多返回的竞争应用数量。默认值为 100,最大值为 1000。 |
offset | integer | 否 | 结果偏移量,默认值为 0。例如设置为 10 时,将跳过前 10 条结果。 |
tag | string | 否 | 用户自定义任务标识,用于将请求与响应进行匹。最大长度为 255 个字符。提交后可在响应 data 对象中获取。 |
地区与语言
可通过以下接口获取可用的地区和语言列表:
/v3/dataforseo_labs/locations_and_languages
本接口当前支持美国地区和英语语言,因此可以使用以下任一组合:
json
{
"location_name": "United States",
"language_name": "English"
}或:
json
{
"location_code": 2840,
"language_code": "en"
}filters 示例
筛选交集数量不少于 500 的竞争应用:
json
[
["intersections", ">=", 500]
]组合多个条件:
json
[
["intersections", ">=", 500],
"and",
["avg_position", "<=", 20]
]使用多个逻辑分组:
json
[
[
["intersections", ">=", 500],
"and",
["avg_position", "<=", 20]
],
"or",
[
["search_volume", ">=", 10000]
]
]order_by 示例
按交集数量降序、平均排名升序排列:
json
[
"intersections,desc",
"avg_position,asc"
]单次请求最多设置 3 条排序规则。
请求示例
cURL
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/dataforseo_labs/google/app_competitors/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"app_id": "org.telegram.messenger",
"location_code": 2840,
"language_code": "en",
"filters": [
["intersections", ">=", 500]
],
"order_by": [
"intersections,desc"
],
"limit": 10,
"tag": "telegram-competitors"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/dataforseo_labs/google/app_competitors/live"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
payload = [
{
"app_id": "org.telegram.messenger",
"location_name": "United States",
"language_name": "English",
"filters": [
["intersections", ">=", 500]
],
"order_by": [
"intersections,desc"
],
"limit": 10,
"tag": "telegram-competitors",
}
]
response = requests.post(url, headers=headers, json=payload, timeout=60)
response.raise_for_status()
result = response.json()
if result.get("status_code") == 20000:
print(result)
else:
print(
"请求失败,错误码:%s,错误信息:%s"
% (result.get("status_code"), result.get("status_message"))
)TypeScript
typescript
import axios from "axios";
const response = await axios.post(
"https://api.seermartech.cn/v3/dataforseo_labs/google/app_competitors/live",
[
{
app_id: "org.telegram.messenger",
location_code: 2840,
language_code: "en",
filters: [["intersections", ">=", 500]],
order_by: ["intersections,desc"],
limit: 10,
tag: "telegram-competitors",
},
],
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
);
if (response.data.status_code === 20000) {
console.log(response.data);
} else {
console.error(
`请求失败,错误码:${response.data.status_code},错误信息:${response.data.status_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 | 当前请求的 API 路径信息。 |
data | object | 与 POST 请求中提交的任务参数基本一致。 |
result | array | 当前任务的结果数组。 |
result 字段
| 字段 | 类型 | 说明 |
|---|---|---|
se_type | string | 搜索引擎类型,通常为 google。 |
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 | 竞争应用的 Google Play 应用 ID。 |
avg_position | float | 竞争应用在 Google Play 搜索结果中的平均排名。该值根据与目标应用产生交集的计算。同一个应用与不同目标应用比较时,平均排名可能不同。 |
sum_position | integer | 竞争应用在 Google Play 搜索结果中的排名总和。该值根据交集计算。 |
intersections | integer | 与目标应用产生交集的数量。 |
competitor_metrics | object | 竞争应用在交集上的排名指标。 |
full_metrics | object | 竞争应用在排名上的排名指标。 |
competitor_metrics
competitor_metrics 表示竞争应用在与目标应用的上的排名数据。
| 字段 | 类型 | 说明 |
|---|---|---|
google_play_search_organic | object | Google Play 自然搜索排名数据。 |
competitor_metrics.google_play_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 | 交集在 Google Play 自然搜索中的总搜索量。 |
full_metrics
full_metrics 表示竞争应用在排名上的完整排名概览。
| 字段 | 类型 | 说明 |
|---|---|---|
google_play_search_organic | object | Google Play 自然搜索排名数据。 |
full_metrics.google_play_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 | 该应用排名在 Google Play 自然搜索中的总搜索量。 |
响应示例
json
{
"version": "0.1.20220428",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.5293 sec.",
"cost": 0.011,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "00000000-0000-0000-0000-000000000000",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.4210 sec.",
"cost": 0.011,
"result_count": 1,
"path": [
"v3",
"dataforseo_labs",
"google",
"app_competitors",
"live"
],
"data": {
"api": "dataforseo_labs",
"function": "app_competitors",
"se_type": "google",
"app_id": "org.telegram.messenger",
"language_name": "English",
"location_name": "United States",
"limit": 10,
"tag": "telegram-competitors"
},
"result": [
{
"se_type": "google",
"app_id": "org.telegram.messenger",
"location_code": 2840,
"language_code": "en",
"total_count": 125,
"items_count": 1,
"items": [
{
"se_type": "google",
"app_id": "com.example.competitor",
"avg_position": 8.5,
"sum_position": 850,
"intersections": 100,
"competitor_metrics": {
"google_play_search_organic": {
"pos_1": 4,
"pos_2_3": 12,
"pos_4_10": 35,
"pos_11_100": 49,
"count": 100,
"search_volume": 25000
}
},
"full_metrics": {
"google_play_search_organic": {
"pos_1": 10,
"pos_2_3": 28,
"pos_4_10": 80,
"pos_11_100": 182,
"count": 300,
"search_volume": 76000
}
}
}
]
}
]
}
]
}状态码与错误处理
应根据顶层 status_code 和任务级 status_code 判断请求是否成功:
20000:请求成功。- 状态码:请求或任务执行失败,应结合
status_message排查参数、认证、限流或服务异常。
建议客户端同时处理以下:
- HTTP 请求失败;
- 顶层任务执行失败;
tasks_error大于0;result为空;- 响应时或网络中断。
实用场景
- 识别重叠度高的竞争应用,定位与目标应用争夺相同搜索需求的产品,为竞品库和市场格局分析提供依据。
- 筛选交集数量较多的应用,优分析直接竞争对手,提升竞品研究和 ASO 资源效率。
- 比较竞争应用的排名区间分布,判断竞品在前 1、前 3、前 10 等位置的覆盖能力,制定排名提升策略。
- 评估交集的搜索需求规模,结合
search_volume衡量目标应用与竞品市场的潜在流量价值。 - 对比竞品在交集与上的表现,区分竞争应用的直接竞争优势和整体覆盖能力,支持应用定位与优化。