# Commitments of Traders API
> Live Commitments of Traders (COT) futures-positioning data, served straight from the US CFTC's public reporting API — no key, nothing cached. Every Friday the Commodity Futures Trading Commission publishes who is positioned how in every major futures market — currencies, stock indices, energy, metals, grains — and traders watch it closely as a sentiment and crowding signal. The report endpoint takes a market name (Euro FX, Gold, Crude Oil, S&P 500, Bitcoin) and returns the latest weekly report: how many long and short contracts are held by commercials (the hedgers), by non-commercials (the large speculators) and by small non-reportable traders, the net position of each group, the total open interest, each group's share of open interest, the week-over-week change and the number of traders — Gold shows commercials net short while large speculators run net long. The markets endpoint searches the hundreds of reported markets so you can find the exact name. The history endpoint returns the weekly path of positioning for a market. This is the positioning-and-sentiment layer for any futures, forex, commodity or macro trading app. Live from the CFTC, nothing stored. Distinct from price and open-interest APIs — this is who is long and short, by trader category. 4 endpoints.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/cot-api/..."
```

## Pricing
- **Free** (Free) — 9,000 calls/Mo, 3 req/s
- **Starter** ($11/Mo) — 115,000 calls/Mo, 8 req/s
- **Pro** ($29/Mo) — 580,000 calls/Mo, 15 req/s
- **Scale** ($67/Mo) — 2,950,000 calls/Mo, 30 req/s

## Endpoints

### COT

#### `GET /v1/history` — Weekly positioning history

**Parameters:**
- `market` (query, required, string) — Market name Example: `GOLD`
- `weeks` (query, optional, string) — How many weeks (1-104) Example: `12`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cot-api/v1/history?market=GOLD&weeks=12"
```

**Response:**
```json
{
    "data": {
        "weeks": 12,
        "market": "GOLD - COMMODITY EXCHANGE INC.",
        "history": [
            {
                "report_date": "2026-06-02",
                "open_interest": 326052,
                "commercial_net": -206345,
                "noncommercial_net": 176020,
                "nonreportable_net": 30325
            },
            {
                "report_date": "2026-05-26",
                "open_interest": 353489,
                "commercial_net": -185766,
                "noncommercial_net": 154260,
                "nonreportable_net": 31506
            },
            {
                "report_date": "2026-05-19",
                "open_interest": 379325,
                "commercial_net": -191629,
                "noncommercial_net": 159833,
                "nonreportable_net": 31796
            },
            {
                "report_date": "2026-05-12",
                "open_interest": 376496,
                "commercial_net": -210258,
                "noncommercial_net": 171622,
                "nonreportable_net": 38636
            },
            {
                "report_date": "2026-05-05",
                "open_interest": 367932,
                "commercial_net": -198935,
                "noncommercial_net": 163303,
                "nonreportable_net": 35632
            },
            {
                "report_date": "2026-04-28",
                "open_interest": 369530,
                "commercial_net": -194813,
                "
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/markets` — Search reported markets

**Parameters:**
- `q` (query, optional, string) — Search query Example: `BITCOIN`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cot-api/v1/markets?q=BITCOIN"
```

**Response:**
```json
{
    "data": {
        "count": 11,
        "query": "BITCOIN",
        "markets": [
            {
                "market": "BITCOIN - CHICAGO MERCANTILE EXCHANGE",
                "commodity": "BITCOIN"
            },
            {
                "market": "BITCOIN CASH PERP STYLE - COINBASE DERIVATIVES, LLC",
                "commodity": "BITCOIN"
            },
            {
                "market": "BITCOIN CASH PERP STYLE - COINBASE DERIVATIVES, LLC",
                "commodity": "OTHER CRYPTO/DIGITAL ASSET (NON-MAJOR)"
            },
            {
                "market": "BITCOIN-USD - CBOE FUTURES EXCHANGE",
                "commodity": "BITCOIN"
            },
            {
                "market": "MICRO BITCOIN - CHICAGO MERCANTILE EXCHANGE",
                "commodity": "BITCOIN"
            },
            {
                "market": "MICRO BITCOIN - CHICAGO MERCANTILE EXCHANGE",
                "commodity": "OTHER CRYPTO/DIGITAL ASSET (NON-MAJOR)"
            },
            {
                "market": "Nano Bitcoin - COINBASE DERIVATIVES, LLC",
                "commodity": "BITCOIN"
            },
            {
                "market": "Nano Bitcoin - COINBASE DERIVATIVES, LLC",
                "commodity": "OTHER CRYPTO/DIGITAL ASSET (NON-MAJOR)"
            },
            {
                "market": "Nano Bitcoin - LMX LABS LLC",
                "commodity": "BITCOIN"
            },
            {
                "market": "NANO BITCOIN PERP STYLE - COINB
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/report` — Latest COT report for a market

**Parameters:**
- `market` (query, required, string) — Market name (Euro FX, Gold, Crude Oil, S&P 500) Example: `GOLD`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cot-api/v1/report?market=GOLD"
```

**Response:**
```json
{
    "data": {
        "market": "GOLD - COMMODITY EXCHANGE INC.",
        "commodity": "GOLD",
        "commercial": {
            "net": -206345,
            "long": 53851,
            "short": 260196,
            "traders": 44,
            "pct_oi_long": 16.5
        },
        "report_date": "2026-06-02",
        "open_interest": 326052,
        "other_matches": [
            "MICRO GOLD - COMMODITY EXCHANGE INC."
        ],
        "total_traders": 258,
        "weekly_change": {
            "open_interest": -27437,
            "commercial_long": -20790,
            "commercial_short": -211,
            "noncommercial_long": 5392,
            "noncommercial_short": -16368
        },
        "non_commercial": {
            "net": 176020,
            "long": 206096,
            "short": 30076,
            "spread": 22449,
            "traders": 153,
            "pct_oi_long": 63.2
        },
        "non_reportable": {
            "net": 30325,
            "long": 43656,
            "short": 13331
        }
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:18.292Z",
        "request_id": "eaa5e217-1736-4c84-bc53-6e18fe90c4a0"
    },
    "status": "ok",
    "message": "Report retrieved successfully",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cot-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "source": "US CFTC public reporting — legacy futures-only (live)",
        "service": "cot-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/report": "Latest COT report for a market (market=EURO FX): positions by trader category, net, change.",
            "GET /v1/history": "Weekly positioning history for a market (market=, weeks up to 104).",
            "GET /v1/markets": "Search the reported markets (q=GOLD) to find exact names."
        },
        "description": "Live Commitments of Traders (COT) futures-positioning data from the US CFTC: for any market (Euro FX, Gold, Crude Oil, S&P 500, Bitcoin), the latest weekly report of long and short contracts held by commercials, non-commercials (large speculators) and small non-reportable traders, with each group's net position and share of open interest, total open interest, week-over-week change and trader counts; a market search; and weekly positioning history. Live, no key, nothing stored. Distinct from price and open-interest APIs — this is who is long and short, by trader category.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:18.664Z",
        "request_id": "1f8f76a7-edce-4aee-bfb2-b90bbc247810"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/cot-api
OpenAPI spec: https://www.oanor.com/api/cot-api/openapi.json
