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
Live from the data
Loading the latest numbers…
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 - Report:
report(legacy),variant(combined: futures and options together) - 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'); a needle of 3 characters or fewer matches WHOLE WORDS ('GAS' finds 'NAT GAS', not 'GASOLINE'). Applied client-side, within a bounded window. |
| 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. report_date, open_interest, noncomm_net, comm_net. |
| 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://publicreporting.cftc.gov/resource/jun7-fc8e.json?cftc_contract_market_code=86565A&report_date_as_yyyy_mm_dd=2026-06-09T00%3A00%3A00.000",
"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",
"report": "legacy",
"variant": "combined",
"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. A free key works: 60 requests/day, one year of history.
Get a free key OpenAPI spec → REST docs →Not investment advice. KeyVex is a data publisher: nothing on this site or in API responses is investment, legal, tax, or compliance advice (Terms §8).