Developer guide

Option Expiration Date Filters

Expiration filters are simple, but off-by-one assumptions can break a scanner or historical study. This page explains exact expiration filters, inclusive range filters, exclusive range filters, and the API sequence for verifying the dates before requesting contracts.

Exact filter

expiration_date

Matches one expiration date exactly, such as 2026-05-15.

Inclusive filters

.gte and .lte

Include contracts on the boundary date.

Exclusive filters

.gt and .lt

Exclude contracts on the boundary date.

Semantics

Exact dates and range boundaries are different questions

Use expiration_date when the model has already selected a single listed date. This is the correct filter for chain-like views, one-expiration scanners, and contract lists where the UI date picker has a specific value. The result set should only contain contracts expiring on that date.

Use range filters when the model is asking for a window: all expirations through the next monthly OpEx, all LEAPS beyond one year, or all contracts between two event dates. The suffix controls whether the boundary date is included. gte and lteinclude the boundary; gt and ltexclude it.

Exact expiration

Use this for one selected expiration date. It is the cleanest request shape for a chain, a strike table, or a single-date contract export.

expiration_date=2026-05-15

Inclusive start

Use gte when the first date in the window should be included. This is common for scanners starting from the next listed expiration.

expiration_date.gte=2026-05-15

Exclusive end

Use lt when the cutoff date should not be included. This is useful for windows such as before the next monthly OpEx.

expiration_date.lt=2026-05-15

Examples

Contracts API filter examples

A robust client usually discovers listed dates first, then applies exact or range filters. This prevents calendar assumptions from leaking into the contract request and makes date boundary behavior explicit in the URL.

# Discover valid listed dates first
curl "https://api.cutemarkets.com/v1/tickers/expirations/SPY/" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Exact date: only the May 15, 2026 expiration
curl "https://api.cutemarkets.com/v1/options/contracts/?underlying_ticker=SPY&expiration_date=2026-05-15&limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Inclusive range: include May 15, 2026 and later
curl "https://api.cutemarkets.com/v1/options/contracts/?underlying_ticker=SPY&expiration_date.gte=2026-05-15&limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Exclusive range: before May 15, 2026, not including May 15
curl "https://api.cutemarkets.com/v1/options/contracts/?underlying_ticker=SPY&expiration_date.lt=2026-05-15&limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

Testing

Boundary tests to add before shipping

01

Test exact equality

Pick a known listed monthly date and assert that every returned contract has exactly that expiration_date.

02

Test inclusive edges

Use gte and lte with the same listed date and confirm contracts on the boundary remain in the response.

03

Test exclusive edges

Switch to gt or lt and confirm contracts on the boundary disappear from the response.

04

Test unavailable dates

Request a date returned by a generic calendar but not by the expirations endpoint, and make sure the client handles an empty result.

Last verified

Date-sensitive calendar references on this page were checked on April 27, 2026. Calendar math is useful for planning, but listed contracts and exchange calendars should still be verified before production workflows run.

Expiration date filter FAQ

Does expiration_date.gte include the date?

Yes. The gte suffix is inclusive, so expiration_date.gte=2026-05-15 includes contracts expiring on May 15, 2026.

Does expiration_date.lt include the date?

No. The lt suffix is exclusive, so expiration_date.lt=2026-05-15 returns contracts expiring before May 15, 2026.

When should I use expiration_date instead of range filters?

Use expiration_date for an exact single expiration. Use gte, gt, lte, and lt when building date windows, rolling scanners, or LEAPS screens.

Related pages