Skip to content
Eden Engine

Stock Option Chain (Calls & Puts by Strike and Expiry)

omnial/get-stock-option-chain

Given a stock ticker, returns its options chain: call and put contracts grouped by expiration date, each with strike price, last trade, bid/ask, volume, and open interest. An unrecognized symbol returns an empty result rather than an error.

activeper callv1
Provider
Web & Business Data Network
Category
equities
Provider price
$0.01365 per call
Latency p50 / p95
— / —
Success rate
—
Verified
—

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "type": "object",
  "required": [
    "symbol"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Max records to return."
    },
    "symbol": {
      "type": "string",
      "description": "Stock symbol (e.g. AAPL)."
    },
    "asset_class": {
      "type": "string",
      "description": "Asset class: stocks, etf."
    }
  },
  "additionalProperties": false
}
output_schema.json
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "chain": {
          "type": "object",
          "properties": {
            "table": {
              "type": "object",
              "properties": {
                "asOf": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "As-of label for the table. Observed null on the one real fixture captured; may carry a timestamp string on other calls."
                },
                "contracts": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "c_Ask": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Call ask price, formatted like `c_Last`."
                      },
                      "c_Bid": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Call bid price, formatted like `c_Last`."
                      },
                      "p_Ask": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Put ask price, formatted like `c_Last`."
                      },
                      "p_Bid": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Put bid price, formatted like `c_Last`."
                      },
                      "c_Last": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Call last-traded price, e.g. '116.64', or the literal string '--' when there was no trade to report. Null on a separator row."
                      },
                      "p_Last": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Put last-traded price, formatted like `c_Last`."
                      },
                      "strike": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Strike price as a formatted numeric string, e.g. '205.00'. Null on a group-header separator row."
                      },
                      "c_Change": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Call price change, formatted like `c_Last`."
                      },
                      "c_Volume": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Call trading volume as a numeric string, formatted like `c_Last`."
                      },
                      "c_colour": {
                        "type": "boolean",
                        "description": "The endpoint's own moneyness/highlight flag for the call side of this strike -- meaning not documented by the vendor beyond true/false."
                      },
                      "p_Change": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Put price change, formatted like `c_Last`."
                      },
                      "p_Volume": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Put trading volume as a numeric string, formatted like `c_Last`."
                      },
                      "p_colour": {
                        "type": "boolean",
                        "description": "The endpoint's own moneyness/highlight flag for the put side of this strike -- meaning not documented by the vendor beyond true/false."
                      },
                      "expiryDate": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Short expiry label, e.g. 'Sep 9'. Null on a group-header separator row."
                      },
                      "expirygroup": {
                        "type": "string",
                        "description": "Empty string on a real contract row; a date heading like 'September 9, 2026' on a group-header separator row."
                      },
                      "c_Openinterest": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Call open interest as a numeric string, formatted like `c_Last`."
                      },
                      "p_Openinterest": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Put open interest as a numeric string, formatted like `c_Last`."
                      }
                    },
                    "additionalProperties": true
                  },
                  "description": "One entry per strike/expiry combination. A row whose call and put fields are all null and whose `expirygroup` carries a date heading (e.g. 'September 9, 2026') is a group-header separator row marking the start of a new expiration date, not a real contract -- filter on `expiryDate` being non-null to get only real contract rows."
                }
              },
              "additionalProperties": true
            },
            "lastTrade": {
              "type": "string",
              "description": "Human-readable last-trade summary line for the underlying stock, e.g. 'LAST TRADE: $319.97 (AS OF SEP 3, 2026)' -- not a structured price field."
            },
            "totalRecord": {
              "type": "number",
              "description": "Total number of contract rows available, e.g. 1592."
            }
          },
          "additionalProperties": true
        }
      },
      "additionalProperties": true
    },
    "status": {
      "type": "string",
      "description": "'success' on the real fixture observed."
    }
  },
  "description": "The option-chain record, as returned at routing.responseResultPath ($.output). Empty ({}) on a symbol the endpoint does not recognize -- observed on zzzz-not-found.json.",
  "additionalProperties": true
}

Pricing

Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.

Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.

ChargeRate
Per call
Flat, regardless of what comes back
$0.01365
Cost basis
Not recorded

This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.

Updated
Sep 15, 2026