知行札记
AKShare 实现与跨语言接入调查

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 实查 + 本地源码):

  1. akfamily 组织共 9 个仓库:akshare / aktools / akbroker / akracer / akquant(全 Python)、awesome-data、quant、akfamily.github.io、.github——无任何 TS/JS 仓库;
  2. 主仓库 language=Python(22822 stars,最后 push 2026-09-30),topics 无 js/ts 相关;
  3. 本地源码 .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 API1496★push 2025-10-29原调查找到的官方跨语言路径(非 TS)
chengzuopeng/stock-sdk原生 TS 独立实现,零依赖,浏览器+Node 双端,内置 CLI 与 MCP server1968★;npm stock-sdk v2.4.6push 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-serverMCP server:HTTP 版(消费 AKTools 公开 API,零 Python)+ Python 桥接版双实现5★push 2026-04-24(已 5 个多月未动)AI 助手场景
quanters-akshare-mcp / ahshare-mcpnpm MCP server,宣称 no Python requirednpm 3 版 / 1 版2026-05-28 / 2026-06-25小众低星,维护存疑
whp98/ak-desktop消费 AKTools HTTP API 的前端展示应用2★push 2023-08-21截至原调查日期未见后续发布 demo

五、给 TS 使用者的建议

以下采用条件对应原调查候选;星数、发布日期与接口声明属于历史信息,不作为当前综合排名:

  1. 要"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)在需要按来源的使用条款、数据许可与部署地区要求逐项评估;本调查未作法律判断。


最后更新于

本页目录