Skip to content

From MarketData.app — Options Chain & Quotes

Looking for a second source of option Greeks alongside MarketData.app? Lavender delivers independently computed Greeks through MarketData.app's own wire format — no code changes required.

Already fetching option Greeks from MarketData.app? Change the host — everything else stays the same.

What Changes

curl -H "Authorization: Bearer YOUR_TOKEN" \
     "https://api.marketdata.app/v1/options/chain/AAPL"
curl "http://localhost:2112/v1/options/chain/AAPL"

Change the host. No API key needed. The path, parameters, field names, and columnar JSON format are all identical.

Try it in your browser

http://localhost:2112/v1/options/chain/AAPL?dte=30&format=html

Endpoints

Endpoint Description
/v1/options/chain/{underlying} Full options chain for an underlying
/v1/options/quotes/{optionSymbol} Single contract by OCC symbol

Chain Parameters

Parameter Type Required Description
side string No call or put
expiration string No Exact date (yyyy-MM-dd) or all
dte integer No Closest expiration to N days from today
from string No Expiration floor (yyyy-MM-dd)
to string No Expiration ceiling (yyyy-MM-dd)
strike string No Exact value, comma-list, range (400-410), or expression (>=400, <500)
range string No itm, otm, or all
delta string No Single value (nearest) or range (.30,.60)
strikeLimit integer No Limit to N strikes nearest ATM
format string No json (default), csv, ndjson, html (csv/ndjson/html are Lavender extensions)

Response Format

The default JSON response uses MarketData.app's columnar format — each field is a parallel array, with a status string "s":

{
  "s": "ok",
  "optionSymbol": ["AAPL261218C00230000", "AAPL261218P00230000"],
  "underlying":   ["AAPL", "AAPL"],
  "expiration":   [1797552000, 1797552000],
  "side":         ["call", "put"],
  "strike":       [230.0, 230.0],
  "dte":          [276, 276],
  "iv":           [0.245, 0.312],
  "delta":        [0.583, -0.417],
  "gamma":        [0.0198, 0.0198],
  "theta":        [-0.1425, -0.1025],
  "vega":         [0.312, 0.312],
  "underlyingPrice": [252.71, 252.71],
  "bid":          [0, 0],
  "ask":          [0, 0],
  "mid":          [0, 0],
  "last":         [null, null],
  "volume":       [0, 0],
  "openInterest": [0, 0],
  "inTheMoney":   [true, false],
  "intrinsicValue": [22.71, 0],
  "extrinsicValue": [0, 0],
  "updated":      [1710450600, 1710450600],
  "firstTraded":  [0, 0],
  "bidSize":      [0, 0],
  "askSize":      [0, 0]
}

Market data fields are zeroed

Fields like bid, ask, mid, last, volume, openInterest, bidSize, askSize are zeroed. The iv, delta, gamma, theta, vega, and computed fields contain Lavender's values.

Field Reference

Greeks & Computed

Field Type Description
optionSymbol string OCC contract symbol (compact, no padding)
underlying string Underlying ticker
expiration long Expiration as Unix timestamp (seconds)
side string call or put
strike double Strike price
dte int Calendar days to expiration
iv double Implied volatility (decimal: 0.25 = 25%)
delta double Per $1 spot move
gamma double Per $1 spot move
theta double Per calendar day
vega double Per 1% vol move
underlyingPrice double Current underlying price
inTheMoney bool true if ITM
intrinsicValue double Max(0, spot−K) for calls, Max(0, K−spot) for puts
extrinsicValue double Model value minus intrinsic
updated long Computation time as Unix timestamp (seconds)

Market Data (zeroed)

bid, ask, mid, last, volume, openInterest, bidSize, askSize, firstTraded — present for wire compatibility but zeroed.

Single Contract Quotes

http://localhost:2112/v1/options/quotes/AAPL261218C00230000

Returns the same columnar JSON format with a single element per array. If the contract is not found, returns {"s":"no_data","errmsg":"No data for ..."}.

Greek Scaling

All Greeks pass through without conversion — MarketData.app uses the same per-1% convention for vega as the Lavender API.

Greek Convention
Delta Per share, −1 to +1
Gamma Per share, per $1
Theta Per calendar day
Vega Per 1% vol move
IV Decimal (0.25 = 25%)

All output values are rounded to up to 4 decimal places.

How Lavender's Greeks Differ

MarketData.app computes Greeks using a standard Black-Scholes model. Running Lavender alongside MarketData.app gives you a second perspective that accounts for:

  • Early exercise — Lavender prices American options, which matters for equity options near ex-dividend dates
  • Discrete dividends — Lavender uses the actual dividend schedule rather than a continuous yield approximation
  • Implied borrow rates — Lavender solves for the borrow rate per expiry to enforce put-call parity, producing consistent call/put Greeks even in hard-to-borrow names
  • Two views of time decay — conventional theta (\(\partial V / \partial t\)) on this endpoint, plus a separate decay metric (expected change to next trading day, accounting for weekends and holidays) on the Lavender API
  • Extended Greeks — access vanna, charm, volga, speed, and more via the Lavender API

Migrating to the Lavender Native API

MarketData.app Lavender API
/{underlying} in path underlying= query param
optionSymbol osym (always included)
iv lav_vol
side right
underlyingPrice und_price
Columnar JSON Flat array of objects

Error Responses

Status Condition
200 Success (or {"s":"no_data"} for valid symbol with no matching contracts)
400 Missing symbol, invalid format
404 Unsupported route
502 Upstream data unavailable

Error responses use JSON: {"s":"error","errmsg":"description"}.