Futures Roll Calendar & Front-Month API (CME) avatar

Futures Roll Calendar & Front-Month API (CME)

Pricing

from $7.00 / 1,000 contract results

Go to Apify Store
Futures Roll Calendar & Front-Month API (CME)

Futures Roll Calendar & Front-Month API (CME)

Current front-month contract, roll date, last trading day, first notice day, tick value and broker symbol formats for ES, NQ, CL, GC, ZN, 6E and 20+ CME futures. Deterministic, no scraping, built for trading bots and AI agents.

Pricing

from $7.00 / 1,000 contract results

Rating

0.0

(0)

Developer

Patrick

Patrick

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Share

Which futures contract should my bot trade today, and when do I roll? This Actor answers that for ES, NQ, CL, GC, ZN, 6E and 20+ other CME Group futures. It returns the active contract, next contract, roll date, last trading day, first notice day, tick value, and symbol formats ready for CME, TradingView, NinjaTrader and Interactive Brokers.

Everything is computed from the exchanges' published expiration rules and US exchange holidays. There is no scraping, no third-party data feed and no API key, so runs are fast, cheap and reproducible. Past dates work too, which makes it useful for backtests.

What you get per symbol

FieldExample (ES, as of 2026-10-20)
activeContract.codeESZ6, the contract to trade now
activeContract.rollDate2026-12-14, the CME equity roll date
activeContract.lastTradingDay2026-12-18
activeContract.firstNoticeDaynull (cash-settled); set for GC, ZN and other physically delivered contracts
activeContract.daysToRoll55
activeContract.symbolsESZ6, ESZ26, ESZ2026, ES 12-26 (NinjaTrader), 202612 (IB), CME_MINI:ESZ2026 (TradingView)
nextContractESH7 with the same fields
expiringContractThe nearest contract that has not expired yet; differs from the active one during the roll window
specContract unit, tick size, tick value in USD, settlement type, listed cycle
sessionCME Globex hours and daily break
isBusinessDay, holidayWhether the as-of date is an exchange business day

Supported contracts

GroupSymbolsExpiration rule
Equity indexES, MES, NQ, MNQ, RTY, M2K, YM, MYM3rd Friday of Mar/Jun/Sep/Dec (prior business day if that Friday is a holiday)
FX6E, M6E, 6B, 6J, 6A, 6S2 business days before the 3rd Wednesday of the contract month
EnergyCL, NG, RB, HONYMEX monthly rules (e.g. CL: 3 business days before the 25th of the prior month)
MetalsGC, MGC, SI, HG3rd last business day of the contract month; first notice day = last business day of the prior month
US TreasuriesZN, TN, ZB, UB, ZF7 business days before the month's last business day (ZF: last business day); first notice day as above

Aliases such as TY, US, FV, EC, BP and JY are accepted.

How the roll date is chosen

  • Equity index: the CME roll convention, the Monday before the 3rd Friday of the contract month.
  • FX: 5 business days before the last trading day.
  • Energy: 3 business days before the last trading day, when volume usually moves to the next month.
  • Metals and Treasuries: 3 business days before the first notice day, so long positions are out before the delivery period.

Every row states the method used in rollMethod. To apply your own rule, set rollBusinessDaysBeforeExpiry.

Modes

active (default): one row per symbol.

{ "symbols": ["ES", "MNQ", "CL", "GC", "ZN", "6E"] }

schedule: the next N contracts per symbol with all dates, useful for building a roll calendar.

{ "mode": "schedule", "symbols": ["CL"], "contractsAhead": 12 }

holidays: US exchange holidays used for business-day counting.

{ "mode": "holidays", "year": 2027 }

Backtests: set asOf to any past date, for example "asOf": "2020-03-16".

Use it from code, automations and AI agents

Synchronous call that returns the rows directly:

curl -X POST "https://api.apify.com/v2/acts/UbgWBltR3JhrHLbAR/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"symbols": ["ES", "NQ"]}'
from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("UbgWBltR3JhrHLbAR").call(run_input={"symbols": ["ES", "CL"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["symbol"], row["activeContract"]["code"], row["activeContract"]["rollDate"])

The ID UbgWBltR3JhrHLbAR is this Actor's permanent ID. The API tab on this page shows the same calls with the Actor's name.

AI agents (Claude, ChatGPT, Cursor and other MCP clients): connect the Apify MCP server at https://mcp.apify.com and add this Actor as a tool. The API → MCP tab on this page has the ready-made configuration. The agent can then answer questions like "What is the current NQ front month and when does it roll?"

No-code: works with Make, n8n and Zapier through the Apify integration. Typical setup: run daily with Apify Schedules and send an alert to Slack or Telegram when daysToRoll reaches 2.

Typical use cases

  • Trading bots that must switch to the next contract automatically
  • Roll alerts for discretionary futures traders
  • Building continuous-contract series and backtests with correct expiration dates
  • Prop-firm and journal tools that need the right symbol per date
  • AI trading assistants that need reliable contract facts instead of guesses

Pricing

Pay per result: $0.01 per row (one row per symbol in active mode, one per contract in schedule mode, one per holiday in holidays mode), with lower prices on higher Apify plans, plus Apify's small standard start fee per run. Unsupported symbols cost nothing. A daily check of 5 symbols costs about $1.50 per month.

Limitations

  • Dates follow the published rules and the regular US exchange holiday calendar. Unscheduled closures, for example a national day of mourning, cannot be known in advance; add them via extraHolidays.
  • FX contracts can shift when a foreign bank holiday falls on a settlement-relevant date; the rule here uses US exchange business days.
  • Holiday trading hours and early closes are not modelled. The session field shows the regular Globex schedule.
  • This is reference data, not a live market feed. It contains no prices, margins or fees.

Disclaimer

Not affiliated with or endorsed by CME Group. Contract rules can change. Verify critical dates with the exchange or your broker before relying on them for live orders. Not investment advice.