Futures Roll Calendar & Front-Month API (CME)
Pricing
from $7.00 / 1,000 contract results
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
Maintained by CommunityActor 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
| Field | Example (ES, as of 2026-10-20) |
|---|---|
activeContract.code | ESZ6, the contract to trade now |
activeContract.rollDate | 2026-12-14, the CME equity roll date |
activeContract.lastTradingDay | 2026-12-18 |
activeContract.firstNoticeDay | null (cash-settled); set for GC, ZN and other physically delivered contracts |
activeContract.daysToRoll | 55 |
activeContract.symbols | ESZ6, ESZ26, ESZ2026, ES 12-26 (NinjaTrader), 202612 (IB), CME_MINI:ESZ2026 (TradingView) |
nextContract | ESH7 with the same fields |
expiringContract | The nearest contract that has not expired yet; differs from the active one during the roll window |
spec | Contract unit, tick size, tick value in USD, settlement type, listed cycle |
session | CME Globex hours and daily break |
isBusinessDay, holiday | Whether the as-of date is an exchange business day |
Supported contracts
| Group | Symbols | Expiration rule |
|---|---|---|
| Equity index | ES, MES, NQ, MNQ, RTY, M2K, YM, MYM | 3rd Friday of Mar/Jun/Sep/Dec (prior business day if that Friday is a holiday) |
| FX | 6E, M6E, 6B, 6J, 6A, 6S | 2 business days before the 3rd Wednesday of the contract month |
| Energy | CL, NG, RB, HO | NYMEX monthly rules (e.g. CL: 3 business days before the 25th of the prior month) |
| Metals | GC, MGC, SI, HG | 3rd last business day of the contract month; first notice day = last business day of the prior month |
| US Treasuries | ZN, TN, ZB, UB, ZF | 7 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 ApifyClientclient = 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
sessionfield 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.