Free COT Data API
CFTC Commitment of Traders positioning data for 90+ markets. History back to 2010. The CFTC publishes this weekly as CSVs; we parse and serve it as clean JSON for free. Others charge $30-100/month for the same data.
Endpoints
/api/markets/cotLatest COT report for all tracked markets.
/api/markets/cot/{slug}?from=YYYY-MM-DD&to=YYYY-MM-DDHistorical weekly reports for a specific market.
Rate Limit
30 req/min/IP
CORS
Open (*)
Auth
None
Examples
curl
curl https://xoomar.com/api/markets/cot/euro-fx
Python
import requests
r = requests.get("https://xoomar.com/api/markets/cot/euro-fx")
for report in r.json()["data"][:5]:
net = report["levFundLong"] - report["levFundShort"]
print(f"{report['reportDate']}: lev funds net {net:+,}")JavaScript
const res = await fetch("https://xoomar.com/api/markets/cot/euro-fx");
const { data } = await res.json();
console.table(data.slice(0, 5));Honest Limits
- Data updates weekly (released Friday evening US time, we fetch within hours).
- Report covers positions as of Tuesday of that week (standard CFTC lag).
- We parse the Traders in Financial Futures (TFF) report. Disaggregated data available for some markets.
- Not all markets have complete history back to 2010; depends on when the CFTC started reporting them.
Main Features
- ✓Weekly CFTC Commitment of Traders positioning for 700+ futures markets: currencies, indices, crypto, metals, energy, bonds, and agriculture.
- ✓Traders in Financial Futures (TFF) breakdown: dealer, asset manager, leveraged funds, and other reportables, long and short for each.
- ✓History back to 2010 for major markets, parsed from official CFTC files within hours of the Friday release.
- ✓COT Index (current net position as a percentile of its 1-year range) precomputed on our market pages from this same data.
- ✓Byte-identical with the CFTC source: we verified our euro-fx row matches the official FinFutWk.txt field for field.
How It Works
The CFTC publishes every Friday at 3:30pm ET; we parse and serve it the same evening.
Friday ingestion
A job downloads the official TFF and disaggregated CSV files from cftc.gov after the release, with a Saturday retry in case of publishing delays.
Classification
Each market is classified into one of eight groups with a word-boundary ruleset (so NIKKEI YEN DENOM lands in indices, not currencies) and majors are pinned with sort ranks.
Upsert and history
Rows are upserted by market and report date, making the pipeline idempotent. History reaches back to 2010 for the majors.
Real Example
Request
curl "https://xoomar.com/api/markets/cot/gold"
Response (captured live, trimmed)
{
"data": [
{
"id": 204055,
"marketId": "bc1534ae-2128-42ee-94a1-55c374c825ba",
"reportDate": "2026-06-02",
"openInterest": 326052,
"dealerLong": 10275,
"dealerShort": 30429,
"assetMgrLong": 213696,
"assetMgrShort": 16071,
"levFundLong": 17188,
"levFundShort": 12456,
"otherLong": 12888,
"otherShort": 9993,
"nonreptLong": 312721,
"nonreptShort": 43656,
"raw": {
"col_0": "GOLD - COMMODITY EXCHANGE INC.",
"col_1": "260602",
"col_2": "2026-06-02",
"col_3": "088691",
"col_4": "CMX",
"col_5": "01",
"col_6": "088",
"col_7": "326052",
"col_8": "10275",
"col_9": "30429",
"col_10": "27505",
"col_11": "213696",
"col_12": "16071",
"col_13": "129367",
"col_14": "17188",
"col_15": "12456",
"col_16": "76729",
"col_17": "12888",
"col_18": "9993",
"col_19": "282396",
"col_20": "312721",
"col_21": "43656",
"col_22": "13331",Each row is one weekly report. Compute net positioning as levFundLong minus levFundShort; asset managers are the slower institutional money.
What People Build With This
Smart money tracking
Leveraged fund net positioning at a 1-year extreme has historically marked crowded trades in FX and metals. The COT Index makes extremes comparable across markets.
FX bias models
Many systematic FX traders only take longs when asset managers are net long. One call per week per pair feeds the model.
Divergence research
When leveraged funds and asset managers position against each other, volatility tends to follow. Both camps are in every row.
Crypto institutional read
CME Bitcoin COT is one of the few windows into regulated institutional crypto positioning, and it is in here alongside everything else.
Pricing and Fair Use
Free. No API key, no signup, no credit card. We rate limit per IP to keep the service fast for everyone; a 429 response carries a Retry-After header telling you exactly when to retry. Cache responses on your side where you can. If you are building something that needs guaranteed volume, contact us first instead of hammering the endpoint.
Response Shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs }. The data field is an array of records with these fields:
| Field | Type | Description |
|---|---|---|
| slug | string | Market slug for URLs (euro-fx, gold...) |
| name | string | CFTC contract market name |
| group | string | currencies, indices, crypto, metals, energy, bonds, agriculture, other |
| reportDate | string (date) | CFTC report Tuesday, YYYY-MM-DD |
| openInterest | number | null | Total open interest in contracts |
| dealerLong / dealerShort | number | null | Dealer/intermediary positions |
| assetMgrLong / assetMgrShort | number | null | Asset manager and institutional positions |
| levFundLong / levFundShort | number | null | Leveraged funds (hedge fund) positions |
The hub endpoint returns the latest report for every market. The per-market endpoint /api/markets/cot/{slug} returns full weekly history, newest first, back to 2010 for majors.
Numeric values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication, no API key, no signup. Attribution is appreciated: xoomar.com/markets.
Frequently Asked Questions
What is COT data?
How do I read leveraged fund positioning?
When does new data appear?
What markets are covered?
Can I backtest with this data?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.