苹果官方有一个叫 itunes search api 的东西,可以查询任意 app 的信息,如果一款应用只在某些国家或地区上线,则需要加上国家信息,如果不加默认就是 us。这个接口支持的各种参数可以看苹果官方的说明,文档显示 search api 的请求频率限制在每分钟 20?但是实际好像不止。
The Search API is limited to approximately 20 calls per minute
注意这个 API 不支持查询 app bundle 的信息,例如:
const url =
"https://apps.apple.com/app-bundle/microsoft-365-mobile-apps/id1564009682";
可以在一个链接中同时请求多个 app 的信息:
const ids = "461703208,414478124";
const api = `https://itunes.apple.com/lookup?id=${ids}&country=cn&output=json&now=kdjai00988fda&lang=zh_cn`;
提供错误的参数,api 会返回它接收那些参数的信息:
{
"errorMessage": "Invalid value(s) for key(s): [country]",
"queryParameters": {
"output": "json",
"callback": "A javascript function to handle your search results",
"country": "ISO-2A country code",
"limit": "The number of search results to return",
"term": "A search string",
"lang": "ISO-2A language code"
}
}
可是这个 api 可能有延迟,stackoverflow 有人说延迟可能长达 24 小时,下面是原话:
"In general, there is a 24 hours delay for updated app information to go from App Store Connect to the public."
为了解决这个问题,可以在 url 后增加一个随机参数,例如当前时间戳。
值得一提的事,苹果官方提供了一个 json 生成工具,它可以生成 app、音乐、播客 等的榜单、列表等信息。另外,appsliced 可以检测 app 的 iap 应用内购买的价格信息,itunes search api 无法获取这个信息,在 stackoverflow 上看到有人说 Transporter 可以,但它是基于 java 的命令行工具。