AKShare 跨语言接入与采用条件
比较 HTTP、Python 桥接及 TS 候选,明确新旧 AKTools 边界。
调查基线为原材料记载的 2026-10-04、AKShare v1.19.1、浅克隆短提交号 fac1e50。本轮读取了归档报告;未取得原运行环境或重跑接口、全库计数及 npm 检索。下文统计和“实测”均属于原调查记录,不能自动代表当前版本或服务可用性。短提交链接本轮未成功取得,数字保留为历史证据并披露复算边界。
本轮核对的官方接入说明
AKShare 官方 HTTP 部署页仍将 AKTools、FastAPI 等 Python 库作为 HTTP 接入的基础。官方页面把 aktools==0.0.68 标为仅体验 HTTP API 的版本,并说明新版包含认证、权限及可视化页面等功能。因此,不能将旧服务的接口暴露和错误行为推广到所有 AKTools 版本。官方 HTTP 部署
AKTools README 给出的常用路由为 /api/public/<函数名>,示例包含 stock_zh_a_hist 和同名查询参数。这证实了跨语言 HTTP 调用这一接入形态;本轮未启动服务,也未验证所有函数是否均可暴露、返回包裹结构、认证策略或请求失败的响应体。AKTools README
接入层应将接口名收敛为允许列表,校验参数与数据字段,区分传输失败、服务异常和上游返回空数据。客户端超时只结束自己的等待,不能保证同步 Python 请求已停止;高并发、分页和重试需要服务端容量、总预算及上游访问条件共同约束。原接口中缺少统一超时不适合用简单客户端重试补成无限任务。
四、是否有官方 TypeScript 版本
原调查结论:在所查范围未找到官方 TS 移植。akshare 官方(akfamily 组织)原调查覆盖的组织仓库和包中未找到官方 TypeScript/JavaScript 实现;官方给非 Python 用户的答案是"自部署 AKTools HTTP API",采用 HTTP 边界接入 Python 实现。
三条硬证据(2026-10-04 GitHub API 实查 + 本地源码):
- akfamily 组织共 9 个仓库:akshare / aktools / akbroker / akracer / akquant(全 Python)、awesome-data、quant、akfamily.github.io、.github——无任何 TS/JS 仓库;
- 主仓库 language=Python(22822 stars,最后 push 2026-09-30),topics 无 js/ts 相关;
- 本地源码
.ts/.tsx文件 0 个、无 package.json/tsconfig.json;官方文档明示跨语言路径是 HTTP API:"Provide HTTP API for the person who uses other program language: AKTools"(README.md:192)、"AKTools 作为 AKShare 的 HTTP API 版本,突破 Python 语言的限制"(docs/introduction.md:3)。AKTools 本身是 Python/FastAPI 服务(akfamily/aktools,1496 stars,最后 push 2025-10-29),pip install aktools即可(docs/deploy_http.md:13),另有官方 Docker 镜像(README.md:54、docs/akdocker/akdocker.md:33)。
证据边界:上述排查覆盖 akfamily 组织全部 9 个仓库 + npm 全部 23 个 akshare 相关包的 repository/maintainer 字段;未穷尽排查维护者个人 GitHub 账号名下的仓库,以及未以 "akshare" 命名的 TS 重实现项目——但官方文档将跨语言需求明确指向 AKTools HTTP API,可以支持官方当前文档提供 HTTP 接入路径,无法据此确认未来移植计划。
npm 上 23 个 akshare 相关包逐一核查,maintainer/repository 均不指向 akfamily,无一官方。代表性第三方实现:
| 项目 | 形态 | 热度 | 活跃度(实查) | 要点 |
|---|---|---|---|---|
| akfamily/aktools(官方) | Python/FastAPI HTTP API | 1496★ | push 2025-10-29 | 原调查找到的官方跨语言路径(非 TS) |
| chengzuopeng/stock-sdk | 原生 TS 独立实现,零依赖,浏览器+Node 双端,内置 CLI 与 MCP server | 1968★;npm stock-sdk v2.4.6 | push 2026-10-03(活跃) | 原调查选入的原生 TS 替代候选;覆盖 A股/港美股/基金/期货/期权;不依赖 akshare |
| SatoriQuant/AKShare-TS(npm akshare-ts) | 纯 TS 复刻,接口命名与 Python 版一致 | 6★;npm 2 个版本 | 2026-06-10 后原调查截至日期未见更新 | README 自称 901 接口中已测 550,覆盖不全且截至原调查日期未见后续发布 |
| jackluson/akshare-cb | 纯 TS 可转债接口复刻 | 3★;npm 6 版本 | push 2026-09-24 | 单品类 |
| jadenmong/akshare-mcp-server | MCP server:HTTP 版(消费 AKTools 公开 API,零 Python)+ Python 桥接版双实现 | 5★ | push 2026-04-24(已 5 个多月未动) | AI 助手场景 |
| quanters-akshare-mcp / ahshare-mcp | npm MCP server,宣称 no Python required | npm 3 版 / 1 版 | 2026-05-28 / 2026-06-25 | 小众低星,维护存疑 |
| whp98/ak-desktop | 消费 AKTools HTTP API 的前端展示应用 | 2★ | push 2023-08-21 | 截至原调查日期未见后续发布 demo |
五、给 TS 使用者的建议
以下采用条件对应原调查候选;星数、发布日期与接口声明属于历史信息,不作为当前综合排名:
- 要"akshare 全量能力"且服务端可控 → 自部署 AKTools(官方路径):
pip install aktools后python -m aktools启动(默认监听127.0.0.1:8080,见官方文档 https://aktools.akfamily.xyz/ 与本地docs/deploy_http.md:13-19),Node/TS 用 HTTP 调接口;需以所装 AKTools 的公开路由、参数转换与返回契约核对所需函数,endpoint 格式为http://127.0.0.1:8080/api/public/<接口名>?<同名参数>。TS 最小示例:
// 服务端:pip install aktools && python -m aktools(默认 127.0.0.1:8080)
const res = await fetch(
"http://127.0.0.1:8080/api/public/stock_zh_a_hist" +
"?symbol=000001&period=daily&start_date=20260101&end_date=20261001&adjust=hfq"
);
const rows = await res.json(); // 响应按所装服务的契约解析,以下未作响应结构校验参数名 symbol/period/start_date/end_date/adjust 与 Python 版同名(取自官方文档的 MATLAB/R 调用示例);返回体为 DataFrame 的 JSON 序列化,具体包裹结构未在本地起服实测,接入时以所装版本实测为准。代价是多维护一个 Python 服务(akshare 要求 Python 3.11+ 64 位,README.md:28)。适合数据后台/定时任务统一收口。另注意 调用与维护范围 的失败路径:接口抛 requests 原生异常时 AKTools 以 HTTP 错误返回,TS 端需自设超时与重试兜底。
2. 要纯 TS、零 Python 依赖且品类够用 → 用 stock-sdk(chengzuopeng):1968★、活跃、零依赖双端,覆盖 A股/港美股/基金/期货/期权,内置 MCP server。接入前先核对你的具体品类是否覆盖。
3. AI 助手/MCP 场景 → akshare-mcp-server(HTTP 版)或 ahshare-mcp:零本地 Python;但均为低星小项目,建议读码评估后再上生产。
4. 已有 Python 环境或只缺个别接口 → child_process / python-shell 调本地 akshare:DataFrame 侧 to_json(orient='records') 序列化。胶水成本低但部署重。
5. 不建议:直接依赖 akshare-ts(覆盖 550/901 且 2026-06 起原调查截至日期未见更新);也不建议在 TS 里逐接口复刻 akshare 的逆向逻辑——同花顺/巨潮链路依赖从网站前端抠出的 JS 资产(ths.js/cninfo.js)与硬编码 token,站点改版即失效。
风险提示(无论哪条路径):akshare 数据来自对第三方网站的抓取,无 SLA、无授权保证;站点改版/风控升级会随时导致接口失效(无回归测试,修复靠社区响应);约 16% 请求走明文 http;逆向私有接口(ths.js/cninfo.js/Accept-Enckey)在需要按来源的使用条款、数据许可与部署地区要求逐项评估;本调查未作法律判断。
最后更新于