Use Case

CFTC Positioning API

Structured JSON access to the weekly Commitments of Traders data — smart-money positioning across major contracts with week-over-week position changes.

Why not just parse the raw CFTC files?

You can. The CFTC publishes the raw COT files every Friday as text and Excel downloads. But parsing them into usable JSON requires handling multiple report formats (legacy, disaggregated, and Traders in Financial Futures), reconciling contract names across reports, computing week-over-week deltas, and tracking historical time series. Most developers who need COT data end up building a mini ETL pipeline. BullrunData wraps that work behind a REST endpoint.

List available contracts

GET /api/v1/institutional/cftc/contracts returns every contract covered by the Disaggregated (commodities and agriculture) and TFF (financial futures) reports — with contract name, exchange, and report type (disaggregated or tff). The curated legacy 5-contract summary is exposed separately at /api/v1/institutional/cftc.

curl -H "X-API-Key: brd_your_key" \ https://api.bullrundata.com/api/v1/institutional/cftc/contracts

Get positioning for a specific contract

GET /api/v1/institutional/cftc/positioning?contract=... returns the current positioning for the requested contract, structured by trader category with week-over-week deltas.

curl -H "X-API-Key: brd_your_key" \ "https://api.bullrundata.com/api/v1/institutional/cftc/positioning?contract=GOLD" # Response (shape, abbreviated) { "timestamp": "2026-07-13T18:00:00.000000", "filter": "GOLD", "signal": "BULLISH", "description": "Smart-money (managed money / leveraged funds) is net long across returned contracts", "source": "Commitments of Traders (public)", "count": 1, "positions": [ { "contract": "GOLD - COMMODITY EXCHANGE INC.", "exchange": "GOLD - COMMODITY EXCHANGE INC.", "report_type": "disaggregated", "report_date": "2026-07-08", "open_interest": 512340, "smart_money": { "label": "managed_money", "long": 245680, "short": 42310, "net": 203370, "bias": "LONG" }, "breakdown": { "producer_merchant": { "long": 34200, "short": 249240, "net": -215040 }, "swap_dealers": { "long": 82100, "short": 71430, "net": 10670 }, "managed_money": { "long": 245680, "short": 42310, "net": 203370 }, "other_reportables": { "long": 25600, "short": 13930, "net": 11670 }, "non_reportables": { "long": 124760, "short": 156130, "net": -31370 } }, "changes_wow": { "managed_money_long": 8420, "managed_money_short": -1150, "swap_dealers_long": -320, "swap_dealers_short": 940, "producer_merchant_long": 210, "producer_merchant_short": 10410, "open_interest": 6800 } } ] }

Curated 5-contract summary

GET /api/v1/institutional/cftc returns a curated view of five headline contracts (S&P 500, 10-year Treasury, gold, WTI crude, U.S. dollar index) using the legacy non-commercial bucket — the format most traders reference in weekly market notes.

Common integrations

  • Extreme-positioning alerts: configure a webhook to fire when managed-money net positioning in a contract exceeds the top or bottom 5% of the trailing 3-year range — a classic contrarian signal.
  • Sentiment overlays: combine COT positioning with price and volume to build a composite sentiment score for asset allocation.
  • Weekly newsletter automation: pull Friday's report at 5 PM ET, format the deltas, and email subscribers automatically.
  • MCP for AI agents: the cftc_positioning_detail and cftc_contracts_list MCP tools let an AI agent query positioning during a conversation about a specific market.

Related resources

Access all 360+ CFTC contracts

Free tier includes CFTC endpoints. No credit card required.