CFTC COT Report Scraper - Futures Positioning Data avatar

CFTC COT Report Scraper - Futures Positioning Data

Pricing

Pay per event

Go to Apify Store
CFTC COT Report Scraper - Futures Positioning Data

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

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. Select a report type — Legacy Combined covers most commodity and FX futures. Disaggregated splits producers and swap dealers. TIFF covers financial futures and currencies.
  2. Set optional filters — commodity name, date range, and market code narrow the results. Leave them blank for everything.
  3. 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.
  4. 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": ""
}
FieldTypeDefaultDescription
reportTypestringlegacy_combinedReport variant: legacy_combined, legacy_futures_only, disaggregated_combined, or financial
commodityNamestring(empty)Case-insensitive commodity name filter (e.g. WHEAT, GOLD, CRUDE OIL)
marketCodestring(empty)CFTC contract market code filter (e.g. 001612)
reportDateFromstring(empty)Start date in YYYY-MM-DD format
reportDateTostring(empty)End date in YYYY-MM-DD format
socrataAppTokenstring(empty)Optional free Socrata app token for higher rate limits
maxItemsinteger10Maximum rows to return. 0 = unlimited

Report Type Reference

ValueCoverage
legacy_combinedLegacy Futures + Options Combined — the most-cited weekly report
legacy_futures_onlyLegacy Futures Only — excludes options positions
disaggregated_combinedDisaggregated: splits commercial into producers/merchants/swap dealers/managed money
financialTraders 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
}
FieldTypeDescription
market_and_exchange_namesstringFull CFTC market and exchange name
report_datestringReport date (YYYY-MM-DD)
report_weekstringYYYY Report Week WW label
contract_market_namestringContract market name
cftc_contract_market_codestringCFTC contract market code
cftc_market_codestringCFTC market code
cftc_region_codestringCFTC region code
cftc_commodity_codestringCFTC commodity code
commodity_namestringCommodity name
report_typestringReport variant identifier
open_interest_allnumberTotal open interest
noncomm_positions_long_allnumberNon-commercial long positions
noncomm_positions_short_allnumberNon-commercial short positions
noncomm_positions_spread_allnumberNon-commercial spread positions
comm_positions_long_allnumberCommercial long positions
comm_positions_short_allnumberCommercial short positions
tot_rept_positions_long_allnumberTotal reportable long positions
tot_rept_positions_short_allnumberTotal reportable short positions
nonrept_positions_long_allnumberNon-reportable long positions
nonrept_positions_short_allnumberNon-reportable short positions
change_in_open_interest_allnumberWeek-over-week change in open interest
pct_of_oi_noncomm_long_allnumberNon-commercial long as % of open interest
pct_of_oi_noncomm_short_allnumberNon-commercial short as % of open interest
pct_of_oi_comm_long_allnumberCommercial long as % of open interest
pct_of_oi_comm_short_allnumberCommercial short as % of open interest
traders_tot_allnumberTotal reportable traders
traders_noncomm_long_allnumberNon-commercial long traders
traders_noncomm_short_allnumberNon-commercial short traders
traders_comm_long_allnumberCommercial long traders
traders_comm_short_allnumberCommercial short traders
conc_gross_le_4_tdr_long_allnumberTop-4 traders long concentration (%)
conc_gross_le_4_tdr_short_allnumberTop-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