CFTC COT positioning screener API
One call for weekly Commitments of Traders positioning across 45 futures markets: large-speculator net, % of open interest, weekly change, 3-year percentile and crowded long or short flags.
The CFTC publishes who holds what in US futures every week. GET /futures/cot-screener turns that report into a screener an agent can read in one call: for each market, where large speculators sit today compared with the last three years, and which markets are crowded.
What you get per market
- Non-commercial (large speculator) positioning: long, short, net, net as a % of open interest, weekly change, and the 3-year min and max.
- 3-year percentile of the net position (the share of the last 156 weekly reports at or below today's), with a
crowded_longflag at or above the threshold (default 90) andcrowded_shortat or below 100 minus the threshold. - Commercial (hedger) net and its percentile, the size of this week's change versus the last 3 years, and whether the speculator net flipped sign.
The summary lists the crowded longs, crowded shorts, the five biggest weekly shifts (as a % of open interest) and any net flips, plus the time of the next release.
Markets (45)
Equity indexes ES, NQ, YM, RTY and VIX futures; Treasuries ZT, ZF, ZN, TN, ZB, UB and 3-month SOFR; energy CL, NG, RB, HO; metals GC, SI, HG, PL, PA; grains ZC, ZS, ZW, KE, ZM, ZL; livestock LE, HE, GF; softs KC, SB, CC, CT; FX 6E, 6J, 6B, 6C, 6A, 6S, 6M, 6N and the dollar index DX; crypto BTC and ETH (CME).
Examples
GET /futures/cot-screener?extreme=1
GET /futures/cot-screener?assetClass=metals,energy
GET /futures/cot-screener?symbols=GC,ES,6E,ZN&threshold=85
Trimmed real response on Nov 11, 2026 (report of Nov 3):
{
"reportDate": "2026-11-03",
"nextRelease": { "at": "2026-11-13T15:30:00-05:00" },
"summary": {
"crowdedShort": [
{ "symbol": "6E", "percentile3y": 0.6, "netPctOfOI": -18.01 },
{ "symbol": "ZN", "percentile3y": 7.7, "netPctOfOI": -16.18 }
]
},
"markets": [
{ "symbol": "GC", "nonCommercial": { "net": 179548, "netPctOfOI": 44.98,
"weeklyChange": -6903, "percentile3y": 22.4 }, "extreme": null }
]
}
Price and payment
$0.02 per call over x402, in USDC on Base or Solana. A bad parameter (an unknown symbol or asset class, or a threshold outside 50 to 99) gets a 400 before any payment. The route is also a tool called cot_screener on the remote MCP server. For one symbol inside a full pre-session view, the session brief also carries its COT positioning.
Timing and limits
COT positions are as of Tuesday and are published on Friday at 3:30 PM ET, later in holiday weeks; a government shutdown pauses them. The data is the CFTC legacy futures-only report, which is public domain. Crowded positioning is context, not a trade signal by itself, and nothing here is investment advice.
Try it free
Get a free API key (100 calls a month, no card), then pass it in the x-api-key header. This route uses 1 call of the monthly quota.
curl -X POST https://signals.incomefather.com/billing/free \
-H 'content-type: application/json' -d '{"email":"you@example.com"}'
curl -H "x-api-key: $TRADING_SIGNALS_API_KEY" \
"https://signals.incomefather.com/futures/cot-screener?extreme=1"
Agents that hold a wallet can skip the key entirely and pay per call over x402 (see x402 pay-per-call market data). Copy-paste code for curl, JavaScript, Python, MCP (Claude Desktop, Cursor, Cline), LangChain and the OpenAI Agents SDK is in gdietsch/trading-signals-examples.
More guides
- ES futures session brief API
- SEC insider buying API
- AI trade brief API for agents
- Solana token safety check API
- OFAC sanctions screening API for crypto addresses and names
- Wallet pay-readiness API for Base and Solana
- SEC 13F holdings API for fund portfolios and notable holders
- Token pre-trade check API for Solana and Base
- Treasury auction and yields API
- x402 pay-per-call market data