Free COT Data API
CFTC Commitment of Traders positioning for 360+ markets with a current report, 760+ in the archive, as clean JSON. Weekly: the CFTC releases it Friday evening US time, and it's here the same evening. History starts in 2010; the free API returns the last six months.
Endpoints
/api/markets/cotLatest COT report for all tracked markets.
/api/markets/cot/{slug}?from=YYYY-MM-DD&to=YYYY-MM-DDWeekly reports for one market, newest first. History starts in 2010; the free API returns the last six months.
Rate Limit
10 requests a minute without a key, 30 with a free key
CORS
Open (*)
Auth
Optional X-API-Key header
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));Limits
- Weekly: released Friday evening US time, here the same evening.
- Each report covers positions as of the Tuesday of that week (the standard CFTC lag).
- Financial futures use the Traders in Financial Futures (TFF) groups; commodities use the disaggregated groups (reportType says which).
- Not every market has history back to 2010; it starts when the CFTC started reporting the market.
Main features
- Weekly CFTC Commitment of Traders positioning for 360+ futures markets with a current report: currencies, indices, crypto, metals, energy, bonds and agriculture.
- Long and short for each trader group: dealers, asset managers, leveraged funds and other reportables in financial futures; producers, swap dealers, managed money and other reportables in commodities.
- History starts in 2010 for the major markets (the free API returns the last six months), from the CFTC's own files, updated the Friday evening the CFTC publishes.
- One row per market and report date; a revised report replaces the row.
Example
Request
curl "https://xoomar.com/api/markets/cot/gold"
Response, live at 2026-10-15 17:11 UTC, trimmed
{
"data": [
{
"reportDate": "2026-10-06",
"openInterest": 396109,
"dealerLong": 18860,
"dealerShort": 38361,
"assetMgrLong": 14604,
"assetMgrShort": 239630,
"levFundLong": 127101,
"levFundShort": 16114,
"otherLong": 118302,
"otherShort": 18954,
"nonreptLong": 50464,
"nonreptShort": 16272
},
{
"reportDate": "2026-09-29",
"openInterest": 406456,
"dealerLong": 18200,
"dealerShort": 39463,
"assetMgrLong": 14835,
"assetMgrShort": 244539,
"levFundLong": 131711,
"levFundShort": 11393,
"otherLong": 118025,
"otherShort": 19711,
"nonreptLong": 48784,
"nonreptShort": 16449
}
],
"updatedAt": "2026-10-15T17:11:58.645Z",
"source": "xoomar.com",
"docs": "https://xoomar.com/markets/api",
"license": "https://xoomar.com/terms",
"attribution": "Credit XOOMAR with a link to the dataset page on xoomar.com when you republish this data",
"meta": {
"source": "CFTC",
"sourceAttribution": "Commitments of Traders data: CFTC.",
"notice": "10 requests a minute without a key, 30 with a free key. Get a free key at https://xoomar.com/signup?utm_source=api, register your app at https://xoomar.com/developers/register?utm_source=api, and credit the data as \"Data: XOOMAR\" together with the sourceAttribution line."
}
}Each row is one weekly report. Gold is a commodity, so levFundLong and levFundShort hold managed money; the net position is long minus short.
What people build with it
Positioning charts
Chart the leveraged fund or managed money net position against its own history, market by market.
FX research
Pull the weekly asset manager and leveraged fund positions for each currency future into your own models.
Group comparisons
Every row carries each trader group, so you can see where leveraged funds and asset managers take opposite sides.
Crypto futures positioning
CME bitcoin and ether futures are in the same feed as every other market.
Fair use
No key needed to start. A 429 response carries a Retry-After header in seconds; cache responses on your side where you can. Need more volume? Write to info@xoomar.com.
Response shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs, license, attribution, meta }. In meta, source names who publishes the data and sourceAttribution is the credit line to show with it. 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 |
| reportType | string | tff (financial futures) or disagg (commodities) |
| sortRank | number | Display order within the group |
| reportDate | string (date) | CFTC report Tuesday, YYYY-MM-DD |
| openInterest | number | null | Total open interest in contracts |
| dealerLong / dealerShort | number | null | Dealers and intermediaries (tff); producers, merchants, processors and users (disagg) |
| assetMgrLong / assetMgrShort | number | null | Asset managers and institutional investors (tff); swap dealers (disagg) |
| levFundLong / levFundShort | number | null | Leveraged funds (tff); managed money (disagg) |
| otherLong / otherShort | number | null | Other reportable positions |
| nonreptLong / nonreptShort | number | null | Non-reportable (small trader) positions |
The hub endpoint returns the latest report for every market. The per-market endpoint /api/markets/cot/{slug} returns the weekly history, newest first; from and to select the window. History starts in 2010 for the majors; the free API returns the last six months.
Numeric fields typed string in the table carry exact decimals; parse them with your language's decimal type. No key needed to start: 10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history. A 429 response carries a Retry-After header in seconds. Credit XOOMAR with a link to the dataset page when you republish the data; the data terms are on the terms page.
A free account key raises the limit; send it in an X-API-Key header.
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.