β‘ Commodity Futures Tracker β Energy, Metals, Grains
Pricing
from $100.00 / 1,000 futures records
β‘ Commodity Futures Tracker β Energy, Metals, Grains
Track global commodity futures: WTI crude, Brent, gold, silver, copper, corn, wheat, soybeans, coffee, sugar, plus index and crypto futures. Bloomberg commodity data alternative for hedge funds, traders, miners. Pay-per-result.
Pricing
from $100.00 / 1,000 futures records
Rating
0.0
(0)
Developer
NexGenData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
β‘ Commodity Futures Tracker β Energy, Metals, Grains, Livestock & Softs
The Bloomberg commodities terminal, without the $24,000-a-year terminal. Live front-month futures prices for the entire global commodity complex β WTI and Brent crude, Henry Hub natural gas, gold, silver, copper, platinum, palladium, corn, wheat, soybeans, oats, soybean meal/oil, live cattle, feeder cattle, lean hogs, coffee, sugar, cocoa, cotton, orange juice, lumber β plus E-mini equity-index futures and CME-listed Bitcoin and Ether futures. One actor. One JSON shape. One pay-per-result API call away.
Built for commodity hedge funds, mining and energy companies, agricultural producers, prop trading firms, ETF issuers, and macro analysts who need clean, machine-readable futures data without paying Refinitiv or Bloomberg for a terminal seat they barely use.
Why this exists
Commodity data is locked behind some of the most expensive financial information products on the market:
- Bloomberg Terminal β $24,000+ per user per year. Industry standard, but you pay for hundreds of features you'll never touch.
- Refinitiv Eikon / Workspace β $22,000+ per user per year. Similar story.
- Reuters Eikon β bundled into LSEG Workspace at similar pricing.
- TradingEconomics β $99+/month per user for API access, throttled and rate-limited.
- Investing.com Pro β $14.99+/month, but the data is in HTML that has to be scraped behind a paywall and consent banner.
- CME Group DataMine β historical and intraday futures data, priced per exchange/asset and aimed at vendors, not end users.
Meanwhile, every quant researcher, commodity desk analyst, and hedge fund engineer ends up scraping Yahoo Finance or the CME website anyway. This actor does the scraping properly, at industrial scale, on a pay-per-record basis β so you stop maintaining brittle CSV downloaders and you stop overpaying Bloomberg for the 0.1% of features you actually use.
Who this is for
- Commodity hedge funds β daily mark-to-market on a multi-asset book without buying a Bloomberg seat for every junior analyst.
- Mining companies & energy producers β hedge program monitoring (gold, silver, copper, WTI, Brent, natural gas) against your physical exposure.
- Agricultural traders & cooperatives β corn, wheat, soybean complex (beans/meal/oil), oats, rice, livestock β front-month prices, weekly/monthly/YTD context.
- Macro & cross-asset desks β equity-index futures alongside commodities and FX, all in one dataset for cross-asset regime analysis.
- ETF issuers & product structurers β commodity ETF NAV benchmarking (USO, GLD, SLV, DBA, DBC, PDBC, USCI, BNO).
- Quant researchers β programmatic, deterministic schema for factor research, backtesting, and signal generation.
- AI / agent builders β feed the dataset into an MCP server, a RAG store, a Slack digest, or a custom GPT for natural-language commodity Q&A.
What you get β schema
Every row in the dataset has the following fields:
| Field | Type | Example | Meaning |
|---|---|---|---|
symbol | string | GC=F | Yahoo Finance ticker (=F suffix). |
commodity_name | string | Gold | Human-readable commodity name. |
category | string | Metals | One of Energy, Metals, Grains, Livestock, Softs, Indices, Crypto. |
contract_month | string | null | Jun 2026 | Front-month contract delivery month (when Yahoo exposes expireDate). |
price | number | 2384.5 | Last traded / settlement price. |
currency | string | USD | Quote currency. |
unit | string | per troy ounce | Unit the price is quoted in (per barrel, per bushel, per pound, etc.). |
change_pct_1d | number | null | 0.42 | % change vs prior session. |
change_pct_1w | number | null | 1.85 | % change vs 7 days ago. |
change_pct_1m | number | null | -3.20 | % change vs 30 days ago. |
change_pct_ytd | number | null | 12.40 | % change vs first observation of current year. |
volume | integer | null | 218450 | Volume on the latest session. |
open_interest | integer | null | 412300 | Open interest (when Yahoo's quote endpoint returns it). |
52w_high | number | null | 2450.8 | Highest close in the trailing 52 weeks. |
52w_low | number | null | 1810.4 | Lowest close in the trailing 52 weeks. |
as_of_date | string | 2026-05-11 | Observation date (ISOβ8601). |
exchange | string | null | NYM | Exchange code returned by Yahoo (CME/NYMEX/COMEX/ICE/CBOT). |
instrument_type | string | FUTURE | Always FUTURE. |
short_name | string | null | Gold Jun 26 | Yahoo's short instrument name. |
data_source | string | Yahoo Finance β v8 chart API (futures) | Provenance. |
Input
{"symbols": ["GC=F", "CL=F", "HG=F", "ZC=F", "ES=F"],"limit": 5}
| Input | Type | Default | Notes |
|---|---|---|---|
symbols | array of strings | [] | Specific Yahoo Finance futures tickers. Pass any =F ticker β overrides the categories filter when non-empty. |
categories | array of strings | ["Energy", "Metals", "Grains", "Livestock", "Softs"] | Curated-universe filter when symbols is empty. |
include_indices | boolean | false | Adds ES=F, NQ=F, YM=F, RTY=F to the curated pull. |
include_crypto_futures | boolean | false | Adds BTC=F, ETH=F to the curated pull. |
limit | integer | 0 (no limit) | Max records to emit. Capped at 500. |
If symbols is non-empty it wins β the other filters are ignored and we fetch exactly what you asked for. Tickers we don't recognise still get fetched (and emitted with category: "Unknown").
Curated commodity universe
Out of the box, the actor knows about ~30 of the most-traded global futures contracts:
- Energy (5):
CL=FWTI Crude,BZ=FBrent,NG=FNatural Gas,HO=FHeating Oil,RB=FRBOB Gasoline - Metals (5):
GC=FGold,SI=FSilver,HG=FCopper,PL=FPlatinum,PA=FPalladium - Grains (7):
ZC=FCorn,ZW=FWheat,ZS=FSoybeans,ZO=FOats,ZR=FRough Rice,ZM=FSoybean Meal,ZL=FSoybean Oil - Livestock (3):
LE=FLive Cattle,GF=FFeeder Cattle,HE=FLean Hogs - Softs (6):
KC=FCoffee,SB=FSugar #11,CC=FCocoa,CT=FCotton,OJ=FOrange Juice,LBR=FLumber - Index futures (4, opt-in):
ES=FE-mini S&P 500,NQ=FE-mini Nasdaq-100,YM=FE-mini Dow,RTY=FE-mini Russell 2000 - Crypto futures (2, opt-in):
BTC=FCME Bitcoin Futures,ETH=FCME Ether Futures
You can also pass any other Yahoo Finance =F ticker we haven't curated β the actor still resolves price, 52w range, and changes; only the friendly commodity_name / category / unit will fall back to defaults.
How it works under the hood
- Primary source β Yahoo Finance v8 chart API (
query1.finance.yahoo.com/v8/finance/chart/<symbol>?range=1y&interval=1d). One call per contract returns the full 1-year daily OHLCV plus ametablock with exchange, currency, and pre-computed 52-week highs/lows. - Open-interest enrichment via Yahoo's
v7/finance/quoteendpoint, batched 25 symbols per request. This is the only place Yahoo exposesopenInterestandexpireDatefor futures. - Concurrency: symbols are fetched in parallel, capped at 6 concurrent requests so we never hammer Yahoo.
- Fallback β stockanalysis.com for the handful of contracts where Yahoo occasionally times out (gold, silver, crude, brent, nat gas, copper). Light HTML regex extract β just enough to recover a price.
- Schema is deterministic β every record has the same keys, every numeric field is either a number or
null. No surprises in your data pipeline.
Output example
{"symbol": "GC=F","commodity_name": "Gold","category": "Metals","contract_month": "Jun 2026","price": 2384.5,"currency": "USD","unit": "per troy ounce","change_pct_1d": 0.42,"change_pct_1w": 1.85,"change_pct_1m": -3.20,"change_pct_ytd": 12.40,"volume": 218450,"open_interest": 412300,"52w_high": 2450.8,"52w_low": 1810.4,"as_of_date": "2026-05-11","exchange": "NYM","instrument_type": "FUTURE","short_name": "Gold Jun 26","data_source": "Yahoo Finance β v8 chart API (futures)"}
Pricing β pay per record, not per terminal seat
This actor uses Apify's Pay-Per-Event model:
- $0.01 per actor start (covers the run cost itself)
- $0.10 per futures contract record returned, with full price + change panel + 52w range + open interest
A daily 30-contract snapshot across Energy + Metals + Grains + Softs costs $0.01 + 30 Γ $0.10 = $3.01 per run, or about $66/month if you run it once a day. That's roughly 0.27% of a Bloomberg seat.
You only pay for records that actually return a price β failed lookups are skipped, not billed.
Use cases & integration recipes
1. Daily commodity hedge-fund P&L mark
Schedule the actor once at 5:00pm New York time, pull the full Energy/Metals/Grains/Softs panel (~26 contracts), wire price into your risk engine alongside your physical positions. ~$2.61/run, ~$57/month.
2. Mining company hedge program monitoring
Schedule daily on GC=F, SI=F, HG=F, PL=F, PA=F. Drop the price + change_pct_1d + 52w_high / 52w_low into a Slack digest for the treasury team. ~$0.51/run.
3. Ag co-op pre-market briefing
Schedule pre-open (6:00am Chicago) on ZC=F, ZW=F, ZS=F, ZM=F, ZL=F, LE=F, GF=F, HE=F. Feed into a daily PDF that goes to producer members. Pairs with our nexgendata/etf-holdings-tracker for DBA / DBC ETF context.
4. Cross-asset macro dashboard
Pull commodities + index futures + Treasury yields (nexgendata/treasury-yields-bonds) into a single dashboard. Read regime shifts off curve inversion + commodity moves together.
5. ETF NAV / iNAV benchmarking
ETF issuers running USO / UNG / GLD / SLV / DBA / DBC: pull underlying futures, weight by basket, compare vs published NAV for tracking-error analysis.
How we compare
| Capability | This actor | Bloomberg Terminal | Refinitiv Eikon | Reuters Eikon | TradingEconomics | Investing.com Pro |
|---|---|---|---|---|---|---|
| Front-month futures price | β | β | β | β | β | β |
| Programmatic JSON API | β | Limited (BLPAPI) | Limited (Datastream) | Limited | β (throttled) | β |
| 52-week range + changes | β | β | β | β | β | β |
| Open interest | β (best effort) | β | β | β | Limited | β |
| Multi-asset (commodities + indices + crypto) | β | β | β | β | Partial | Partial |
| Pay-per-record | β | β ($24k/yr seat) | β ($22k/yr seat) | β | β ($99+/mo) | β ($14.99/mo) |
| Self-serve / no sales call | β | β | β | β | β | β |
| Deploy as MCP / agent tool | β | β | β | β | β | β |
Related NexGenData actors
Pair this actor with our other finance / macro tools for a complete market-data stack:
nexgendata/treasury-yields-bondsβ US Treasury yield curve (1M to 30Y), 2s10s spread, curve-inversion flag. The macro complement to commodity moves.nexgendata/finance-mcp-serverβ Model Context Protocol server exposing real-time stock/ETF/futures lookups to Claude, ChatGPT, and any MCP client.nexgendata/finviz-stock-screenerβ Screen 9,000+ stocks on 100+ technical/fundamental filters. Pair with commodity prices to trade producers vs underlying.nexgendata/etf-holdings-trackerβ Commodity-ETF holdings (USO, GLD, SLV, DBA, DBC) for tracking-error analysis vs underlying futures.nexgendata/asx-australia-stock-screenerβ Australian mining-heavy equity universe (BHP, RIO, FMG, NST). Trade producers when commodity prices move.nexgendata/jse-southafrica-stock-screenerβ Johannesburg Stock Exchange screener; commodity-heavy index (gold, platinum, diamonds, coal).
FAQ
Q: How fresh is the data? A: Yahoo Finance's chart API serves end-of-session / 15-minute-delayed prices for most CME futures. Intraday accuracy is good enough for daily marks, dashboards, and digests; for sub-minute tick data you'll still need CME DataMine or a paid vendor.
Q: Why Yahoo Finance and not the CME API directly?
A: CME's official API requires a paid data licence and is priced for institutional vendors. Yahoo Finance pulls from the same source, ships JSON, and is the de-facto endpoint used by every Python yfinance script. We probe stockanalysis.com as a fallback for the handful of contracts Yahoo sometimes drops.
Q: Are the prices in cents or dollars?
A: We pass through Yahoo's raw quote β that means grains (ZC=F, ZW=F, ZS=F, ZO=F), soybean oil (ZL=F), cotton (CT=F), coffee (KC=F), sugar (SB=F), OJ (OJ=F), live cattle (LE=F), feeder cattle (GF=F), and lean hogs (HE=F) are quoted in cents per their respective unit; everything else in dollars. The unit field tells you exactly what scale you're looking at.
Q: Can I pass my own list of =F tickers?
A: Yes β fill in symbols with any Yahoo Finance futures ticker. Tickers outside our curated universe get emitted with category: "Unknown" but full price/change/range data.
Q: Does the actor work for back-month / deferred contracts?
A: Yahoo only exposes the continuous front-month under <sym>=F. For deferred months you'd need CME DataMine or Refinitiv. This is a limitation of the upstream data source, not the actor.
Q: Can I run this as an MCP server for Claude or ChatGPT?
A: Yes β pair it with nexgendata/finance-mcp-server, or wrap a thin MCP server around the Apify dataset endpoint. We have a tutorial β ask in Apify console.
Quick start
curl -X POST "https://api.apify.com/v2/acts/nexgendata~commodity-futures-tracker/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"symbols": ["GC=F", "CL=F", "HG=F", "ZC=F"],"limit": 4}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("nexgendata/commodity-futures-tracker").call(run_input={"categories": ["Energy", "Metals"],"include_indices": True,"limit": 20,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["symbol"], item["price"], item["change_pct_1d"])
Support & affiliate
Built and maintained by NexGenData. We run a fleet of 130+ production-grade data actors on Apify covering finance, real estate, e-commerce, lead generation, and macro.
Try Apify free (1-month platform credit when you sign up via this link, and you'll be helping fund the next NexGenData actor): π https://apify.com/nexgendata?fpr=2ayu9b