gexbot api
general

expirations

Returns all valid option expiration dates for a given ticker supported by the real-time WebSocket feed.

GET/options/{ticker}/expiriesQuant Tier

Returns all valid option expiration dates for a given ticker supported by the real-time WebSocket feed.

Expiry Horizon & Usage

  • Subscription Required: Requires a Quant subscription or higher.
  • Published Horizon: Current Eastern calendar date through current date + 90 calendar days.
  • WebSocket Group Suffixes: Convert returned YYYY-MM-DD dates to YYYYMMDD format (e.g. 2026-07-17 becomes 20260717) for explicit-expiry WebSocket groups.
  • Supported Symbols: Query canonical option-owning tickers (SPX, NDX, SPY, QQQ), Quant stock tickers, or the Quant-only XSP index.
  • Caching: The server caches the list for 12 hours and returns Cache-Control: public, max-age=43200. Poll at most twice a day.

Request

Example: /options/SPX/expiries

Headers

NameTypeDescription
AuthorizationstringRequired. Format: "Bearer <YOUR_API_KEY>"
User-AgentstringRequired. Identify your client application.
AcceptstringRequired. Set to "application/json".

Path parameters

NameTypeDescription
tickerstringSupports standard and Quant-only stock/index tickers (e.g. SPX, NDX, SPY, QQQ, XSP).

Response

FieldTypeDescription
tickerstringCanonical ticker used for the expiry lookup.
start_datestringStart of the published expiry horizon in YYYY-MM-DD format.
end_datestringEnd of the published expiry horizon in YYYY-MM-DD format.
expiriesarrayAll valid option expiration dates, distinct and in ascending order, inclusive of start_date and end_date. Remove dashes (YYYYMMDD) to build explicit-expiry WebSocket group suffixes.
{
  "ticker": "SPX",
  "start_date": "2026-07-10",
  "end_date": "2026-10-08",
  "expiries": [
    "2026-07-10",
    "2026-07-13",
    "2026-07-15",
    "2026-07-17"
  ]
}
{
  "type": "object",
  "required": ["ticker", "start_date", "end_date", "expiries"],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Canonical ticker used for the expiry lookup."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start of the published expiry horizon in YYYY-MM-DD format."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End of the published expiry horizon in YYYY-MM-DD format."
    },
    "expiries": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
      },
      "description": "All valid option expiration dates in YYYY-MM-DD format within the published horizon."
    }
  }
}
type: object
required: [ticker, start_date, end_date, expiries]
properties:
  ticker:
    type: string
    description: Canonical ticker used for the expiry lookup.
  start_date:
    type: string
    pattern: "^\\d{4}-\\d{2}-\\d{2}$"
    description: Start of the published expiry horizon in YYYY-MM-DD format.
  end_date:
    type: string
    pattern: "^\\d{4}-\\d{2}-\\d{2}$"
    description: End of the published expiry horizon in YYYY-MM-DD format.
  expiries:
    type: array
    items:
      type: string
      pattern: "^\\d{4}-\\d{2}-\\d{2}$"
    description: All valid option expiration dates in YYYY-MM-DD format within the published horizon.

Errors

StatusWhenBody
400Invalid ticker format, unknown option ticker, synthetic futures ticker, a missing User-Agent or Authorization header.{"error": "<message>"}
401The API key is not valid.(no body)
403The key is not a gexbot API key, or the subscription is below Quant.(no body)
429The account exceeded its daily or monthly quota for this endpoint.{"error": "Rate limit exceeded."}
503Option reference data is not available. Retry later.{"error": "<message>"}

On this page