KeyVex
Macroeconomic & markets

CFTC Commitments of Traders

Returns CFTC Commitments of Traders (COT) report rows — weekly aggregated futures + options-on-futures positioning by trader class. The COT report is the macro positioning dataset for U.S.

EndpointGET /v1/cftc-cot-reports
SourceCFTC COT
Authx-api-key — a free key works

What it returns

One record per result. Fields (from a live response):

Filters

idDirect doc lookup ({contract_code}-{YYYY-MM-DD}). Fastest path.
cftc_contract_market_codeExact CFTC contract code (e.g., '13874A' = E-mini S&P 500, '088691' = Gold, '067651' = Crude Oil WTI).
contract_market_nameCase-insensitive substring on contract_market_name (e.g., 'S&P 500', 'GOLD', 'CRUDE OIL', 'JAPANESE YEN'). Client-side filter.
commodity_nameExact commodity name from CFTC's catalog (e.g., 'S&P 500 STOCK INDEX', 'GOLD', 'CRUDE OIL', 'EURO FX').
sinceInclusive lower bound on report_date (YYYY-MM-DD).
untilInclusive upper bound on report_date (YYYY-MM-DD).
latest_onlyWhen true, returns only the most recent report row per contract (one row per contract instead of weekly history).
sort_bySort key. Default: report_date.
sort_orderDefault: desc.
limitMax records. Default 50, max 500.

Example request

curl "https://api.keyvex.com/v1/cftc-cot-reports?limit=1" \
  -H "x-api-key: YOUR_KEY"

Response

{
  "results": [
    {
      "comm_long": 5625,
      "commodity_code": "865",
      "traders_noncomm_short": 5,
      "nonrept_short": 0,
      "contract_market_name": "GULF # 6 FUEL OIL CRACK",
      "pct_comm_long": 66.2,
      "market_and_exchange_names": "GULF # 6 FUEL OIL CRACK - NEW YORK MERCANTILE EXCHANGE",
      "traders_noncomm_long": 5,
      "open_interest": 8500,
      "pct_comm_short": 62.6,
      "source_url": "https://www.cftc.gov/dea/futures/deacmesf.htm",
      "pct_noncomm_short": 14.4,
      "report_week": "2026 Report Week 23",
      "change_noncomm_short": 705,
      "traders_total": 30,
      "change_comm_short": -420,
      "noncomm_spread": 1950,
      "comm_short": 5325,
      "change_nonrept_long": -5,
      "change_nonrept_short": 0,
      "conc_net_le_4_long": 34.7,
      "id": "86565A-2026-06-09",
      "pct_nonrept_short": 0,
      "commodity_name": "FUEL OIL/CRUDE OIL",
      "report_date": "2026-06-09",
      "nonrept_long": 0,
      "noncomm_short": 1225,
      "change_noncomm_long": 345,
      "change_comm_long": -55,
      "pct_noncomm_long": 10.9,
      "change_open_interest": 85,
      "conc_net_le_8_long": 47.3,
      "market_code": "NYME",
      "nonrept_net": 0,
      "noncomm_net": -300,
      "conc_net_le_4_short": 32.9,
      "cftc_contract_market_code": "86565A",
      "conc_net_le_8_short": 49.8,
      "pct_nonrept_long": 0,
      "traders_comm_short": 15,
      "noncomm_long": 925,
      "traders_comm_long": 15,
      "comm_net"
      …
    }
  ],
  "count": 1,
  "has_more": true
}

Example questions you can answer

Related datasets

Query CFTC Commitments of Traders from your AI

Hand any AI your key + the OpenAPI spec and it can pull this dataset directly. Free key = full data, 60 requests/day.

Get a free key OpenAPI spec → REST docs →
← All 60+ datasets