适用场景在移动应用运营、竞品分析、ASO 优化或上架状态监控等场景中开发者经常需要批量获取 App Store 上的应用详细信息例如名称、版本号、评分、用量说明、兼容设备数、截图等。手动逐条翻阅应用商店页面效率低下且难以形成结构化数据用于后续分析。通过调用 App Store 查询 API只需提供应用数字 ID 或商店链接即可获得标准化的 JSON 响应便于集成到监控脚本、数据看板或自动化工作流中。典型使用场景包括竞品跟踪定期抓取竞品应用的最新版本号、评分变化、更新日志。应用上架检测监控自己或他人应用是否已上架、是否被下架。数据整合将应用元数据导入内部数据库用于搜索推荐或运营报表。开发者工具在 CI/CD 流水线中校验发布版本与商店版本的一致性。接口能力与边界该接口为POST方式端点地址为https://v1.apizero.cn/api/app-store单次请求可查询一个应用的信息。接口以国家码country区分不同区域商店的数据支持cn、us、jp等常见地区。实际测试中发现若传入非法国家码接口会自动回退到cn。需要注意的边界每次请求只能携带一个app_id或url暂无批量查询能力可通过循环并发实现。接口 QPS 限制为 10 次/秒适合中小规模监控高频场景需要添加退避策略。返回数据中的评分、版本信息为实时聚合但可能因苹果缓存有数分钟延迟。部分字段如advisories广告内容警告可能为空数组需判空处理。鉴权与请求头请求需要两个 HeaderHeader说明Content-Type必须设为application/jsonX-API-KeyAPI 密钥需从平台获取后传入注意X-API-Key的值应通过环境变量APIZERO_API_KEY加载切勿硬编码在源码中。请求体参数详解POST 请求体为一个 JSON 对象包含三个可选字段参数名类型必填说明app_idstring否与 url 二选一优先App 的数字 ID例如414478124urlstring否与 app_id 二选一应用商店完整链接例如https://apps.apple.com/cn/app/id414478124接口会自动提取 app_idcountrystring否两位国家/地区码默认cn非法值回退cn实际调用时建议优先使用app_idcountry以避免 URL 解析带来的额外开销。curl 接入示例以下是一个完整的 curl 请求使用环境变量注入 API Keycurl -sS \ -X POST \ -H X-API-Key: $APIZERO_API_KEY \ -H Content-Type: application/json \ -d {app_id: 414478124, url: https://apps.apple.com/cn/app/id414478124, country: cn} \ https://v1.apizero.cn/api/app-store执行后会在终端输出原始 JSON 响应。-sS参数静默错误输出方便脚本处理。代码接入示例Python使用requests库更易于在程序中集成import os import requests API_ENDPOINT https://v1.apizero.cn/api/app-store API_KEY os.environ.get(APIZERO_API_KEY) if not API_KEY: raise ValueError(Missing API_KEY environment variable) payload { app_id: 414478124, url: https://apps.apple.com/cn/app/id414478124, country: cn } headers { Content-Type: application/json, X-API-Key: API_KEY } resp requests.post(API_ENDPOINT, jsonpayload, headersheaders) resp.raise_for_status() # 触发 HTTP 错误 data resp.json() if data[code] 0: app_info data[data] print(f应用名称: {app_info[name]}) print(f版本: {app_info[version][current]}) print(f评分: {app_info[rating][average]}共 {app_info[rating][count]} 条评分) else: print(f请求失败: {data[msg]} (request_id: {data.get(request_id)}))工程建议将API_ENDPOINT和payload结构抽成配置方便切换环境。响应数据解析成功时 HTTP 200JSON 结构如下{ code: 0, msg: 成功, request_id: a1b2c3d4, data: { ... } }data对象包含应用的全部元数据按功能分组基本信息字段类型说明app_idint应用数字 IDnamestring应用名称bundle_idstring包名如com.tencent.xindescriptionstring应用描述文字store_urlstring商店页面 URLcountrystring查询时使用的国家码大写分类与兼容性字段类型说明categoryobject包含primary主分类名称、primary_id主分类ID、all所有分类名称数组compatibilityobject包含min_os_version最低系统版本、supported_devices_count支持设备数、features特性列表、game_center是否支持 Game Center评分与用量说明字段类型说明ratingobjectaverage平均分、count评分总数、current_version_average当前版本平均分、current_version_count当前版本评分数priceobjectamount数值、currency货币代码、formatted展示字符串如、is_free是否版本信息字段类型说明versionobjectcurrent当前版本号、release_date发布日期格式YYYY-MM-DD、release_notes更新说明、days_since_update距更新天数开发者和媒体字段类型说明developerobjectname开发者名称、seller_name销售商名称、url开发者商店链接iconobject包含small、medium、large三种尺寸图标 URLscreenshotsobject按设备类型分组的截图 URL 数组iphone、ipad、appletvcontent_ratingstring年龄分级如12language_countint支持语言数量languagesarray语言代码数组如[ZH, EN]file_sizeobjectbytes字节数、display格式化显示如811.78 MBfirst_release_datestring首次发布日期advisoriesarray广告或内容警告可能为空错误响应当请求失败时code不为0例如{ code: 1001, msg: app_id 或 url 不能为空, request_id: e5f6g7h8 }常见错误码1001缺少必要参数app_id 和 url 都未提供1002app_id 格式错误1003国家码格式错误1004API Key 无效或缺失2001内部服务异常可重试工程化注意事项API Key 安全管理使用环境变量或密钥管理服务禁止提交到版本库。请求频率控制遵守 10 QPS 限制建议在循环请求中插入time.sleep(0.1)或使用令牌桶。数据缓存应用元数据变化不频繁评分可能每日更新版本可能每周更新可缓存 1 小时以上减少 API 调用。字段判空如advisories、screenshots.iphone可能为空数组或空对象务必做if obj.get(iphone)判断。国家码覆盖部分应用在不同国家下名称、描述、用量说明可能不同请根据实际需求指定country。错误重试对2001等服务器错误实施指数退避重试最大重试 3 次。日志记录记录每次请求的request_id和响应码便于排查问题。参考文档接口文档页https://apizero.cn/aidocs/app-store原始 Markdown 文档https://apizero.cn/aidocs/app-store/raw.md