Skip to content

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_idstringGoogle Play 应用 ID。该值位于应用页 URL 的 id 参数中。例如:https://play.google.com/store/apps/details?id=org.telegram.messenger,对应的 app_idorg.telegram.messenger
location_namestring条件填地区名称。未指定 location_code 时填。目前支持 United States
location_codeinteger条件填地区代码。未指定 location_name 时填。目前支持 2840
language_namestring条件填语言名称。未指定 language_code 时填。目前支持 English
language_codestring条件填语言代码。未指定 language_name 时填。目前支持 en
filtersarray结果过滤条件。最多设置 8 个过滤条件,多个条件之间使用 andor 逻辑运算符。支持的运算符:<<=>>==<>innot_in
order_byarray结果排序规则。排序字段使用方式与 filters 中的字段一致,排序方向支持 ascdesc。单次请求最多设置 3 条排序规则,多条规则使用逗号分隔。
limitinteger最多返回的竞争应用数量。默认值为 100,最大值为 1000
offsetinteger结果偏移量,默认值为 0。例如设置为 10 时,将跳过前 10 条结果。
tagstring用户自定义任务标识,用于将请求与响应进行匹。最大长度为 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 数组本次请求的任务结果。

顶层字段

字段类型说明
versionstring当前 API 版本。
status_codeinteger请求级状态码。20000 表示成功。完整状态码请参考错误码文档。
status_messagestring请求级状态说明。
timestring请求执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
tasks_countintegertasks 数组中的任务总数。
tasks_errorintegertasks 数组中执行失败的任务数量。
tasksarray任务结果数组。

tasks 字段

字段类型说明
idstring任务唯一标识,UUID 格式。
status_codeinteger任务状态码,通常位于 1000060000 范围。
status_messagestring任务状态说明。
timestring任务执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
result_countintegerresult 数组中的数量。
patharray当前请求的 API 路径信息。
dataobject与 POST 请求中提交的任务参数基本一致。
resultarray当前任务的结果数组。

result 字段

字段类型说明
se_typestring搜索引擎类型,通常为 google
app_idstring请求中指定的目标应用 ID。
location_codeinteger请求使用的地区代码。
language_codestring请求使用的语言代码。
total_countinteger数据库中符合请求条件的结果总数。
items_countinteger本次 items 数组返回的结果数量。
itemsarray竞争应用数据列表。

items 字段

字段类型说明
se_typestring搜索引擎类型。
app_idstring竞争应用的 Google Play 应用 ID。
avg_positionfloat竞争应用在 Google Play 搜索结果中的平均排名。该值根据与目标应用产生交集的计算。同一个应用与不同目标应用比较时,平均排名可能不同。
sum_positioninteger竞争应用在 Google Play 搜索结果中的排名总和。该值根据交集计算。
intersectionsinteger与目标应用产生交集的数量。
competitor_metricsobject竞争应用在交集上的排名指标。
full_metricsobject竞争应用在排名上的排名指标。

competitor_metrics

competitor_metrics 表示竞争应用在与目标应用的上的排名数据。

字段类型说明
google_play_search_organicobjectGoogle Play 自然搜索排名数据。

competitor_metrics.google_play_search_organic

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

full_metrics

full_metrics 表示竞争应用在排名上的完整排名概览。

字段类型说明
google_play_search_organicobjectGoogle Play 自然搜索排名数据。

full_metrics.google_play_search_organic

字段类型说明
pos_1integer竞争应用排名第 1 的自然搜索结果数量。
pos_2_3integer竞争应用排名第 2 至第 3 的自然搜索结果数量。
pos_4_10integer竞争应用排名第 4 至第 10 的自然搜索结果数量。
pos_11_100integer竞争应用排名第 11 至第 100 的自然搜索结果数量。
countinteger含该应用的自然搜索结果总数。
search_volumeinteger该应用排名在 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 衡量目标应用与竞品市场的潜在流量价值。
  • 对比竞品在交集与上的表现,区分竞争应用的直接竞争优势和整体覆盖能力,支持应用定位与优化。

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