CFTC COT Report Scraper - Futures Positioning Data
Pricing
Pay per event
CFTC COT Report Scraper - Futures Positioning Data
Pull the CFTC Commitments of Traders (COT) report as structured rows. Covers legacy, disaggregated, and financial-futures variants. Filter by commodity, market code, and date range. Long, short, spread positions per trader category plus open interest and trader counts.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
CFTC COT Report Scraper — Commitments of Traders Weekly Positions
Extracts weekly Commitments of Traders (COT) reports from the U.S. Commodity Futures Trading Commission. Returns structured rows — long, short, and spread positions by trader category — for over 680,000 historical records across energy, agriculture, metals, FX, and equity-index markets.
Bloomberg charges for this. The CFTC publishes it for free on a Socrata API that nobody made an Apify actor for, until now.
CFTC COT Report Scraper Features
- Extracts all four report variants — Legacy Combined, Legacy Futures Only, Disaggregated Combined, and Traders in Financial Futures (TIFF)
- Returns 30+ fields per row — long, short, spread positions for commercial, non-commercial, and non-reportable traders, plus open interest, trader counts, and top-4 concentration metrics
- Filters by commodity — case-insensitive contains match on commodity_name (e.g.
WHEAT,CRUDE OIL,GOLD) - Filters by date range — pull just last week's data or the full history back to 2006
- Filters by market code — target a specific CFTC contract market code if you know exactly what you're after
- No proxies needed — pure API, no browser, no rate-limit gymnastics required. The CFTC wants you to have this data.
- Coerces numeric types — all position and open interest fields arrive as strings from the Socrata API; this actor returns them as numbers
Who Uses COT Data?
- Commodity traders — track non-commercial positioning to gauge speculative sentiment in crude oil, wheat, gold, and natural gas
- Macro newsletter writers — automate weekly COT updates instead of manually downloading CFTC CSV files every Friday
- Quant researchers — build positioning datasets for backtesting momentum and contrarian strategies across futures markets
- Prop shops — monitor commercial vs. non-commercial positioning divergence as a leading indicator
- FX traders — pull currency futures positioning (EUR, GBP, JPY, AUD) from the TIFF report to track institutional flows
- Data engineers — feed structured COT rows into a warehouse, replacing the unreliable CFTC CSV download workflow
How It Works
- Select a report type — Legacy Combined covers most commodity and FX futures. Disaggregated splits producers and swap dealers. TIFF covers financial futures and currencies.
- Set optional filters — commodity name, date range, and market code narrow the results. Leave them blank for everything.
- The scraper hits the CFTC's public Socrata API, paginates through the results at 1,000 rows per request, and coerces all numeric fields from strings to numbers before saving.
- Results arrive as structured JSON rows in the Apify dataset. Each row is one market-and-week observation.
CFTC COT Input Configuration
{"reportType": "legacy_combined","commodityName": "CRUDE OIL","reportDateFrom": "2024-01-01","reportDateTo": "2025-12-31","maxItems": 100,"sp_intended_usage": "Commodity positioning analysis","sp_improvement_suggestions": ""}
| Field | Type | Default | Description |
|---|---|---|---|
reportType | string | legacy_combined | Report variant: legacy_combined, legacy_futures_only, disaggregated_combined, or financial |
commodityName | string | (empty) | Case-insensitive commodity name filter (e.g. WHEAT, GOLD, CRUDE OIL) |
marketCode | string | (empty) | CFTC contract market code filter (e.g. 001612) |
reportDateFrom | string | (empty) | Start date in YYYY-MM-DD format |
reportDateTo | string | (empty) | End date in YYYY-MM-DD format |
socrataAppToken | string | (empty) | Optional free Socrata app token for higher rate limits |
maxItems | integer | 10 | Maximum rows to return. 0 = unlimited |
Report Type Reference
| Value | Coverage |
|---|---|
legacy_combined | Legacy Futures + Options Combined — the most-cited weekly report |
legacy_futures_only | Legacy Futures Only — excludes options positions |
disaggregated_combined | Disaggregated: splits commercial into producers/merchants/swap dealers/managed money |
financial | Traders in Financial Futures (TIFF) — financial instruments and currencies |
CFTC COT Output Fields
{"market_and_exchange_names": "CRUDE OIL, LIGHT SWEET-WTI - NEW YORK MERCANTILE EXCHANGE","report_date": "2025-05-06","report_week": "2025 Report Week 18","contract_market_name": "CRUDE OIL, LIGHT SWEET","cftc_contract_market_code": "067651","cftc_market_code": "NYM","cftc_region_code": "NYC","cftc_commodity_code": "067","commodity_name": "CRUDE OIL","report_type": "legacy_combined","open_interest_all": 1802413,"noncomm_positions_long_all": 399214,"noncomm_positions_short_all": 241380,"noncomm_positions_spread_all": 72881,"comm_positions_long_all": 1207844,"comm_positions_short_all": 1364788,"tot_rept_positions_long_all": 1679939,"tot_rept_positions_short_all": 1679048,"nonrept_positions_long_all": 122474,"nonrept_positions_short_all": 123365,"change_in_open_interest_all": -34892,"pct_of_oi_noncomm_long_all": 22.1,"pct_of_oi_noncomm_short_all": 13.4,"pct_of_oi_comm_long_all": 67.0,"pct_of_oi_comm_short_all": 75.7,"traders_tot_all": 482,"traders_noncomm_long_all": 152,"traders_noncomm_short_all": 106,"traders_comm_long_all": 67,"traders_comm_short_all": 78,"conc_gross_le_4_tdr_long_all": 10.2,"conc_gross_le_4_tdr_short_all": 11.4}
| Field | Type | Description |
|---|---|---|
market_and_exchange_names | string | Full CFTC market and exchange name |
report_date | string | Report date (YYYY-MM-DD) |
report_week | string | YYYY Report Week WW label |
contract_market_name | string | Contract market name |
cftc_contract_market_code | string | CFTC contract market code |
cftc_market_code | string | CFTC market code |
cftc_region_code | string | CFTC region code |
cftc_commodity_code | string | CFTC commodity code |
commodity_name | string | Commodity name |
report_type | string | Report variant identifier |
open_interest_all | number | Total open interest |
noncomm_positions_long_all | number | Non-commercial long positions |
noncomm_positions_short_all | number | Non-commercial short positions |
noncomm_positions_spread_all | number | Non-commercial spread positions |
comm_positions_long_all | number | Commercial long positions |
comm_positions_short_all | number | Commercial short positions |
tot_rept_positions_long_all | number | Total reportable long positions |
tot_rept_positions_short_all | number | Total reportable short positions |
nonrept_positions_long_all | number | Non-reportable long positions |
nonrept_positions_short_all | number | Non-reportable short positions |
change_in_open_interest_all | number | Week-over-week change in open interest |
pct_of_oi_noncomm_long_all | number | Non-commercial long as % of open interest |
pct_of_oi_noncomm_short_all | number | Non-commercial short as % of open interest |
pct_of_oi_comm_long_all | number | Commercial long as % of open interest |
pct_of_oi_comm_short_all | number | Commercial short as % of open interest |
traders_tot_all | number | Total reportable traders |
traders_noncomm_long_all | number | Non-commercial long traders |
traders_noncomm_short_all | number | Non-commercial short traders |
traders_comm_long_all | number | Commercial long traders |
traders_comm_short_all | number | Commercial short traders |
conc_gross_le_4_tdr_long_all | number | Top-4 traders long concentration (%) |
conc_gross_le_4_tdr_short_all | number | Top-4 traders short concentration (%) |
🔍 FAQ
How do I scrape CFTC COT data with Apify? CFTC COT Report Scraper pulls directly from the CFTC's public Socrata API. Configure a report type, set any filters, and run — results are in the dataset within seconds.
What data can I get from the CFTC Commitments of Traders report? CFTC COT Report Scraper returns long, short, and spread positions broken out by trader category (commercial, non-commercial, non-reportable) plus open interest, week-over-week changes, trader counts, and top-4 concentration percentages. That's essentially everything the CFTC publishes for each market and week.
Does CFTC COT Report Scraper need proxies? No. The CFTC public reporting API is open to anyone with an internet connection. No proxies, no browser, no authentication required.
How far back does the COT data go? The Socrata API covers legacy reports back to 2006, with over 270,000 rows in the Legacy Combined dataset alone.
Can I get currency futures positioning with this actor?
Yes. Use reportType: "financial" to pull the Traders in Financial Futures (TIFF) report, which covers EUR, GBP, JPY, AUD, CAD, and other currency futures alongside equity index and Treasury markets.
How much does it cost to run? CFTC COT Report Scraper charges $0.10 per run plus $0.001 per row. Pulling the most recent week of legacy data (roughly 300 markets) costs about $0.40 total.
Need More Features?
Need custom fields, additional date granularity, or a combined multi-report run? File an issue or get in touch.
Why Use CFTC COT Report Scraper?
- Free data source — the CFTC publishes this weekly; the scraper just makes it programmable without writing your own API client
- Clean output — all numeric fields are coerced from strings to numbers, so your downstream pipeline doesn't have to parse "1802413" into a real number
- No proxies, no browser — pure API call with a 100ms courtesy delay, which is more polite than most things that hit government servers