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.
Endpoint
GET /v1/cftc-cot-reportsSourceCFTC COT
Authx-api-key — a free key works
What it returns
One record per result. Fields (from a live response):
- Identity —
contract_market_name,commodity_name - Dates —
report_date,scraped_at - The trade / event —
commodity_code,market_code,cftc_contract_market_code,region_code - Amounts —
traders_total - Provenance —
source_url,report_week - Details —
comm_long,traders_noncomm_short,nonrept_short,pct_comm_long,market_and_exchange_names,traders_noncomm_long,open_interest,pct_comm_short,pct_noncomm_short,change_noncomm_short,change_comm_short,noncomm_spread,comm_short,change_nonrept_long,change_nonrept_short,conc_net_le_4_long,id,pct_nonrept_short,nonrept_long,noncomm_short,change_noncomm_long,change_comm_long,pct_noncomm_long,change_open_interest,conc_net_le_8_long,nonrept_net,noncomm_net,conc_net_le_4_short,conc_net_le_8_short,pct_nonrept_long,traders_comm_short,noncomm_long,traders_comm_long,comm_net
Filters
| id | Direct doc lookup ({contract_code}-{YYYY-MM-DD}). Fastest path. |
| cftc_contract_market_code | Exact CFTC contract code (e.g., '13874A' = E-mini S&P 500, '088691' = Gold, '067651' = Crude Oil WTI). |
| contract_market_name | Case-insensitive substring on contract_market_name (e.g., 'S&P 500', 'GOLD', 'CRUDE OIL', 'JAPANESE YEN'). Client-side filter. |
| commodity_name | Exact commodity name from CFTC's catalog (e.g., 'S&P 500 STOCK INDEX', 'GOLD', 'CRUDE OIL', 'EURO FX'). |
| since | Inclusive lower bound on report_date (YYYY-MM-DD). |
| until | Inclusive upper bound on report_date (YYYY-MM-DD). |
| latest_only | When true, returns only the most recent report row per contract (one row per contract instead of weekly history). |
| sort_by | Sort key. Default: report_date. |
| sort_order | Default: desc. |
| limit | Max 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
- Weekly futures positioning for a commodity.
- Net long/short by trader category over time.
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 →