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

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