数据来自全球 APRS-IS 与公开数据源,仅供个人与非商业用途;请勿高频轮询全量数据,建议按需拉取并本地缓存。
① 到 用户中心 → 开发者 / 开放 API 创建 Key(余额 ≥ ¥10.00 才能创建)。
② 调用时把它放进请求头:
curl -H "Authorization: Bearer aprs_你的Key" \
"https://www.bg5.my/open/v1/stations?bbox=100,20,120,30&limit=50"
也支持 ?key=aprs_xxx 或请求头 X-Api-Key;/open/v1/index.php/stations 与 /open/v1/?ep=stations 等价。
共 9 个接口。带 read 的只需基础权限,alerts 与 satpass 需要在创建 Key 时勾选对应权限。
站点与数据源状态 —— 返回各数据源最新时间、台站/报文总数,适合做健康检查。
无参数
台站实时位置 —— 返回台站呼号、坐标、速度、航向、海拔、注释、中继路径与最后信标时间。
| 参数 | 说明 |
|---|---|
| bbox | 经度最小,纬度最小,经度最大,纬度最大(可选) |
| minutes | 只要最近 N 分钟有信标的台站(默认 60,最大 1440) |
| limit | 返回条数(默认 200,最大 2000) |
| kind | 类型过滤:0固定 1移动 2气象 3物体 4其他(可选) |
单个台站详情 + 轨迹 —— 返回该台站最新状态与轨迹点序列,可直接画轨迹线。
| 参数 | 说明 |
|---|---|
| call | 呼号(必填) |
| hours | 轨迹回看小时数(默认 12,最大 720) |
批量轨迹 —— 返回多条轨迹的抽稀点序列,适合批量绘制。
| 参数 | 说明 |
|---|---|
| minutes | 时间窗分钟(默认 60) |
| bbox | 范围(可选) |
| calls | 指定呼号,逗号分隔(最多 20 个,可选) |
卫星星下点 —— 返回卫星/空间站的星下点经纬度、高度、速度。
| 参数 | 说明 |
|---|---|
| minutes | 位置新鲜度(默认 10 分钟) |
站点统计 —— 台站数、轨迹点、报文数、航空器/船舶/卫星数量等。
无参数
异常告警 —— 返回规则+AI 判定的异常告警(位置跳变、气压骤降、大风、强降雨等),可对接你自己的告警系统。
| 参数 | 说明 |
|---|---|
| hours | 回看小时(默认 24) |
| min | 最低等级 1提示 2注意 3严重 |
卫星过境预报 —— 基于 SGP4 推算过境时刻、最高仰角、方位与持续时间。
| 参数 | 说明 |
|---|---|
| target | ISS 或 NORAD 编号(默认 ISS) |
| lat | 观测点纬度(必填) |
| lng | 观测点经度(必填) |
| hours | 未来小时数(默认 24,最大 72) |
| min_el | 最低仰角(默认 10 度) |
用量与余额(本接口不计费) —— 返回本 Key 今日用量、每日免费额度剩余、包月配额与账户余额,建议每小时检查一次。
无参数
| 每日免费额度 | 1000 次 / 账号 / 天(先吃免费额度,不扣钱) |
|---|---|
| 按量计费 | ¥0.02 / 千次(累计满 1000 次从余额扣一次;错误响应不计费) |
| 包月配额 | ¥99.00 / 月,含 1,000,000 次;超出后按量计费 |
| 限流 | 60 次 / 分钟 / Key,50,000 次 / 天 / Key,超限返回 429 |
| 余额不足 | 返回 402 并给出提示;充值后重试即可 |
| 用量自查 | GET https://www.bg5.my/open/v1/usage(该接口不计费) |
填入你的 Key 与参数,直接看返回(浏览器内调用,Key 不会离开你的浏览器)。
等待请求…
| HTTP | 含义 / 处理建议 |
|---|---|
| 401 | Key 缺失或无效 → 检查 Authorization: Bearer 是否正确、Key 是否被吊销 |
| 402 | 余额不足 → 到用户中心充值 |
| 403 | 权限不足或来源 IP 不在白名单 → 重新创建含对应权限的 Key |
| 404 | 接口或对象不存在(如台站无记录) |
| 429 | 超过限流 → 按响应头 Retry-After 退避重试 |
| 503 | 开放 API 临时关闭 → 联系管理员 |
import requests
KEY = "aprs_你的Key"
r = requests.get("https://www.bg5.my/open/v1/stations",
params={"bbox": "100,20,120,30", "minutes": 30, "limit": 100},
headers={"Authorization": f"Bearer {KEY}"}, timeout=20)
data = r.json()["data"]
for s in data["list"][:5]:
print(s["call"], s["lat"], s["lng"], s["comment"])
const r = await fetch("https://www.bg5.my/open/v1/stations?minutes=30&limit=100", {
headers: { "Authorization": "Bearer aprs_你的Key" }
});
const { data } = await r.json();
console.log(data.count, data.list[0]);
{
"code": 0, // 0 成功,其余为 HTTP 状态码
"msg": "ok",
"data": { ... }, // 各接口数据
"usage": { // 本次计费情况(usage 接口不返回)
"charged": 0, // 本次扣款金额(元)
"reason": "每日免费额度(剩 998 次)",
"freeLeft": 998,
"balance": 20.5,
"ms": 12
}
}
bbox 缩小范围、用 minutes 控制新鲜度,比拉全量便宜得多。Retry-After 等待。