所有 API

股票指数 API 总览

通过 REST 或 MCP,获取 18 个指数的最新点位、前收盘价以及日线或 1 分钟历史数据。点位为十进制字符串。

首次请求

获取标普 500 的最新点位

curl --request GET \
  --url "https://api.narwhalapi.com/v1/indices/SPX/price" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"
响应示例
{
  "id": "SPX",
  "name": "S&P 500",
  "currency": "USD",
  "price": "7696.46",
  "previous_close": "7681.2",
  "change": "15.26",
  "change_percent": "0.2",
  "market_session": "open",
  "timestamp": "2026-10-29T18:38:00Z",
  "stale": false
}

端点

GET指数列表/v1/indices

列出我们提供价格的每一个指数,附带名称、地区和币种。

响应字段

  • indices对象数组

    我们提供价格的每一个指数,附带其 id、名称、地区和币种。


完整参考文档 →
GET获取指数价格/v1/indices/{id}/price

获取单个指数的最新点位,附带前收盘价和涨跌。

参数

  • id必填

    指数 id,例如 SPX、NDX 或 DJI。不区分大小写。

主要响应字段

  • id字符串

    指数代码,如 SPX。

  • name字符串

    指数的官方名称。

  • currency字符串

    指数的币种。波动率指数省略。

  • price字符串

    指数的最新点位,十进制字符串。

  • previous_close字符串

    上一交易日的收盘价。未知时省略。

  • change字符串

    price 减去 previous_close。与 previous_close 一同省略。

  • change_percent字符串

    涨跌幅百分比:1.5 表示 1.5%。与 change 一同省略。

  • market_session取值之一:open、closed

    指数在公布的交易时段内交易时为 open,否则为 closed。

  • timestamp日期时间

    价格有效的时间,UTC 时间,精确到整秒。

  • stale布尔值

    当指数处于开市状态且点位已超过 15 分钟未更新时为 true。已休市的指数不会被视为过期。


完整参考文档 →
GET获取多个指数价格/v1/indices/prices

一次调用最多获取 50 个指数的最新点位。

参数

  • ids必填

    以逗号分隔的 id,去重后最多 50 个。每个 id 的规则与单个价格路由相同。每个返回价格的 id 计一次调用。

响应字段

  • prices对象数组

    每个返回了价格的 id 对应一条记录,包含单个价格的各个字段。

  • errors对象数组

    未返回价格的 id,每个都带有代码 not_found。这些不收费。


完整参考文档 →
GET获取指数 K 线/v1/indices/{id}/bars

获取单个指数的日线或 1 分钟 K 线,按时间从旧到新排列。

参数

  • id必填

    指数 id,例如 SPX、NDX 或 DJI。不区分大小写。

  • interval可选

    1d(每个交易日一根 K 线,以其所属日期标注)或 1m(一分钟 K 线,保留 12 个月)。其他取值返回 400 invalid_interval。

  • start可选

    起始 K 线。1d:日期(YYYY-MM-DD),含该日;省略则表示最早的一根 K 线。1m:UTC 时间(YYYY-MM-DDTHH:MM:SSZ,或日期,表示 UTC 00:00),含该时刻;省略则表示 end 之前一天。

  • end可选

    结束 K 线。1d:日期,含该日;省略则表示最近一个已完成的交易日。1m:UTC 时间,不含该时刻;省略则表示当前时间,或 start 之后五天。1m 的 start 与 end 之间最多相隔 5 天(400 range_too_large)。

  • cursor可选

    上一页的 next_cursor,参数须保持一致。

响应字段

  • id字符串

    指数代码,如 SPX。

  • currency字符串

    指数的币种。波动率指数省略。

  • start字符串

    仅在范围起点被向后移动时才会返回。

  • end字符串

    不再返回,因为所有账户的价格都是实时的。

  • bars对象数组

    K 线数据,按时间从旧到新排列。每根包含 timestamp、open、high、low 和 close,不含成交量。

  • next_cursor字符串

    回传该值即可读取下一页。最后一页为 null。


完整参考文档 →

使用场景

回填完整历史

分页读取全部历史,保存到文件,中断后可继续。

阅读指南 →

每日数据拉取

每天运行一次小脚本,把结果追加到 CSV 文件。

阅读指南 →

缓存与 429 错误

Cache responses by data type and tell a rate limit (429) from an empty credit balance (402).

阅读指南 →

覆盖范围

  • S&P 500SPX · 美国 · USD
  • Nasdaq-100NDX · 美国 · USD
  • 道琼斯工业平均指数DJI · 美国 · USD
  • 罗素 2000RUT · 美国 · USD
  • 纳斯达克综合指数COMP · 美国 · USD
  • Cboe 波动率指数VIX · 美国
  • MSCI 世界指数MXWLD · 全球 · USD
  • MSCI 新兴市场指数MXEF · 全球 · USD
  • Cboe 英国 100 指数BUK100P · UK · GBP
  • Cboe 德国 40 指数BDE40P · 欧洲 · EUR
  • Cboe 欧洲 50 指数BEP50P · 欧洲 · EUR
  • Cboe 欧元区 50 指数BEZ50P · 欧洲 · EUR
显示全部 18 个指数
  • Cboe 法国 40 指数BFR40P · 欧洲 · EUR
  • PHLX 半导体板块指数SOX · 美国 · USD
  • KBW 纳斯达克银行指数BKX · 美国 · USD
  • Cboe 原油 ETF 波动率指数OVX · 美国
  • Cboe 黄金 ETF 波动率指数GVZ · 美国
  • PHLX 黄金/白银板块指数XAU · 美国 · USD

相关 API

期货数据接口总览

通过 REST 和 MCP 获取 29 种期货的价格和历史数据

探索 API →

面向上市股票的股票数据接口

通过 REST 和 MCP 获取上市股票价格和公司数据

探索 API →

价格

每月 10 美元免费额度,之后每 1,000 次调用 2 美元起。

查看价格 →

常见问题

可以获取哪些指数?

18 个指数:5 个美国基准指数、3 个波动率指数、2 个 MSCI 全球指数、5 个 Cboe 欧洲指数和 3 个美国板块指数。id 是标准代码,如 SPX、NDX 或 DJI,不区分大小写。

点位会附带相对昨日的变化吗?

是的。指数的日线历史数据就绪后,价格会带有 previous_close、change 和 change_percent。change_percent 为 1.5 表示 1.5%。前收盘价未知时,这三个字段都会省略。

为什么波动率指数没有币种?

VIX、OVX 和 GVZ 衡量的是预期波动率,而不是货币金额,因此其返回结果没有币种。

点位是实时的还是延迟的?

所有账户的点位都是实时的。市场休市时,API 会返回最后点位,并将 market_session 设为 closed。

可以获取多长的历史数据?

历史从我们持有数据的时间开始:标普 500 始于 2023 年 2 月。所有账户都可获得我们持有的全部日线。1 分钟线覆盖最近 12 个月,每次请求最多 5 天。

费用是多少?

调用按每 1,000 次 $2 的价格,从预付额度 中扣费。每个账户在前 12 个月内,每月都有 $10 的免费额度。