行情 / K线 / 财务 / 资金 / 龙虎榜 / 板块 / 因子选股 / 量化回测 —— 40 个端点,免费端点无需注册。
中文 · English
官网 · 文档 · 端点清单 · MCP 接入 · Agent Skill
GitHub 源码 · 问题反馈 Issues · 更新日志
pip install ashareapi # 基础(返回 list[dict])
pip install "ashareapi[pandas]" # 加 DataFrame 支持(推荐)也有 Node.js / TypeScript SDK:
npm install ashareapi—— npm
A股数据 API 的官方 Python SDK —— 把 HTTP 端点包成一行方法调用,省掉自己拼 URL、处理重试、解析返回结构。pip install ashareapi 之后:
from ashareapi import AShareAPI
cli = AShareAPI(api_key="ct-你的Key") # 或用环境变量 ASHARE_API_KEY
print(cli.quote("sh600667")) # 行情
print(cli.backtest(code="sh600667", strategy="mom20")) # 量化回测5 个端点无需 Key(装上就能调):/v1/quote · /v1/kline · /v1/hot · /v1/market-overview · /v1/changedist。其余端点需要 Key(获取,¥9.9 起)。
from ashareapi import AShareAPI
cli = AShareAPI() # 免费端点无需 Key
df = cli.quote("sh600667") # 实时行情 → DataFrame
print(df[["date", "last", "turnover"]])
print(cli.kline("600667.SH", count=5)) # 代码格式随便写(自动归一化)
print(cli.hot(limit=10)) # 热搜榜付费端点(财务 / 资金 / 龙虎榜 / 选股等)需要 Key(获取,¥9.9 起):
cli = AShareAPI("ct-你的Key") # 或设环境变量 ASHARE_API_KEY
df = cli.screen(preset="low_pe", orderby="ROETTM", limit=10)
print(df.head())- 免费端点真的免 Key:
quote / kline / hot / market-overview / changedist直接调,无需注册 - 代码格式兼容:
sh600667/600667.SH/600667都认(不同写法的项目都能直接用) - 多源自动切换:后端 70 个数据源互为备份,取数失败会自动换源且不扣调用次数
- 口径固定,不用二次处理:K 线固定前复权(没有
adjust参数),不会二次复权 - 不用你维护:多源切换 / 缓存 / 巡检都在服务端,客户端只负责调用
- 错误分类清楚:
AuthError/RateLimitError/UpstreamError/EmptyResultError(无数据 ≠ 失败)—— 每类都告诉你该做什么 - pandas 可选:不想装 pandas 也能用(返回
list[dict])
| 方法 | 说明 | 免 Key |
|---|---|---|
quote(code) |
实时行情快照 | ✅ |
kline(code, period, count, start, end) |
K 线(日/周/月/季/年 + 分钟线 m1~m120)· 复权口径由服务端固定(日线及以上前复权 · 分钟线不复权) |
✅ 日线及以上 / |
minute(code, days) |
分时(当日 / 近 5 日盘中走势)· 付费 | — |
hot(limit) |
热搜榜 | ✅ |
market_overview(type) |
市场总览(画像/估值/风格轮动) | ✅ |
changedist() |
涨跌分布(市场广度) | ✅ |
finance(code, num) |
三大报表 | — |
fund(code) |
资金流 + 龙虎榜 + 大宗 + 两融 | — |
technical(code) |
MA / MACD / KDJ / RSI / BOLL | — |
lhb(type) |
龙虎榜分榜(机构 / 游资 / 活跃席位) | — |
screen(expr/preset, ...) |
因子选股 | — |
search(q) |
搜索消歧 | — |
kline_full(code, fq, start, end) |
全历史日线一次拿全(约 2465 根)· fq 可选 qfq/hfq/nofq |
— |
backtest(strategy, mode, code, ...) |
量化回测(单标的实时 / 组合查预置区间 · weighting 可选等权或波动率倒数) |
— |
backtest_batch(codes, strategies, ...) |
批量回测(多标的 × 多策略对比矩阵 · ≤20 只 × 10 条) | — |
strategies() |
量化策略清单(20 条单标的 + 9 条组合,含参数范围) | — |
factors(category, kind) |
量化因子库(88 因子 + 50 筛选入口 + 22 预设) | — |
playbooks(category, id) |
量化方法论库(13 条「怎么判断市场」流程) | — |
ip_whitelist(action, ips) |
IP 白名单(把 Key 锁定到固定 IP · action = get/set/clear) |
— |
⚠️ K 线价格口径固定为前复权(除权除息日不跳空;没有adjust参数)—— 不要再自己复权(会二次复权)。
(完整 40 端点见 端点清单)
装了 pandas 时方法返回 DataFrame(未装则返回 list[dict]),可直接按列名取字段:
df = cli.quote("sh600667")
print(df[["date", "last", "turnover"]])需要原始信封(含 endpoint / tier / elapsed_ms / source)时用 raw=True:
cli = AShareAPI(raw=True)
env = cli.quote("sh600667")
# { 'ok': True, 'endpoint': '/v1/quote', 'tier': 'free', 'elapsed_ms': 862, 'source': '...', 'data': [...] }
⚠️ 三种返回形态:多数端点是单表 →DataFrame;finance()是表列表(list[list[dict]]);shareholder()/calendar()是多段结构({tables, data},原样 dict)。后两种不会被套成 DataFrame。
from ashareapi import AShareAPI, AuthError, RateLimitError, UpstreamError, EmptyResultError
cli = AShareAPI()
try:
df = cli.fund("sh600667")
except AuthError as e: # 401 / 缺 Key → 去拿 Key
print(e)
except RateLimitError as e: # 429 → 降频 / 解 PoW 挑战提额 / 升级档位
print(e)
except UpstreamError as e: # 上游取数失败(已自动换源、不扣次数)→ 重试一次通常就好
print(e)
except EmptyResultError as e: # 当前无数据(如当天无大宗交易)→ 不计费,换条件或稍后再试
print(e)除了 Python SDK,我们还提供两种 AI Agent 接入方式:
- MCP 服务器(Streamable HTTP)—— 服务器地址
https://api.ashareapi.com/mcp(⚠️ 填这个接口地址;站点介绍页ashareapi.com/mcp不是接口) - 各客户端配置写法(Claude Code / Cursor / VS Code / Codex 等 19 家,键名差异都核对过官方文档): https://ashareapi.com/mcp
- Agent Skill(给 AI Agent 读的接口说明书 + 分发包,装进 skills 目录即用):https://ashareapi.com/skill
免费工具/端点无需 Key;付费工具在请求头带
Authorization: Bearer <你的 Key>。
仓里 examples/ 有可直接跑的示例:
| 文件 | 做什么 |
|---|---|
examples/quickstart.py |
免费端点拿行情 / K 线 / 热搜(无需 Key)+ 付费端点的注释示例 |
python examples/quickstart.py- Python ≥ 3.9
- 只依赖
requests(≥ 2.28) pandas可选:装了返回DataFrame,不装返回list[dict]- 示例代码见
examples/quickstart.py
官方 SDK:Python pip install ashareapi · Node.js / TypeScript npm install ashareapi
MCP 服务器:https://api.ashareapi.com/mcp(配置说明)
Agent Skill(给 AI 读的接口说明书):https://ashareapi.com/skill
当前版本:0.2.0(2026-10-08)
| 版本 | 变更 |
|---|---|
0.2.0 |
新增量化方法 backtest() / backtest_batch() / strategies() / factors() / playbooks();补 kline_full() 全历史 K 线、ip_whitelist() IP 白名单;底层支持 POST/DELETE |
0.1.11 |
新增 minute() 分时方法;kline() 支持分钟线 m1~m120 与 start/end 日期范围;解 PoW 提额由 60 次/分调为 15 次/分 |
0.1.10 |
429 提示补充匿名额度口径(单次最多 250 条 / 每天最多 10 万条)· 区分「每分钟次数超」与「当天条数超」(后者解 PoW 无效)· 无行为变更 |
0.1.9 |
文档完善:README 新增「环境要求」「返回形态」「示例」· 补 GitHub 仓 / Issues 链接与 CI 徽章 · 源码注释与文档表述统一(无行为变更) |
0.1.8 |
文档措辞修订:价格口径(前复权)在 README / 方法文档 / CHANGELOG 中表述统一 · MCP 地址与 Agent Skill 说明更明确 |
0.1.7 |
文档:明确 MCP 服务器地址 https://api.ashareapi.com/mcp · 新增 Agent Skill 说明(/skill)· 变更记录链接改为可直接点开的绝对地址 |
0.1.6 |
文档:kline() 写明价格口径(前复权 · 无 adjust 参数 · 勿二次复权) |
0.1.5 |
文档:换手率字段示例更新为 turnover · 补齐 0.1.3 / 0.1.4 两行 · 元数据 Changelog 指向站内更新日志 |
0.1.4 |
finance() 原样返回表列表 · shareholder() / calendar() 多段结构锁定 · User-Agent 版本号统一 |
0.1.3 |
文档修订(snapshot() / orderbook() 边界)· 新增 CHANGELOG.md + MANIFEST.in |
0.1.2 |
新增 snapshot()(全字段画像)· 方法数 31 → 32 |
0.1.1 |
新增 orderbook()(五档盘口)· 方法数 30 → 31 |
0.1.0 |
首个版本(30 个方法 · 5 个免费端点) |
⚠️ 端点本身永远是最新的(服务端演进,无需升级 SDK)—— 升级只是为了用上新增的便利方法。
完整变更记录 → 包内 CHANGELOG.md · 站内更新日志 · PyPI 版本历史
MIT · 数据仅供研究参考,不构成投资建议