免费端点 · 免费

K线(日/周/月) API

历史 K 线数据。用户问『走势/最近表现/历史K线/趋势』时用这个。⚠️ 换手率字段名是 `turnover`(单位 %)—— 与 /v1/quote、/v1/snapshot 同名同值(2026-09-26 由 `exchange` 改名)。⚠️ 价格口径固定为前复权(除权除息日不跳空;无 `adjust` 参数)—— 不要再自己复权(会二次复权)。

免费GET /v1/kline
接口签名
GET /v1/kline?code=sh600667&period=day
一行可跑
curl "https://api.ashareapi.com/v1/kline?code=sh600667&period=day"
参数:code * · period · count带 * 为必填

快速开始

把下面的代码里的 Key 换成你的(免费端点无需 Key,直接调):

curl
# 免费端点:无需 API Key(匿名即可调用)
curl "https://api.ashareapi.com/v1/kline?code=sh600667&period=day"
Python
import requests

r = requests.get(
    "https://api.ashareapi.com/v1/kline",
    params={"code": "sh600667"},
    timeout=30,
)
print(r.json())
JavaScript
const r = await fetch("https://api.ashareapi.com/v1/kline?code=sh600667&period=day");
console.log(await r.json());

参数

codestring是
股票代码:sh600667
periodstring
周期:day 日线 / week 周线 / month 月线
countinteger
返回条数,默认 30,最大 1212

返回示例

取样:`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 次/分;买断档按总量计(不用完不过期)。

看错误码对照表 →

常见问题

K 线是前复权还是不复权?

前复权。除权除息日不跳空 —— 实测 6 个除息日(中远海控 7.27%、中国神华 6.14%、贵州茅台 2.37%、工商银行 2.31% 等)全部无缺口。我们不提供 `adjust` 参数,也不提供不复权 / 后复权数据。

最多能取多少根 K 线?

实测上限 1212 根(约 5 年日线)—— 传更大的 `count`(如 2000、5000)仍只返回 1212 根,因为那是上游可用的全部历史。默认 30 根。

支持分钟级 / 5 分钟 / 60 分钟 K 线吗?

不支持。`period` 只有 `day`(日线)/ `week`(周线)/ `month`(月线)三档,分钟级数据不在我们的范围内。

为什么我算出来的均线(MA)和别的软件对不上?

最常见的三个原因:① 复权口径 —— 我们是前复权,若对方是不复权,差异会精确出现在跨越除息日的窗口上;② 窗口起点的数据日期不同(我们最后一根是最近交易日);③ 对方用了不同的复权基准日。短窗口(MA5 / MA10)通常一致,差异往往只出现在跨过除息日的长窗口(如 MA120)。

`turnover` 字段是「交易所」吗?

不是。`turnover` 是换手率(单位 %),2026-09-26 由旧名 `exchange` 改名 —— 旧名极易被误读为"交易所"。它与 `/v1/quote`、`/v1/snapshot` 中的同名字段同名同值。

通用问题(所有端点通用)

这些端点需要 API Key 吗?

免费端点不需要: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` 是单值参数,一次一只;批量请并发调用(注意各自档位的每分钟限流)。

怎么在 Claude / Cursor / ChatGPT 里直接调用?

配一次 MCP 即可,之后直接问 AI「查一下……」它会自己调。MCP 暴露 24 个工具,覆盖行情 / 财务 / 选股 / 板块 / 宏观。

要把它接进 AI Agent?

配一次 MCP,之后问 AI「查一下……」它自己调。

← 返回完整端点清单