基础地址: https://apksurge.com/api/v1. 请注册,请在您的以下位置创建 API 密钥: 账户中心 ,然后发送您的第一个请求:
API 的机器可读描述: OpenAPI 3.1 · Postman 集合 — 导入 Postman、Insomnia 或客户端生成器 (openapi-generator),即可获得适用于您所用语言的现成 SDK。
curl -H "X-API-Key: 您的密钥" "https://apksurge.com/api/v1/app?id=com.whatsapp"
数据涵盖超过 400 万个 Google Play 应用,来自美国商店的英文版本(若应用在美国不可用,则取自其他国家),每晚更新。已从商店下架的应用会连同其最后数据保留在数据库中。
除 /v1/health 外,每个请求都必须在请求头中包含 API 密钥:
X-API-Key: ak_live_…
同时支持: Authorization: Bearer …。不允许在 URL 参数中传递密钥:否则它会进入日志和浏览器历史记录。
每次调用消耗 0–3 个令牌,具体取决于端点,与响应中的行数无关(最多 100 行);批量 apps 请求每个应用消耗 1 个令牌。优先使用每月令牌,然后使用已购令牌。如果请求因我方原因失败,令牌将退还。 套餐与令牌包
| 请求头 | 含义 |
|---|---|
X-Tokens-Cost | 本次请求消耗的令牌数 |
X-Tokens-Remaining | 剩余令牌数(每月令牌 + 已购令牌) |
X-Cache | HIT — 来自缓存的响应(更快),MISS — 对索引的全新查询 |
X-RateLimit-Limit / -Remaining | 密钥的每分钟请求限额及剩余次数 |
X-Plan | free | pro | business |
剩余令牌数也包含在每个响应的 _tokens 字段和 /v1/account 中(免费)。旧名称 _credits 和 X-Credits-* 已弃用,但目前仍可使用。
每个响应都包含 ok 字段。列表包含 results、total、page、per、pages。出错时:ok = false,error 为说明,code 为机器可读的错误代码。日期采用 UTC 的 ISO 8601 格式。
{ "ok": true, "app": { "id": "com.whatsapp", "title": "WhatsApp", "installs": { "label": "10,000,000,000+", "min": 10000000000, "real": 12445120489 }, … },
"_tokens": { "cost": 1, "monthly_remaining": 999, "balance": 0, "available": 999, "cached": false } }
{ "ok": false, "code": "insufficient_credits", "error": "Not enough tokens: this call costs 2, you have 1. …" }
| HTTP | code | 出现时机 |
|---|---|---|
| 400 | invalid_param, invalid_request | 参数无效或缺失 |
| 401 | missing_api_key, invalid_api_key | 缺少密钥,或密钥已被撤销 |
| 402 | insufficient_credits | 令牌不足——请购买令牌包 |
| 403 | account_blocked, plan_required | 账号已被封禁,或该端点在首次购买令牌后开放 |
| 404 | not_found | 数据库中没有该应用或开发者,或端点未知 |
| 429 | rate_limited | 已超出每分钟请求限额 |
| 503 | service_unavailable | 数据库暂时出现问题——请稍后重试;不会扣除令牌 |
所有端点均为 GET /api/v1/{名称}。分页:page(从 1 开始)和 per(1–100),最多到第 10 000 条结果。排序:sort + order=asc|desc。
您的套餐、令牌余额、每月令牌的重置日期以及每分钟限额。
完整的应用详情:标题、描述、“新功能”、安装量(档位与确切数值)、评分、评分与评论数量、星级分布、价格、应用内购买、广告、类别、内容分级、版本、最低 Android 版本、发布与更新日期、图标、截图、视频、开发者及其网站。对于已下架应用:最后保存的数据和下架日期。
id * | 应用包名 |
一次请求最多 100 个应用:GET ?ids=a,b,c,或在请求体中以列表 POST(每行一个,或 JSON {"ids": […]})。每个应用 1 个令牌;未找到的 ID 会在 not_found 中返回。
ids * | 包名,以逗号分隔,最多 100 个 |
在整个数据库中搜索和筛选。至少需要一个筛选条件。不带 q 时按安装量排序。
q | 在标题、描述和开发者名称中搜索的词语 |
category | 类别 ID,例如 GAME_PUZZLE(见 /v1/categories) |
developer_id | Google Play 开发者 ID |
min_installs | 最低安装量(Google Play 档位:1000、10000…) |
max_installs | 最大安装量 |
min_score | 最低评分,0–5 |
min_ratings | 最少评分数 |
free | true — 仅免费,false — 仅付费 |
ads | true — 含广告,false — 无广告 |
iap | true — 含应用内购买 |
lang | 标题语言,ISO 代码:en、de、pt… |
released_from | 发布于该日期起,YYYY-MM-DD |
released_to | 发布于该日期(含)之前 |
updated_from | 更新于该日期起 |
updated_to | 更新于该日期(含)之前 |
status | live(在商店中,默认)、removed 或 all |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
order | desc | asc |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
按标题开头联想:10 个最热门的匹配项。免费。
q * | 标题开头,至少 2 个字符 |
开发者及其全部应用:数量(在架与已下架)、总安装量、平均评分、首次发布、类别、网站。Business 套餐还包含邮箱、电话、地址和法定名称。
id | 开发者 ID(来自应用详情:developer.id) |
name | 或开发者的确切名称 |
status | all(默认)、live 或 removed |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
按首次发布日期排列的新应用,最新的在前。
since | 起始日期,YYYY-MM-DD(默认 7 天前) |
until | 截至该日期(含) |
category | 类别 ID,例如 GAME_PUZZLE(见 /v1/categories) |
min_installs | 最低安装量(Google Play 档位:1000、10000…) |
lang | 标题语言,ISO 代码:en、de、pt… |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
已从 Google Play 下架的应用(在我们检查的 19 个国家中均不存在),按下架日期排序。应用详情保留最后的数据。
since | 起始日期,YYYY-MM-DD(默认 7 天前) |
until | 截至该日期(含) |
category | 类别 ID,例如 GAME_PUZZLE(见 /v1/categories) |
min_installs | 最低安装量(Google Play 档位:1000、10000…) |
sort | removed_at | installs | score |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
按语言分别统计的应用标题词语和短语:使用它们的应用数和开发者数、其中强势应用(10 万+ 安装量)的数量、总安装量、头部应用占比以及机会评分(opportunity)。
lang | 语言,默认 en |
q | 词语或短语 |
phrase | true — 仅两个词的短语,false — 仅单个词 |
min_apps | 最少应用数 |
max_apps | 最大应用数 |
sort | opportunity | apps | installs | strong | devs | max_installs |
order | desc | asc |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
全部类别,含应用数量和总安装量。免费。
status | live(在商店中,默认)、removed 或 all |
开发者网站域名可注册的应用,附带应用热度。首次购买令牌后开放。
category | 类别 ID,例如 GAME_PUZZLE(见 /v1/categories) |
min_installs | 最低安装量(Google Play 档位:1000、10000…) |
status | live(在商店中,默认)、removed 或 all |
tld | 域名后缀,例如 com |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
Google Play 某一国家和类别的热门榜单:最多 200 个名次,相对上一次快照的名次变化(change:上升的名次数,"new" 表示新上榜)、图标和安装量。
country * | 国家,ISO 代码:US、DE、BR… |
category * | 类别,例如 GAME_PUZZLE |
collection | free | paid | grossing |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
应用在最新快照中所在的全部榜单:国家、类别、榜单类型、名次;以及榜单数量、国家数量和最佳名次。
id * | 应用包名 |
country | 仅限一个国家 |
collection | free | paid | grossing |
应用在 Google Play 中可用的国家(依据商店 sitemap 中的 hreflang)。如果超过 190 个国家,则返回 worldwide = true 而不附列表。
id * | 应用包名 |
基于免费榜单的市场竞争度:进入前 100 名和前 200 名的门槛(该名次应用的安装量)、榜单中新应用(近 12 个月)和本地应用(≤3 个国家)的占比,以及本地市场规模。不带参数:所有国家;country:单个国家的各类别;category:所有国家中的单个类别。
country | 国家,ISO 代码 |
category | 类别 ID,例如 GAME_PUZZLE(见 /v1/categories) |
sort | entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new |
order | desc | asc |
page | 页码,从 1 开始 |
per | 每页行数,1–100(默认 20) |
数据库规模:商店中的应用和已下架应用、开发者、7 天内新上架和已下架的数量、最近更新时间。免费。
* — 必填参数
# curl — one app
curl -H "X-API-Key: $KEY" "https://apksurge.com/api/v1/app?id=org.telegram.messenger"
# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apksurge.com/api/v1/search?category=GAME_PUZZLE&min_installs=10000000&sort=score"
# curl — up to 100 apps in one call (POST, one package per line)
curl -H "X-API-Key: $KEY" --data-binary $'com.whatsapp\norg.telegram.messenger' "https://apksurge.com/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apksurge.com/api/v1/removed",
params={"since": "2026-10-20", "min_installs": 100000, "per": 100},
headers={"X-API-Key": os.environ["KEY"]}, timeout=30)
r.raise_for_status()
data = r.json()
for app in data["results"]:
print(app["removed_seen_at"], app["id"], app["installs"]["label"])
print("tokens left:", data["_tokens"]["available"])
// Node.js 18+ (在服务器上,而不是在浏览器中)
const res = await fetch("https://apksurge.com/api/v1/developer?id=5191370068110375942", { headers: { "X-API-Key": process.env.KEY } });
const d = await res.json();
if (!d.ok) throw new Error(d.error);
console.log(d.developer.name, d.developer.apps, d.developer.total_installs);
// PHP
$ch = curl_init('https://apksurge.com/api/v1/keywords?lang=en&q=vpn&per=50');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('KEY')]]);
$d = json_decode(curl_exec($ch), true);
foreach ($d['results'] as $k) echo $k['keyword'], ' — ', $k['apps'], PHP_EOL;
您可以在以下位置创建密钥: 账户中心。请求直接从您的浏览器发出。密钥不会被保存,刷新页面后即消失。 控制台发出的请求与普通请求一样消耗令牌。