跳到主要内容
🚀 新服务上线

美股行情 API

免费 · 快速 · 稳定

美股与 ETF 的收盘报价(T+1)、历史 K 线、静态信息、批量查询与回测,统一 JSON 响应格式,无需注册即可调用。

接口地址: https://us2.ninequantai.com

所有端点都挂在这个地址下。路径区分大小写,标的代码不区分。

请求
GET /v1/quote/AAPL.US
状态200 OK响应耗时毫秒级
响应
{
  "code": 0,
  "message": "ok",
  "data": {
    "symbol": "AAPL.US",
    "name": "苹果",
    "market": "US",
    "currency": "USD",
    "last": 328.21,
    "open": 324.87,
    "high": 330.81,
    "low": 324.11,
    "prev_close": 324.96,
    "change": 3.25,
    "change_pct": 1.0001,
    "volume": 37225838,
    "ts": "2026-09-03T16:00:00-04:00",
    "as_of": "2026-09-03",
    "delayed": true,
    "venue_mode": "consolidated",
    "timeliness": { "mode": "eod_only", "delayed": true, "label": "T+1 收盘数据" },
    "source": "eod"
  }
}

示例取自真实调用。delayed 与 as_of 原样保留,一眼就知道这批数据是什么时效。

当前提供 T+1 及更早的日线数据,盘中与实时数据暂未开放。 数据已更新至 2026/09/04

能力概览

四个数字都是打开本页时向服务端实测得到的,不是宣传口径,刷新一次即可复现。没测到的写「毫秒级」或「—」——我们不写没有测量依据的数字承诺。

历史数据响应
毫秒级
本次未测到,改用不量化的措辞
收盘报价响应
毫秒级
收盘数据(T+1 及更早)
服务可用性
正常
本次探测结果
支持标的
13,193
3,331 个已入库历史行情

为什么选择我们的 API?

六条都能在本页别处当场验证:能力数字、限流表、在线试用面板。我们不写验证不了的口号。

快速响应

历史 K 线与报价命中本地库后毫秒级返回。本页顶部四格就是你这次打开页面实测到的耗时。

稳定可靠

上游数据源故障时返回明确的 502,绝不拿旧数据或脏数据顶包。

智能限流

滑动窗口计数,429 自带 Retry-After 与 X-RateLimit-* 头,客户端可以自适应退避。

RESTful 接口

所有端点共用 code / message / data 一个响应外壳,客户端只写一处解析。

数据丰富

报价、日线周线月线、静态信息、标的搜索、批量查询与回测,一套接口全覆盖。

完全免费

游客免注册即可调用,注册后额度更高。免费档不是试用期,也不会静默降额。

💰 用量与定价

三档用量。卡上每一个数字都实时来自服务端套餐配置,前端一个都没写死。

游客版

¥0无需注册
单端点
30 次/分
批量查询
10 次/分
回测
5 次/分
API Key
不可用
  • 按来源 IP 限流,打开就能调
  • 报价、K 线、静态信息、标的搜索、批量与回测全部开放
  • 不签发 API Key
  • 无调用记录与统计
  • 无技术支持

注册版

推荐
¥0免费注册
单端点
60 次/分
批量查询
20 次/分
回测
20 次/分
API Key
1 把
  • 按 API Key 限流,与他人互不干扰
  • 控制台可查每日调用量统计
  • 回测记录可保存与分享
  • 邮件技术支持

Pro 版

¥99/ 月
单端点
300 次/分
批量查询
100 次/分
回测
60 次/分
API Key
5 把
  • 专属额度,可开多把 Key 分摊用量
  • 按端点、按天的详细调用统计
  • 参数优化、组合回测与 CSV 导出
  • 专属技术支持,优先响应

回测接口游客 5 次/分、注册用户 20 次/分。以上限流数字来自 GET /api/plans,与定价页、控制台同源,不会出现互相矛盾的版本。 查看完整定价与机构版

🔐 鉴权方式

三种调用身份,切换只需要改一个请求头。

游客模式

无需注册

不带任何凭证直接调用,按来源 IP 计额度。

单端点额度: 30 次/分

  • 适合先试接口、写 demo、跑一次性脚本
  • 同一个出口 IP 下的所有调用共享额度 —— 公司网络、云函数、CI 要留意
  • 不保留调用记录,控制台里看不到用量

注册用户

推荐

请求头带上 API Key,按 Key 计额度。

单端点额度: 60 次/分

  • 注册只要邮箱验证码,平台不设密码,注册即自动签发一把 Key
  • Key 以 nq_ 开头,后接 64 位十六进制;控制台可随时重置
  • 控制台能看到每日调用量,回测记录可保存与分享

登录获取 Key

Pro 版本

更高额度

同样是 API Key,额度与可用功能按 Pro 档发放。

单端点额度: 300 次/分

  • 可开多把 Key,额度按 Key 分配,互不干扰
  • 按端点与按天的详细调用统计
  • 参数优化、组合回测与 CSV 导出随档位开放

查看完整定价与机构版

请求示例

游客调用
GET https://us2.ninequantai.com/v1/quote/AAPL.US

不带任何请求头,按来源 IP 计额度。

带 API Key 调用
GET https://us2.ninequantai.com/v1/quote/AAPL.US
Authorization: Bearer nq_your_api_key_here
Accept-Language: zh-CN

把 nq_your_api_key_here 换成控制台里的 Key。Accept-Language 决定错误信息用哪种语言返回。

凭证不合法时是 401,不会降级成游客

带了 Key 但 Key 过期或被重置,返回 401 而不是静默按游客处理 —— 否则你只会看到「数据怎么少了」,而不是「该换 Key 了」。完全不带凭证才按游客走。

⚠️ 别把 Key 写进前端

浏览器里的任何代码都是公开的。Key 只放服务端或本地脚本;一旦泄漏,去控制台重置,旧 Key 立即失效。

⚠️ 错误码

只列真正会遇到的六个,不铺满一整张 HTTP 状态码表。

状态码含义该怎么办
400参数不合法:日期格式、period 取值、批量标的数超上限等按 message 改参数。message 已按 Accept-Language 本地化,可以直接展示给你的用户。
401凭证不合法或已过期检查 Authorization 头是否写成 Bearer nq_xxx;Key 被重置过就去控制台取新的。完全不带凭证不会 401,会按游客处理。
403我方新增当前身份没有这项权限两种情况:分发姿态还没开放(例如 eod_only 下的分时),或当前套餐不含该能力。前者等授权,后者升级套餐。
404我方新增标的或记录不存在先用 /v1/symbols 确认拼写。统一格式是 QQQ.US,缺省市场按美股解释。
429触发限流读 Retry-After 退避重试。长期不够用就升级套餐,或者多开一把 Key —— 额度是按 Key 分配的。
502上游数据源暂时不可用我们宁可返回 502 也不返回脏数据。稍后重试,或改用已入库的历史区间。

403 与 404 是我方在四个通用错误码之外新增的:403 用于「分发姿态尚未开放」(例如当前的分时端点)与「当前套餐不含该能力」,404 用于标的或记录不存在。少了这两个,调用方分不清该等授权、该升级套餐,还是只是代码写错了。

500 / 503 同样遵守上面的响应外壳。任何错误响应都不会把堆栈吐给调用方,出问题请带上 X-Request-Id 找我们。

统一响应格式

所有 /v1 与 /api 端点返回同一个外壳,客户端只需要写一处解析。

成功
{
  "code": 0,
  "message": "ok",
  "data": { }
}
失败
{
  "code": 429,
  "message": "请求过于频繁,请在 12 秒后重试",
  "data": null,
  "retry_after": 12
}

每个响应都带 X-Request-Id 头。反馈问题时附上它,我们能直接定位到那一次调用。

📦 SDK 示例

Python(requests)、JavaScript(fetch)与 cURL 三份,复制即可跑。把 YOUR_API_KEY 换成控制台里的 Key;不换也能跑,只是按游客额度计。

接口地址: https://us2.ninequantai.com

Python
import requests

BASE = "https://us2.ninequantai.com"
# 游客调用把这一行删掉即可
headers = {"Authorization": "Bearer YOUR_API_KEY"}

r = requests.get(f"{BASE}/v1/quote/QQQ.US", headers=headers, timeout=20)
r.raise_for_status()
body = r.json()          # 统一信封:code / message / data
if body["code"] != 0:    # HTTP 200 也可能是业务失败,务必判 code
    raise RuntimeError(body["message"])

print(body["data"])

我们不提供也不打算提供官方 SDK:一个只有七个端点、统一响应外壳的 REST 接口,二十行代码就能封装完,多一层 SDK 只会多一层版本问题。

API 端点

七个端点:报价 / 历史K线 / 分时 / 静态信息 / 批量,再加上标的搜索与回测。每个端点都给了参数表、真实请求与响应示例,以及一个可以直接发请求的在线试用面板。

GET/v1/quote/{symbol}

报价

单个标的的最新可分发报价

时效取决于部署的分发姿态:eod_only 下返回最近一个已过 T+1 的交易日快照,as_of 标明数据日期。响应里的 timeliness 会如实说明本次拿到的是哪一种。

计入额度类别: 报价游客版 · 30 次/分注册版 · 60 次/分

参数

参数位置类型必填默认说明
symbol路径string必填标的代码,QQQ 或 QQQ.US 均可,缺省市场按美股解释

请求示例

cURL
# 游客调用把这一行删掉即可
curl -s "https://us2.ninequantai.com/v1/quote/QQQ.US" \
  -H "Authorization: Bearer YOUR_API_KEY"

响应示例

JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "symbol": "QQQ.US",
    "name": "纳斯达克100",
    "market": "US",
    "currency": "USD",
    "last": 717.67,
    "open": 710.85,
    "high": 718.915,
    "low": 709.69,
    "prev_close": 709.24,
    "change": 8.43,
    "change_pct": 1.1886,
    "volume": 29449781,
    "ts": "2026-09-03T16:00:00-04:00",
    "as_of": "2026-09-03",
    "delayed": true,
    "venue_mode": "consolidated",
    "venue_mode_label": "合并口径(全市场)",
    "timeliness": {
      "mode": "eod_only",
      "delayed": true,
      "delay_minutes": null,
      "label": "T+1 收盘数据",
      "max_date": "2026-09-03"
    },
    "source": "eod"
  }
}

示例取自真实调用,为便于阅读裁剪了数组长度。

可能的错误

  • 400参数不合法:日期格式、period 取值、批量标的数超上限等
  • 404标的或记录不存在
  • 429触发限流
  • 502上游数据源暂时不可用

在线试用

填好参数直接发一次真实请求。它会消耗你当前身份的额度,和线上调用完全一样。

还没发过请求。点上面的按钮试一次。

GET/v1/kline/{symbol}

历史 K 线

日 / 周 / 月 K 线

周线与月线由日线重采样得出,不单独存储。adjust=qfq 为前复权:因子在查询时相乘算出,不预存复权价,最新价保持真实成交价;adjust_applied 会如实告诉你该区间是否真的有因子被应用。

计入额度类别: K 线游客版 · 30 次/分注册版 · 60 次/分

参数

参数位置类型必填默认说明
symbol路径string必填标的代码
period查询string选填dayday / week / month,默认 day
start查询string选填起始日期 YYYY-MM-DD
end查询string选填结束日期 YYYY-MM-DD,超出可分发范围会被收敛
days查询integer选填250返回最近 N 根(按 period 计数);与 start 同时给出时以 start 为准
adjust查询string选填nonenone(默认)/ qfq 前复权

请求示例

cURL
# 游客调用把这一行删掉即可
curl -s "https://us2.ninequantai.com/v1/kline/QQQ.US?period=day&days=30&adjust=none" \
  -H "Authorization: Bearer YOUR_API_KEY"

响应示例

JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "symbol": "QQQ.US",
    "name": "纳斯达克100",
    "market": "US",
    "currency": "USD",
    "period": "day",
    "adjust": "none",
    "adjust_applied": false,
    "venue_mode": "consolidated",
    "venue_mode_label": "合并口径(全市场)",
    "delayed": true,
    "as_of": "2026-09-03",
    "timeliness": { "mode": "eod_only", "delayed": true, "label": "T+1 收盘数据" },
    "start": "2026-07-24",
    "end": "2026-09-03",
    "count": 30,
    "bars": [
      { "ts": "2026-07-24", "open": 690.41, "high": 692.63, "low": 682.48, "close": 684.23, "volume": 42876658 },
      { "ts": "2026-07-27", "open": 691.68, "high": 692.3, "low": 675.945, "close": 682.12, "volume": 42681473 },
      { "...": "共 30 根,其余略" },
      { "ts": "2026-09-03", "open": 710.85, "high": 718.915, "low": 709.69, "close": 717.67, "volume": 29449781 }
    ]
  }
}

示例取自真实调用,为便于阅读裁剪了数组长度。

可能的错误

  • 400参数不合法:日期格式、period 取值、批量标的数超上限等
  • 404标的或记录不存在
  • 429触发限流
  • 502上游数据源暂时不可用

在线试用

填好参数直接发一次真实请求。它会消耗你当前身份的额度,和线上调用完全一样。

还没发过请求。点上面的按钮试一次。

GET/v1/intraday/{symbol}当前部署下不可用

分时数据

当日分时 K 线

盘中数据的对外分发需要交易所额外授权。分发模式为 eod_only 时本端点返回 403 —— 这不是你的参数写错了,而是这个部署还没有开放盘中分发。授权落实后把分发模式改成 delayed 或 realtime 即可,端点与字段不变。

当前分发模式为 eod_only:这个端点会返回 403。原因是盘中数据的对外分发需要交易所额外授权 —— 不是你的参数写错了。授权落实后把分发模式改成 delayed 或 realtime 即可,端点路径与字段一律不变。

计入额度类别: 分时游客版 · 不可用注册版 · 60 次/分

参数

参数位置类型必填默认说明
symbol路径string必填标的代码
date查询string选填交易日 YYYY-MM-DD,默认最近可分发交易日
interval查询string选填1m分时粒度,如 1m

请求示例

cURL
# 游客调用把这一行删掉即可
curl -s "https://us2.ninequantai.com/v1/intraday/QQQ.US?interval=1m" \
  -H "Authorization: Bearer YOUR_API_KEY"

响应示例

JSON
{
  "code": 403,
  "message": "分时数据暂不对外提供",
  "data": null
}

示例取自真实调用,为便于阅读裁剪了数组长度。

可能的错误

  • 400参数不合法:日期格式、period 取值、批量标的数超上限等
  • 403当前身份没有这项权限
  • 404标的或记录不存在
  • 429触发限流
  • 502上游数据源暂时不可用

在线试用

填好参数直接发一次真实请求。它会消耗你当前身份的额度,和线上调用完全一样。

当前部署下这个端点不可用仍然可以点发送 —— 服务端会返回一个真实的 403,正好看看错误外壳长什么样。

还没发过请求。点上面的按钮试一次。

GET/v1/static/{symbol}

静态信息

标的静态属性与本地历史覆盖区间

除了名称、类型、主交易所这些静态属性,还返回本地已入库的日线区间(history_start / history_end),方便你在发起回测前先确认数据够不够。已退市标的同样返回,并在 note 里注明。

计入额度类别: 静态信息游客版 · 30 次/分注册版 · 60 次/分

参数

参数位置类型必填默认说明
symbol路径string必填标的代码

请求示例

cURL
# 游客调用把这一行删掉即可
curl -s "https://us2.ninequantai.com/v1/static/QQQ.US" \
  -H "Authorization: Bearer YOUR_API_KEY"

响应示例

JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "symbol": "QQQ.US",
    "raw_symbol": "QQQ",
    "market": "US",
    "name": "纳斯达克100",
    "asset_type": "etf",
    "primary_venue": "XNAS",
    "currency": "USD",
    "listed_on": null,
    "delisted_on": null,
    "is_delisted": false,
    "is_popular": true,
    "lot_size": 40,
    "status": "active",
    "history_start": "2024-07-01",
    "history_end": "2026-09-03",
    "venue_mode": "consolidated",
    "note": null
  }
}

示例取自真实调用,为便于阅读裁剪了数组长度。

可能的错误

  • 400参数不合法:日期格式、period 取值、批量标的数超上限等
  • 404标的或记录不存在
  • 429触发限流
  • 502上游数据源暂时不可用

在线试用

填好参数直接发一次真实请求。它会消耗你当前身份的额度,和线上调用完全一样。

还没发过请求。点上面的按钮试一次。

POST/v1/batch

批量查询

一次查询多个标的

单个标的失败不会让整次请求失败:成功的结果在 results,失败原因逐条列在 errors 里,便于定位是哪个代码写错了,而不是整批一起重来。单次标的数上限由套餐决定,见上方额度表。

计入额度类别: 批量查询游客版 · 10 次/分注册版 · 20 次/分

参数

参数位置类型必填默认说明
symbols请求体string[]必填标的代码数组,按去重后计数
type请求体string选填quotequote / static / kline
period请求体string选填daytype=kline 时生效
adjust请求体string选填nonetype=kline 时生效
days请求体integer选填type=kline 时每个标的返回的根数

请求示例

cURL
# 游客调用把这一行删掉即可
curl -s -X POST "https://us2.ninequantai.com/v1/batch" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "symbols": [
    "QQQ.US",
    "SPY.US",
    "NOPE.US"
  ],
  "type": "quote"
}'

响应示例

JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "type": "quote",
    "requested": 3,
    "succeeded": 2,
    "failed": 1,
    "distribution_mode": "eod_only",
    "results": {
      "QQQ.US": { "symbol": "QQQ.US", "last": 717.67, "change_pct": 1.1886, "as_of": "2026-09-03", "...": "字段与 /v1/quote 相同" },
      "SPY.US": { "...": "同上" }
    },
    "errors": [
      { "symbol": "NOPE.US", "code": 404, "message": "未找到标的 NOPE.US" }
    ]
  }
}

示例取自真实调用,为便于阅读裁剪了数组长度。

可能的错误

  • 400参数不合法:日期格式、period 取值、批量标的数超上限等
  • 429触发限流
  • 502上游数据源暂时不可用

在线试用

填好参数直接发一次真实请求。它会消耗你当前身份的额度,和线上调用完全一样。

还没发过请求。点上面的按钮试一次。

GET/v1/symbols

标的搜索

按代码或名称模糊搜索标的

代码精确命中排最前,其次是代码前缀,最后才是名称命中。不传 q 时返回热门标的,适合做搜索框的初始态。结果包含已退市标的,只是排序上让位于在营标的。

计入额度类别: 标的搜索游客版 · 30 次/分注册版 · 60 次/分

参数

参数位置类型必填默认说明
q查询string选填关键词,匹配代码前缀或名称片段
market查询string选填US市场代码,当前仅支持 US
limit查询integer选填20返回条数上限,默认 20,最大 100

请求示例

cURL
# 游客调用把这一行删掉即可
curl -s "https://us2.ninequantai.com/v1/symbols?q=QQ&market=US&limit=2" \
  -H "Authorization: Bearer YOUR_API_KEY"

响应示例

JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "query": "QQ",
    "market": "US",
    "total": 30,
    "count": 2,
    "items": [
      {
        "symbol": "QQQ.US",
        "raw_symbol": "QQQ",
        "market": "US",
        "name": "纳斯达克100",
        "asset_type": "etf",
        "primary_venue": "XNAS",
        "currency": "USD",
        "listed_on": null,
        "delisted_on": null,
        "is_delisted": false,
        "is_popular": true
      },
      { "...": "共 2 条,其余略" }
    ]
  }
}

示例取自真实调用,为便于阅读裁剪了数组长度。

可能的错误

  • 400参数不合法:日期格式、period 取值、批量标的数超上限等
  • 429触发限流
  • 502上游数据源暂时不可用

在线试用

填好参数直接发一次真实请求。它会消耗你当前身份的额度,和线上调用完全一样。

还没发过请求。点上面的按钮试一次。

POST/v1/backtest

运行回测

用内置策略跑一次回测

与网页版回测共用同一套引擎,同参数同版本必然复现同结果。策略参数既可以放进 params 嵌套给,也可以直接平铺在顶层(两者同时出现时以 params 为准)。默认返回 K 线与成交明细,只要那十几个指标时把 include_klines / include_equity 置为 false,能省掉大部分带宽。

计入额度类别: 回测游客版 · 5 次/分注册版 · 20 次/分

参数

参数位置类型必填默认说明
symbol请求体string必填标的代码
strategy请求体string选填chandelier策略代码,见 GET /v1/strategies
time_range请求体string选填1Y预设区间:YTD / 1M / 3M / 6M / 1Y / 2Y / 3Y / 4Y / 5Y / 6Y / 7Y / 8Y / 10Y / MAX
start请求体string选填起始日期 YYYY-MM-DD,给了就忽略 time_range
end请求体string选填结束日期 YYYY-MM-DD
params请求体object选填策略参数对象,按 params_schema 校验
execute_on请求体string选填close成交时点:close=信号日收盘成交(默认);next_open=信号次日开盘成交(更接近实盘)
cost请求体object选填交易成本 {commission_rate, min_commission, slippage_bps}。不传则三项全为 0 —— 默认口径不计成本,结果里的 notes 会带 no_cost_model 说明这件事
include_klines请求体boolean选填true是否返回 K 线数组
include_trades请求体boolean选填true是否返回成交明细
include_equity请求体boolean选填true是否返回净值曲线

请求示例

cURL
# 游客调用把这一行删掉即可
curl -s -X POST "https://us2.ninequantai.com/v1/backtest" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "symbol": "QQQ.US",
  "strategy": "chandelier",
  "time_range": "1Y",
  "params": {
    "sma_period": 100
  },
  "execute_on": "close",
  "include_klines": false,
  "include_trades": true,
  "include_equity": false
}'

响应示例

JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "symbol": "QQQ.US",
    "time_range": "1Y",
    "strategy": "chandelier",
    "engine_version": "1.1.0",
    "venue_mode": "consolidated",
    "start_date": "2025-09-08",
    "end_date": "2026-09-04",
    "num_trades": 8,
    "win_rate": 50.0,
    "total_pnl_pct": 8.56,
    "annualized_pct": 8.66,
    "max_drawdown_pct": 11.12,
    "sharpe": 0.624,
    "profit_factor": 1.84,
    "buy_hold_pnl_pct": 24.2,
    "excess_return_pct": -15.64,
    "params": { "sma_period": 100, "atr_period": 14, "entry_mult": 2.0, "exit_mult": 3.0, "entry_mode": "chandelier", "trail_mode": "rolling", "...": "其余略" },
    "cost": {
      "commission_rate": 0.0,
      "min_commission": 0.0,
      "slippage_bps": 0.0,
      "initial_capital": 100000.0,
      "execute_on": "close"
    },
    "data_range": { "actual_start": "2025-09-08", "actual_end": "2026-09-04", "bars": 251, "truncated": false },
    "data_freshness": { "distribution_mode": "eod_only", "as_of": "2026-09-04", "delayed": true },
    "notes": [
      { "code": "no_cost_model", "level": "info", "message": "本次未计成本。实盘会有手续费与滑点…" }
    ],
    "trades": [{ "seq": 1, "entry_date": "2025-09-08", "entry_price": 578.87, "exit_date": "2025-10-10", "exit_price": 589.5, "pnl_pct": 1.8363363103978347, "exit_reason": "stop", "...": "其余略" }],
    "disclaimer": "数据与回测结果仅供研究参考,不构成任何投资建议。"
  }
}

示例取自真实调用,为便于阅读裁剪了数组长度。

可能的错误

  • 400参数不合法:日期格式、period 取值、批量标的数超上限等
  • 404标的或记录不存在
  • 429触发限流
  • 502上游数据源暂时不可用

在线试用

填好参数直接发一次真实请求。它会消耗你当前身份的额度,和线上调用完全一样。

还没发过请求。点上面的按钮试一次。

机读文档

接口的 OpenAPI 描述随服务一起发布,可以直接导入 Postman / Insomnia,或者用它生成客户端代码。那份文档里的限流说明同样由服务端套餐配置渲染,不会与本页对不上。

数据时效声明

当前分发模式: eod_only

当前提供 T+1 及更早的日线数据,盘中与实时数据暂未开放。

交易所对数据的对外转发有明确规则:T+1 及更早的收盘数据可以免费分发,实时与盘中数据需要额外授权。授权落实之前,我们宁可不提供,也不含糊其辞地给一份说不清来源的数据。授权到位后这里会改成延迟或实时,端点路径与字段一律不变。

数据已更新至 2026/09/04合并口径日线自 2024/07/01 起入库

每个行情响应都带 timeliness 字段,如实标注这批数据的时效 —— 能不能用于实时决策,看响应就知道,不必靠读文档猜。

数据口径随数据一起返回

每条行情都带 venue_mode。合并口径(consolidated)汇总全部交易场所,单交易所口径(single_venue)只有一家 —— 实测两者收盘价最大偏差 7.1%,单场成交量仅为合并量的 23%~34% 且随季度漂移,single_venue 因此一律拒绝进入回测。行情接口只返回合并口径;回测要取 2024-07 之前的美股历史时,会拼上主场常规时段重建口径(primary_session:收盘价取交易所官方收盘价,实测与合并口径逐日相等;开高低由主场分钟线重建,偏差 ≤0.03%;成交量为单场口径),并在结果里挂 mixed_session_source 把这件事说清楚。

标的库含已退市标的

退市标的照常可查,并标注 is_delisted。回测不做幸存者偏差过滤 —— 把退市公司剔掉,历史收益会凭空变好看。

平台没有下单能力

我们不对接任何券商实盘交易,接口里也不会出现下单、持仓、资金相关的端点。

免费开放

下面这些端点游客无需注册即可调用,按来源 IP 计额度。

可用端点

限流规则(游客档)

  • 报价30 次/分
  • K 线30 次/分
  • 分时不可用
  • 静态信息30 次/分
  • 标的搜索30 次/分
  • 批量查询10 次/分
  • 回测5 次/分
  • 参数优化不可用

每个类别各有一个独立计数桶,不共用。数字来自 GET /api/plans 的游客档,与定价页同源。

注册后可提高用量

  • 额度改按 API Key 计,不再与同一出口 IP 的其他人共享
  • 单端点、批量与回测额度提高到注册档,具体数字见上方额度表
  • 控制台可查每日调用量,回测记录可保存、分享

常见问题

命中本地库的历史 K 线与报价是毫秒级返回。本页顶部四格就是你这次打开页面时实测到的往返耗时,刷新一次即可自己复现。我们不写「小于 50 毫秒」这类没有测量依据的承诺。

立即开始使用

不需要任何凭证,复制右边这行命令就能拿到第一份数据。想要更高额度、调用统计与回测记录,用邮箱验证码注册一个账号即可,注册时自动签发 API Key。

cURL
curl -s "https://us2.ninequantai.com/v1/quote/AAPL.US"

以游客身份直接调用,按来源 IP 计额度。

联系我们

接入问题、额度需求、数据合作都可以直接写信。

技术支持

使用问题、Bug 反馈、API 接入咨询

support@ninequantai.com

商务合作

策略定制、数据合作、商务洽谈

business@ninequantai.com

微信咨询

公众号与客服微信正在申请中

待公布

我们通常会在 1-3 个工作日内回复您的邮件。前往联系页