K线(日/周/月) API
历史 K 线数据。用户问『走势/最近表现/历史K线/趋势』时用这个。⚠️ 换手率字段名是 `turnover`(单位 %)—— 与 /v1/quote、/v1/snapshot 同名同值(2026-09-26 由 `exchange` 改名)。⚠️ 价格口径固定为前复权(除权除息日不跳空;无 `adjust` 参数)—— 不要再自己复权(会二次复权)。
GET /v1/klineGET /v1/kline?code=sh600667&period=daycurl "https://api.ashareapi.com/v1/kline?code=sh600667&period=day"code * · period · count带 * 为必填快速开始
把下面的代码里的 Key 换成你的(免费端点无需 Key,直接调):
# 免费端点:无需 API Key(匿名即可调用)
curl "https://api.ashareapi.com/v1/kline?code=sh600667&period=day"import requests
r = requests.get(
"https://api.ashareapi.com/v1/kline",
params={"code": "sh600667"},
timeout=30,
)
print(r.json())const r = await fetch("https://api.ashareapi.com/v1/kline?code=sh600667&period=day");
console.log(await r.json());参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 股票代码:sh600667 |
| period | string | 否 | 周期:day 日线 / week 周线 / month 月线 |
| count | integer | 否 | 返回条数,默认 30,最大 1212 |
codestring是periodstringcountinteger返回示例
取样:`GET /v1/kline?code=sh600667&period=day&count=3`(2026-09-26 线上真实返回,已截断)。`volume` 单位为股,`amount` 单位为元,`turnover` 为换手率 %。
{
"ok": true,
"endpoint": "kline",
"tier": "free",
"elapsed_ms": 589,
"source": "multi",
"data": [
{ "date": "2026-09-24", "open": "20.17", "last": "19.41",
"high": "20.24", "low": "19.40",
"volume": "1544322", "amount": "3055480000", "turnover": "7.38" },
{ "date": "2026-09-23", "open": "20.10", "last": "20.59",
"high": "20.72", "low": "19.45",
"volume": "2591402", "amount": "5231650000", "turnover": "12.39" }
// … 共 count 根,按日期倒序 —— data[0] 是最近一个交易日
]
}统一返回信封: { ok, endpoint, tier, elapsed_ms, source, data }
数据在 `data` 字段;上游为空时 `ok:false` 且不扣次数。
免费端点无需 Key(匿名 5 次/分,解一次 PoW 可到 60 次/分)。付费端点按档位限流:体验 30 · 标准 120 · 专业 300 · 不限量 600 次/分;买断档按总量计(不用完不过期)。
看错误码对照表 →常见问题
前复权。除权除息日不跳空 —— 实测 6 个除息日(中远海控 7.27%、中国神华 6.14%、贵州茅台 2.37%、工商银行 2.31% 等)全部无缺口。我们不提供 `adjust` 参数,也不提供不复权 / 后复权数据。
实测上限 1212 根(约 5 年日线)—— 传更大的 `count`(如 2000、5000)仍只返回 1212 根,因为那是上游可用的全部历史。默认 30 根。
不支持。`period` 只有 `day`(日线)/ `week`(周线)/ `month`(月线)三档,分钟级数据不在我们的范围内。
最常见的三个原因:① 复权口径 —— 我们是前复权,若对方是不复权,差异会精确出现在跨越除息日的窗口上;② 窗口起点的数据日期不同(我们最后一根是最近交易日);③ 对方用了不同的复权基准日。短窗口(MA5 / MA10)通常一致,差异往往只出现在跨过除息日的长窗口(如 MA120)。
不是。`turnover` 是换手率(单位 %),2026-09-26 由旧名 `exchange` 改名 —— 旧名极易被误读为"交易所"。它与 `/v1/quote`、`/v1/snapshot` 中的同名字段同名同值。
通用问题(所有端点通用)
免费端点不需要:health、challenge、quote、kline、hot、market-overview、changedist 匿名即可调用。付费端点需要:在请求头带 `Authorization: Bearer <你的 Key>`。⚠️ 匿名额度按调用者类型分级:浏览器(真人)5 次/分;脚本 / SDK / AI Agent(curl、requests、axios、openai 等 UA)2 次/分 —— 自动化流量更易被滥用。解一次 PoW 挑战(`GET /v1/challenge`,再带 `X-PoW` 头)可提到 60 次/分,与类型无关。
不会。上游失败或空结果时返回 `ok:false`,并自动退回本次计费(total_calls / usage_log / ep_log 三处同时回滚)。只有真正取到数据的请求才计入用量。
行情类(quote / kline / orderbook / changedist)为实时或当日;财务、股东、分红、事件等为上游披露后 T+1 内。响应里的 `source` 字段标明本次实际命中的数据通道。
不能。`code` 是单值参数,一次一只;批量请并发调用(注意各自档位的每分钟限流)。
配一次 MCP 即可,之后直接问 AI「查一下……」它会自己调。MCP 暴露 24 个工具,覆盖行情 / 财务 / 选股 / 板块 / 宏观。