开发文档
经典版接口:HTTP 查询产品列表、实时报价、K 线、市场状态、财务信息和通用新闻,WebSocket 订阅实时行情。HTTP 接口全部是 GET 请求。
本文档的参数、返回和示例已于 2026-10-05 按接口的实际返回逐项核对;示例是当时的真实返回,产品统一用美股 AAPL、TSLA。
接入地址
| 用途 | 地址 |
|---|---|
| HTTP 正式环境 | http://hk.psbangu.cn:8002/api/ |
| HTTP 测试环境 | http://hk.psbangu.cn:8001/api/ |
| WebSocket | ws://hk.psbangu.cn:9017/websocket/json/{key} |
| 通用新闻 | http://hk.psbangu.cn:2004/api/ |
正式环境和测试环境的接口、返回格式相同,额度分开计算。
鉴权
- HTTP:每个请求带请求头
Authorization,值就是密钥。 - WebSocket:密钥写在连接地址的最后一段,替换
{key}。 - 密钥、能用的市场和接口、调用额度,都在开通账号时确定;额度可以用「账号使用情况」接口查。
curl -H "Authorization: 你的密钥" \ "http://hk.psbangu.cn:8002/api/mini_prices?market=NASDAQ&symbol=AAPL,TSLA"
返回值约定
- HTTP 状态码一律是 200,成功还是失败要看返回内容。
- 返回内容是 JSON 文本,默认的类型是
text/plain;charset=UTF-8;请求头带Accept: application/json时类型是application/json,内容相同。 - 请求头带
Accept-Encoding: gzip时返回压缩内容,取整个市场的数据时建议带上。 - 同一个字段可能是数字,也可能是数字字符串、空字符串或 null,请同时兼容。
- 字段名区分大小写,按实际返回的写法读取。
market、symbol不分大小写。
参数里的特殊符号要转义
- 参数的值里有
&时,必须写成%26(URL 编码)。不转义的话,&后面的部分会被当成另一个参数,结果是查不到产品(返回空数组),不会报错。例如产品代码是A&B,要写成symbol=A%26B。 - 产品代码里目前出现的符号只有
.、_、-、&这几种,其中只有&需要转义,其余照原样写。 - 中文等非 ASCII 字符(如板块名称)同样要做 URL 编码,编码用 UTF-8。
- 稳妥的做法是对每个参数的值都做一次 URL 编码,如 JavaScript 的
encodeURIComponent、Python 的urllib.parse.quote。 - WebSocket 的订阅命令相反:产品代码照原样写(如
/sub/市场:A&B),不要转义,转义了反而订阅不上。
行情里每个字段的含义单独放在一页:
各接口页面里的示例只写接口名和参数(如 /mini_prices?market=NASDAQ&symbol=AAPL),实际请求时在前面加上上面的接入地址。示例的返回内容里,// 后面的文字是给这个值加的说明,实际返回里没有。
行情与 K 线接口的外壳
{
"status": 0, // 0 成功,500 失败
"interval": null, // K 线周期,只有 K 线接口有值
"market": "NASDAQ", // 市场代码
"code": "AAPL", // 产品代码
"message": "SUCCESS", // 成功为 SUCCESS,失败时是原因
"data": … // 数据,各接口不同
}
成功时 status 为 0。参数错误时返回一个 status 为 500 的对象,message 是原因,其余为 null:
{"status":500,"interval":null,"market":null,"code":null,"message":"The parameter 'market' is required","data":null}
返回多个产品的接口是数组,每个产品一个这样的对象。个别接口直接返回行情消息或文本,见各接口说明。
财务信息接口的外壳
{
"status": 0, // 0 成功,500 失败
"message": "SUCCESS", // 成功为 SUCCESS,失败时是原因
"data": …, // 数据,各接口不同
"total": 0, // 总条数,分页的接口才有值
"page": 0, // 当前页,分页的接口才有值
"market": "NASDAQ", // 市场代码
"symbol": "AAPL", // 产品代码
"code": "AAPL", // 产品代码
"interval": null // K 线周期,这类接口不用
}
数据在 data 里;出错时 status 为 500、message 是原因、data 为 null。财务信息接口和市场状态接口的请求都必须带 country 参数。
密钥与权限类的返回
下面这些在进入具体接口之前就会返回,行情、K 线和财务信息接口都一样(通用新闻的见它自己那一页):
| 情况 | 返回 |
|---|---|
| 没带密钥 | {"Cmd":"api","State":-1,"Msg":"缺少秘钥"} |
| 密钥无效或已到期 | {"Cmd":"api","State":-1,"Msg":"无效秘钥或者已经到期"} |
| 没有这个接口的权限;接口名写错;财务信息接口没带 country | {"Cmd":"api","State":-1,"Msg":"没有订阅产品权限"} |
| 接口路径写错(如多出一段) | {"Cmd":"api","State":-1,"Msg":"错误的请求参数,请参照api修改"} |
| 接口处理出错 | {"code":-1,"message":"调用接口出错,请联系管理员!"} |
| 本周期次数用完 | {"code":-1,"message":"[额度]次数不足请联系管理员"} |
| 服务繁忙 | {"code":-1,"message":"服务繁忙,请稍后再试"} |
一、WebSocket 实时行情 长连接,订阅后持续推送
| 编号 | 功能 | 接口 | 说明 |
|---|---|---|---|
| 1.1 | 连接、订阅与心跳 | — | 一条长连接,按产品或按市场订阅,订阅成功后持续收到实时行情。 |
二、HTTP 行情与 K 线 按市场代码 market 查询
| 编号 | 功能 | 接口 | 说明 |
|---|---|---|---|
| 2.1 | 产品列表 | all_symbol | 一个市场的全部产品。调用其它接口时,产品代码用这里返回的原值。 |
| 2.2 | 全市场报价 | prices | 一个市场全部产品的完整行情,可以排序、只取前若干条。 |
| 2.3 | 单个 / 多个产品完整行情 | mini_prices | 同一个市场里一个或多个产品的完整行情。 |
| 2.4 | 多个产品最新 K 线 | mini_lists | 同一个市场、同一个周期,一次取多个产品最近的若干根 K 线。 |
| 2.5 | 单个产品实时 / 历史 K 线 | mini_list | 一个产品某个周期的 K 线,可以按页往前翻,也可以按起止时间取。 |
| 2.6 | 市场状态和交易时间 | status | 今天、明天是否交易日,现在是否在交易,交易时段,以及距离下一次开盘或收盘还有多久。 |
| 2.7 | 账号使用情况 | use | 查当前密钥本周期的额度和已经用掉的次数。 |
三、财务信息 按国家 country 查询
| 编号 | 功能 | 接口 | 说明 |
|---|---|---|---|
| 3.1 | 公司介绍(多语言) | symbol_international_details | 公司名称、简介、板块、行业、CEO、官网等 12 个字段,按语言取。 |
| 3.2 | 个股财务字段 | symbol_details | Logo、名称、市值、估值、各周期涨跌、财务等字段,要哪些就在 fields 里写哪些。 |
| 3.3 | 基础信息 | basic | ISIN、类型、币种、板块、评级等基础信息。 |
| 3.4 | 各周期涨跌幅 | performance | 一个产品近一周、一个月、三个月、半年、今年以来、一年、五年、十年、全部时间的涨跌幅。 |
| 3.5 | 年度财务 | fundamental_annual | 最近一个财年的财务字段。 |
| 3.6 | 季度财务 | fundamental_quarter | 最近一个季度的财务字段。 |
| 3.7 | 近 12 个月财务 | fundamental_ttm | 过去 12 个月(TTM)的财务字段。 |
| 3.8 | 板块行业涨跌 | performance_list | 一个国家全部板块或全部行业的当日涨跌和各周期涨跌。 |
| 3.9 | 板块清单 | sector_name_list | 一个国家有哪些板块、每个板块下面有哪些行业(只有名称,不含涨跌)。 |
| 3.10 | 板块 / 行业成分股 | sector_stock_list sector_quote_list | 某个板块或行业的全部成分股;sector_quote_list 是成分股的实时行情。 |
| 3.11 | 活跃榜、涨幅榜、跌幅榜 | active_list gainer_list loser_list | 一个国家成交最活跃、涨幅最大、跌幅最大的股票,按名次排列,每个榜单 20 条。 |
| 3.12 | 涨跌统计 | market_breadth | 一个国家全部股票的上涨、下跌、平盘只数和按涨跌幅分档的只数。 |
| 3.13 | 新闻 | news_page | 一个国家的新闻,发布时间从新到旧,每页 50 条。 |
| 3.14 | 财经短讯 | brief_news_list | 全球财经短讯(中文),发布时间从新到旧。 |
| 3.15 | IPO | ipo_listing | 一个国家的 IPO 列表。 |
| 3.16 | 分红与拆股 | dividend_page split_page | 分红事件、拆股与合股事件,分页,每页 100 条。 |
| 3.17 | 停复牌 | suspension_list | A 股停复牌公告。只有 A 股有这项数据,所以这一页的示例用的是 china。 |
| 3.18 | 节假日、经济日历、经济指标 | holiday_list calendar_page indicator_list | 各国节假日、经济数据公布日历、国家经济指标。 |
| 3.19 | 国家与市场参数 | — | 接口参数 country(国家)、market(市场代码)、language(语言)的取值。 |
四、通用新闻 多语言、多国家,单独的 2004 端口
| 编号 | 功能 | 接口 | 说明 |
|---|---|---|---|
| 4.1 | 通用新闻 | latest | 财经、经济、突发事件等多语言、多国家的新闻,可以按国家、语言、类型、关键字、时间范围、情绪筛选,带正文、图片和视频地址。 |
| 4.2 | 新闻的国家与语言代码 | — | 通用新闻接口参数 country、language 的取值。注意这套代码只用于通用新闻,和行情、财务接口的 country 不是一套写法。 |
使用须知
- 只保证接口数据正常输出,请勿以此作为投资的唯一参考。
- 数据禁止二次分发,限个人开发者使用。
- 接口必须在当地法律允许的条件下使用。