Today we're shipping the Option Chain API — the third member of the OptionData family, alongside the realtime WebSocket feed and the historical SQL endpoint. One POST, one symbol, and you get the entire option chain back: every strike and expiration, fully priced, with open interest, implied volatility, and the Greeks. No socket to keep alive, no SQL to write.
What you get
Send a symbol, get a clean JSON array of contracts. Every contract carries the fields you actually trade on:
Every field, on every contract
-
Pricing: bid · ask · mark · close
-
Positioning: open interest · OI change · volume
-
Risk / surface: IV · delta · gamma · theta · vega
It's the same OPRA-licensed dataset that powers our realtime and historical APIs — just shaped as a point-in-time snapshot of the whole chain instead of a stream of individual prints.
When to reach for it
OptionData now gives you three ways into one dataset. Pick the shape that fits the job:
- Realtime · WebSocket — the live tape of individual trades as they happen. Best for flow detection and alerts.
- Historical · SQL — custom analytical queries over the full trade history. Best for backtests and research.
- Option Chain · REST — a clean snapshot of the whole chain, strikes × expirations. Best for building a chain view, pricing a spread, screening across strikes, or grabbing an end-of-day IV/Greeks surface — without writing SQL or holding a connection open.
Where it fits: the recipes that now build on it — call & put walls, gamma squeeze, and T+1 OI confirmation.
Quick start
Grab your API key
Sign in, start your free trial, and copy your API key from the dashboard. The same key works across all three APIs.
POST a symbol
Send a JSON body with your key and a symbol. Everything else is optional.
curl -X POST https://www.optiondata.io/api/option-chain \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY",
"symbol": "AAPL",
"expiration_date": "2026-07-17"
}'
Read the chain
You get back a data array of fully-priced contracts. Render it, sort it, or feed it straight into your pricing model.
The request
A single POST to https://www.optiondata.io/api/option-chain with a JSON body:
api_key(required) — your OptionData API key.symbol(required) — the underlying, e.g.AAPL.date(optional) — a trading day asYYYY-MM-DD. Defaults to the latest available session.expiration_date(optional) — narrow the chain to a single expiration.put_call(optional) —CALLorPUTto return just one side.
That's the whole surface. We intentionally kept it small — no strike windows, no DTE ranges, no flow flags — so the request is obvious and the response is the complete chain you asked for.
The response
{
"status": "SUCCESS",
"data": [
{
"option_symbol": "AAPL260717C00185000",
"put_call": "CALL",
"strike": 185,
"expiration_date": "2026-07-17",
"bid": 6.55,
"ask": 6.70,
"mark": 6.63,
"close": 6.41,
"open_interest": 12840,
"open_interest_change": 310,
"volume": 4215,
"implied_volatility": 0.2413,
"delta": 0.58,
"gamma": 0.021,
"theta": -0.18,
"vega": 0.12
}
],
"meta": { "row_limit": 10000, "truncated": false }
}
data— one object per contract, across every strike and expiration that matched your request.meta.row_limit— the maximum number of rows a single response will return.meta.truncated—trueif the chain hit that cap; narrow byexpiration_dateorput_callif you see it.
In your language
Same call, from Python:
import requests
response = requests.post(
"https://www.optiondata.io/api/option-chain",
json={
"api_key": "YOUR_API_KEY",
"symbol": "AAPL",
"expiration_date": "2026-07-17",
"put_call": "CALL",
},
)
chain = response.json()["data"]
print(len(chain), "contracts")
Latest session, or any trading day
Leave date off and you get the most recent session. Set it to a past YYYY-MM-DD and you get that day's chain as it stood — handy for end-of-day marks, point-in-time IV surfaces, or reconstructing what a spread looked like before an event.
One key, three APIs
The Option Chain API is included in the Pro plan along with the realtime WebSocket feed and historical SQL access. One API key authenticates all three.
Beta
The Option Chain API is currently v1 / Beta. The core fields above are stable; we may add fields over time, so read by key rather than by position.
One dataset, three ways in
The realtime feed tells you what's trading right now. Historical SQL lets you ask deep questions of the past. The Option Chain API gives you the whole board at a glance. Together they cover live monitoring, research, and on-demand pricing from a single licensed source — behind a single API key.
One OPRA-licensed dataset, three ways in — Realtime WebSocket, Historical SQL, and the Option Chain REST API.
Ready to try it? Head to the Option Chain API page, run a symbol in the live playground, and start a free trial.
Run it with the OptionData API. Start a 14-day free trial (no credit card) — one API key covers the Realtime WebSocket, Historical SQL, and Option Chain REST APIs.
You can run this strategy programmatically with the OptionData API. Use Historical SQL for backtests and screens, and the Realtime WebSocket for live flow.
-H "Content-Type: application/json" \
-d '{"api_key":"YOUR_API_KEY","symbol":"AAPL","expiration_date":"2026-07-17"}'