所有 API

期货数据接口总览

通过 REST 或 MCP,获取 29 种期货的最新价格以及日线或 1 分钟历史数据。每个序列都是近月合约,因此价格在换月日会出现跳动。

首次请求

获取 WTI 原油的最新价格

curl --request GET \
  --url "https://api.narwhalapi.com/v1/futures/CL/price" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"
响应示例
{
  "id": "CL",
  "name": "WTI Crude Oil",
  "commodity_key": "crude-oil",
  "benchmark": "wti",
  "exchange": "NYMEX",
  "exchange_mic": "XNYM",
  "currency": "USD",
  "unit": "usd_per_barrel",
  "unit_key": "barrel",
  "price": "102.11",
  "market_session": "open",
  "timestamp": "2026-10-29T18:38:00Z",
  "stale": false
}

获取日线

curl --request GET \
  --url "https://api.narwhalapi.com/v1/futures/ES/bars?interval=1d&start=2017-04-03&end=2017-04-03" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"
响应示例
{
  "id": "ES",
  "currency": "USD",
  "bars": [
    {
      "timestamp": "2017-04-03T00:00:00Z",
      "open": "2357.5",
      "high": "2363.25",
      "low": "2340",
      "close": "2354.5"
    }
  ],
  "next_cursor": null
}

端点

GET期货列表/v1/futures

列出我们提供价格的每一种期货合约,附带名称、类别、交易所、币种和单位。

响应字段

  • futures对象数组

    我们提供价格的每一种合约,附带其 id、名称、类别、交易所、币种和单位。


完整参考文档 →
GET获取期货价格/v1/futures/{id}/price

获取单个合约的最新价格。

参数

  • id必填

    期货 id:交易所的根代码,例如 CL、GC、ES 或 6E。不区分大小写。序列为连续近月合约,未做调整:每个换月日都有跳空。

主要响应字段

  • id字符串

    根代码,如 CL。

  • name字符串

    合约的官方名称。

  • commodity_key字符串

    该商品的稳定键,在现货、期货、预测和实物价格中相同,例如 gold 或 crude-oil。可用它关联这些数据。股指、利率和货币期货省略此项。

  • benchmark取值之一:wti、brent、urals、dubai

    原油基准:wti、brent、urals 或 dubai。仅原油返回;没有此项的原油行表示整体原油。

  • exchange字符串

    合约交易的交易所。

  • exchange_mic字符串

    交易所的 ISO 10383 市场标识代码,例如 XNYM。

  • currency字符串

    价格的币种。

  • unit字符串

    价格的计量单位,如 usd_per_barrel 或 index_point。

  • unit_key字符串

    单位的规范小写名称,在所有使用该单位的接口中保持一致,例如 barrel、troy_ounce、mmbtu 或 tonne。unit 保留数据源的原始写法。

  • price_scale字符串

    仅在价格以辅币单位报价时返回。将 price 乘以该值即可得到以 currency 计价的价格:0.01 表示 price 以美分计,因此 unit 为 cent_per_bushel 时,price 为 450 即每蒲式耳 4.50 USD。


完整参考文档 →
GET获取多个期货价格/v1/futures/prices

一次调用最多获取 50 个合约的最新价格。

参数

  • ids必填

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

响应字段

  • prices对象数组

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

  • errors对象数组

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


完整参考文档 →
GET获取期货 K 线/v1/futures/{id}/bars

获取单个合约的日线或 1 分钟 K 线,按时间从旧到新排列。价格为未经调整的近月合约价格,因此在换月日会出现跳动。

参数

  • id必填

    期货 id:交易所的根代码,例如 CL、GC、ES 或 6E。不区分大小写。序列为连续近月合约,未做调整:每个换月日都有跳空。

  • 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字符串

    根代码,如 CL。

  • commodity_key字符串

    该商品的稳定键,在现货、期货、预测和实物价格中相同,例如 gold 或 crude-oil。可用它关联这些数据。股指、利率和货币期货省略此项。

  • benchmark取值之一:wti、brent、urals、dubai

    原油基准:wti、brent、urals 或 dubai。仅原油返回;没有此项的原油行表示整体原油。

  • currency字符串

    价格的币种。

  • price_scale字符串

    仅在价格以辅币单位报价时返回。将 price 乘以该值即可得到以 currency 计价的价格:0.01 表示 price 以美分计,因此 unit 为 cent_per_bushel 时,price 为 450 即每蒲式耳 4.50 USD。

  • 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).

阅读指南 →

覆盖范围

大宗商品期货

  • WTI 原油CL · NYMEX · 每桶美元
  • 亨利港天然气NG · NYMEX · 每 MMBtu 的美元数
  • RBOB 汽油RB · NYMEX · 每加仑美元
  • 纽约港超低硫柴油HO · NYMEX · 每加仑美元
  • 黄金GC · COMEX · 每金衡盎司美元
  • 白银SI · COMEX · 每金衡盎司美元
  • 铂金PL · NYMEX · 每金衡盎司美元
  • 铜HG · COMEX · 每磅美元
  • 玉米ZC · CBOT · 美分每蒲式耳
  • 芝加哥软红冬小麦ZW · CBOT · 美分每蒲式耳
  • 大豆ZS · CBOT · 美分每蒲式耳
  • 活牛LE · CME · 美分每磅
  • 瘦肉猪HE · CME · 美分每磅

股指期货

  • E-mini 标普 500ES · CME · 指数点
  • E-mini 纳斯达克 100NQ · CME · 指数点
  • E-mini 道琼斯工业平均指数YM · CBOT · 指数点
  • E-mini 罗素 2000RTY · CME · 指数点

国债期货

  • 2 年期美国国债ZT · CBOT · 占面值的百分比
  • 5 年期美国国债ZF · CBOT · 占面值的百分比
  • 10 年期美国国债ZN · CBOT · 占面值的百分比
  • 美国国债(长期债券)ZB · CBOT · 占面值的百分比

货币期货

  • 欧元外汇6E · CME · 每欧元的美元数
  • 英镑6B · CME · 每磅美元
  • 日元6J · CME · 每日元的美元数
  • 澳元6A · CME · 每澳元的美元数
  • 加元6C · CME · 每加元的美元数
  • 瑞士法郎6S · CME · 每瑞士法郎的美元数
  • 新西兰元6N · CME · 每新西兰元的美元数
  • 墨西哥比索6M · CME · 每墨西哥比索的美元数

相关 API

覆盖原油、金属、谷物与畜牧的商品期货 API

13 种大宗商品期货的价格和历史数据

探索 API →

股票指数 API 总览

通过 REST 和 MCP 获取 18 个指数的点位和历史数据

探索 API →

现货金属价格 API

黄金、白银、铂金和钯金的现货价格,以及 WTI、布伦特和铜的参考价格。

探索 API →

价格

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

查看价格 →

常见问题

可以获取哪些期货?

29 种期货:13 种大宗商品、4 种股指期货、4 种国债期货和 8 种货币期货。id 是交易所的根代码,如 CL、GC、ES、ZN 或 6E,不区分大小写。列表接口会返回全部合约。

为什么价格在某些日子会跳动?

每个序列都是近月合约,首尾相接,不做调整。近月合约更换时,序列会转到下一个合约,价格也随之跳到该合约的价格。CL 在 2026 年 10 月 19 日跳动了约 4 美元。价格和 K 线如实反映成交时的这一跳动,因此不要把它当作一天内的涨跌。这也是期货价格没有前收盘价或涨跌幅的原因:跨越换月后,涨跌幅会是错误的。

价格是实时的还是延迟的?

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

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

日线可追溯到 2017 年 4 月,所有账户都可获得完整历史。1 分钟线覆盖最近 12 个月,每次请求最多 5 天。

有成交量吗?

没有。K 线包含开盘价、最高价、最低价和收盘价。期货价格没有成交量、前收盘价或涨跌幅。

如何一次获取多个价格?

调用 /v1/futures/prices,在 ids 中最多传入 50 个 id,例如 ids=CL,GC,ES。每个返回了价格的 id 计为一次调用。未知的 id 会出现在 errors 中,不计入调用次数。

费用是多少?

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