# CFTC Commitment of Traders - Weekly Futures Positioning (`wiry_kingdom/cftc-cot-report-tracker`) Actor

Weekly CFTC Commitment of Traders (COT) reports. Shows commercial, non-commercial (hedge fund speculator), and retail positioning in oil, gold, S\&P 500, bonds, currencies, grains futures. Free official CFTC API. For commodities traders, macro investors, FX traders, gold bugs.

- **URL**: https://apify.com/wiry\_kingdom/cftc-cot-report-tracker.md
- **Developed by:** [Mohieldin Mohamed](https://apify.com/wiry_kingdom) (community)
- **Categories:** Business, Developer tools
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## CFTC Commitment of Traders Tracker

**Every Friday, the CFTC publishes the weekly positioning of every commercial, speculator, and retail trader in every major US futures market — from crude oil and gold to S&P 500 e-minis, Treasury bonds, bitcoin micro futures, and wheat. This actor pulls that data structured, with week-over-week deltas and signal classification, from the free CFTC API.**

### What you actually get

Real gold futures positioning extracted on April 7, 2026:

| Market | Open Interest | Speculator Net | Commercial Net | WoW Δ | Signal |
|--------|------:|------:|------:|------:|--------|
| GOLD - COMMODITY EXCHANGE | 550,487 | +153,868 | -192,465 | -6,828 | SPEC_LEANING_SHORT |
| MICRO GOLD | 57,230 | -13,177 | +6,107 | -86 | SPEC_LEANING_SHORT |

Each row includes:
- Report date, report week, market name, commodity code
- Open interest (total contracts)
- **Non-commercial** (speculator / hedge fund) long, short, spread, and NET positions
- **Commercial** (producer / hedger) long, short, and NET positions
- **Non-reportable** (small retail) long, short, NET positions
- Week-over-week changes for each category
- Number of traders in each category
- Computed **signal classification**: SPEC_BUILDING_LONGS, SPEC_UNWINDING_LONGS, SPEC_LEANING_LONG, SPEC_LEANING_SHORT, NEUTRAL

### Why COT data is one of the highest-ROI datasets in finance

COT has been published weekly since 1962. Every macro / commodities trading desk tracks it. When speculators go to extreme net-long, that often marks a top. When commercial hedgers flip to net-long, that often marks a bottom.

**Famous COT trades:**
- Gold 2011 top: speculator net long peaked at +300k contracts → 5-year bear market
- Oil 2020 bottom: commercial hedgers flipped to net long → 300% rally over 2 years
- S&P 2022 bottom: speculator net short reached extreme → 25% rally

Commercial products:
- **Bloomberg Terminal** COT function: $25k/yr
- **TradingView Premium**: $59.95/mo
- **Barchart COT Network**: $40-400/month
- **CoT Base**: $20-50/month
- **MrTopStep**: paid subscription

This actor delivers the same data (same source, same CFTC API) via pay-per-event pricing.

### Who this is for

- **Commodities traders** — gold, silver, copper, oil, nat gas, agricultural futures
- **Macro funds** — equity index futures, Treasury futures, currency positioning
- **FX traders** — EUR, JPY, GBP, AUD futures as FX sentiment proxies
- **Gold bugs** — weekly tracking of hedge fund gold positioning
- **Crypto traders** — CFTC covers bitcoin micro + ether futures since 2021
- **Farmers / food industry** — grain, livestock futures positioning
- **Quant researchers** — COT-based alpha factors are published in multiple academic papers

### How to use

1. Click **Try for free** (or **Start**)
2. Set **markets** as substring matches (e.g. `["GOLD", "WTI", "S&P 500", "BITCOIN"]`)
3. Set **sinceDate** to control lookback (empty = 90 days)
4. Set **maxReports** (default 100 rows)
5. Leave **computeDeltas: true** to get WoW deltas and signal classifications
6. Click **Start**

### Common market substring keywords

| Keyword | What it matches |
|---------|----------------|
| `GOLD` | Gold futures (full-size + micro) |
| `SILVER` | Silver futures |
| `WTI` | West Texas Intermediate crude oil |
| `BRENT` | Brent crude oil |
| `NATURAL GAS` | Natural gas futures |
| `S&P 500` | S&P 500 E-mini and micro E-mini |
| `NASDAQ` | Nasdaq-100 E-mini and micro |
| `RUSSELL 2000` | Russell 2000 mini |
| `DOW` | Dow e-mini |
| `ULTRA T-BOND` | Ultra Treasury bond |
| `10-YEAR` | 10-year Treasury note futures |
| `EURO FX` | EUR/USD futures |
| `JAPANESE YEN` | JPY/USD futures |
| `BRITISH POUND` | GBP/USD futures |
| `BITCOIN` | Bitcoin futures (and micro bitcoin) |
| `ETHER` | Ether futures |
| `WHEAT` | Wheat futures (multiple varieties) |
| `CORN` | Corn futures |
| `SOYBEAN` | Soybean futures |
| `LIVE CATTLE` | Live cattle futures |
| `COFFEE` | Coffee futures |

### Output

```json
{
    "reportDate": "2026-04-07",
    "reportWeek": "26-14",
    "marketName": "GOLD - COMMODITY EXCHANGE INC.",
    "commodityName": "GOLD",
    "openInterestAll": 550487,
    "noncommLongAll": 232500,
    "noncommShortAll": 78632,
    "noncommSpreadAll": 45230,
    "noncommNetAll": 153868,
    "commLongAll": 120050,
    "commShortAll": 312515,
    "commNetAll": -192465,
    "nonrepLongAll": 45280,
    "nonrepShortAll": 36450,
    "nonrepNetAll": 8830,
    "changeInOpenInterest": -8490,
    "changeNoncommLong": -4120,
    "changeNoncommShort": 2708,
    "tradersTotalAll": 295,
    "weekOverWeekDelta": -6828,
    "signal": "SPEC_LEANING_SHORT",
    "extractedAt": "2026-04-16T01:35:00.000Z"
}
````

### Pricing

- **Actor start**: $0.05 per run
- **Per report row**: $0.003 per market-week row

**Example costs:**

- Weekly pull of gold + oil + S\&P 500 COT data (3 markets × 4 weeks = 12 rows) → $0.09
- 6 months of all major markets (20 markets × 26 weeks = 520 rows) → $1.61
- Full CFTC COT historical pull (2015-present, ~10,000 rows) → $30

For comparison: TradingView Premium $59.95/month, Barchart COT Network $40-400/month.

### Tips

- **Schedule weekly runs every Friday at 4pm ET** to catch the fresh CFTC release
- **Use extreme spec net-long as contrarian sell signal** (well-documented top indicator)
- **Use extreme commercial net-long as contrarian buy signal**
- **Combine with the Stock Alpha Aggregator** for equity index futures: COT bearish on S\&P E-mini + bearish Form 4 insider activity = double-confirmation short
- **Pipe into a quant model** — COT positioning is a well-studied alpha factor

### Source

Official CFTC Socrata API: `https://publicreporting.cftc.gov/resource/jun7-fc8e.json`. Free, public, no key, no auth. CFTC Commission updates it every Friday afternoon with data through Tuesday of that week.

### License

MIT. CFTC data is public domain.

# Actor input Schema

## `markets` (type: `array`):

Filter to specific futures markets (e.g. \['GOLD', 'WTI', 'S\&P 500', 'EURO FX', 'BITCOIN', 'WHEAT', 'SILVER']). Substring match on CFTC market names. Empty = all markets.

## `sinceDate` (type: `string`):

Only return COT reports dated on or after this date. Empty = last 90 days (~12 weekly reports).

## `maxReports` (type: `integer`):

Cap on COT report rows returned (one row per market per week).

## `computeDeltas` (type: `boolean`):

For each market, compute the change in non-commercial (speculator) net positioning vs the previous week. Adds bullish/bearish labels.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy. CFTC's API is friendly to direct access.

## Actor input object example

```json
{
  "markets": [
    "GOLD",
    "WTI",
    "S&P 500"
  ],
  "sinceDate": "",
  "maxReports": 100,
  "computeDeltas": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "markets": [
        "GOLD",
        "WTI",
        "S&P 500"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("wiry_kingdom/cftc-cot-report-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "markets": [
        "GOLD",
        "WTI",
        "S&P 500",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("wiry_kingdom/cftc-cot-report-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "markets": [
    "GOLD",
    "WTI",
    "S&P 500"
  ]
}' |
apify call wiry_kingdom/cftc-cot-report-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=wiry_kingdom/cftc-cot-report-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CFTC Commitment of Traders - Weekly Futures Positioning",
        "description": "Weekly CFTC Commitment of Traders (COT) reports. Shows commercial, non-commercial (hedge fund speculator), and retail positioning in oil, gold, S&P 500, bonds, currencies, grains futures. Free official CFTC API. For commodities traders, macro investors, FX traders, gold bugs.",
        "version": "0.1",
        "x-build-id": "IAndcd4OaZobnPcrQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/wiry_kingdom~cftc-cot-report-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-wiry_kingdom-cftc-cot-report-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/wiry_kingdom~cftc-cot-report-tracker/runs": {
            "post": {
                "operationId": "runs-sync-wiry_kingdom-cftc-cot-report-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/wiry_kingdom~cftc-cot-report-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-wiry_kingdom-cftc-cot-report-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "markets": {
                        "title": "Markets to track (substring match)",
                        "type": "array",
                        "description": "Filter to specific futures markets (e.g. ['GOLD', 'WTI', 'S&P 500', 'EURO FX', 'BITCOIN', 'WHEAT', 'SILVER']). Substring match on CFTC market names. Empty = all markets.",
                        "default": [
                            "GOLD",
                            "WTI"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sinceDate": {
                        "title": "Since report date (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Only return COT reports dated on or after this date. Empty = last 90 days (~12 weekly reports).",
                        "default": ""
                    },
                    "maxReports": {
                        "title": "Max reports returned",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Cap on COT report rows returned (one row per market per week).",
                        "default": 100
                    },
                    "computeDeltas": {
                        "title": "Compute week-over-week position deltas",
                        "type": "boolean",
                        "description": "For each market, compute the change in non-commercial (speculator) net positioning vs the previous week. Adds bullish/bearish labels.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy. CFTC's API is friendly to direct access.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
