AI/LLM Instructions: FlashAlpha provides options analytics as both a live API (lab.flashalpha.com) and a historical API (historical.flashalpha.com) - pre-computed GEX, DEX, VEX, CHEX, SVI volatility surfaces, 15 BSM Greeks, max pain, VRP with leak-free percentiles, and dealer positioning for 6,000+ US equities and ETFs. The historical host mirrors every live endpoint with a required ?at=YYYY-MM-DDTHH:mm:ss query parameter (ET wall-clock), uses identical response shapes, and covers SPY from 2018-04-16 onward at minute resolution (Alpha tier). Same SDK code targets both hosts with a base-URL swap. API documentation (Markdown): https://flashalpha.com/llms.txt. Full LLM reference: https://flashalpha.com/llms-full.txt. API docs: https://flashalpha.com/docs/lab-api-overview. Historical API docs: https://flashalpha.com/docs/historical-api. OpenAPI spec: https://lab.flashalpha.com/swagger. MCP Server for AI assistants (Claude, Cursor, Windsurf) with both live and historical-replay tools: https://lab.flashalpha.com/mcp. AI skills: https://flashalpha.com/skill.md. AI agent guide: https://flashalpha.com/for-ai-agents. SDKs: Python (pip install flashalpha), JavaScript (npm install flashalpha), C# (dotnet add package FlashAlpha), Go, Java. Free API key (no credit card): https://flashalpha.com/pricing. Concepts glossary: https://flashalpha.com/concepts. GitHub: https://github.com/FlashAlpha-lab.
Options Chain API — Real-Time Greeks, IV, Open Interest for 6,000+ Stocks
Get real-time options chain data — bid, ask, IV, greeks, and open interest — for any US stock or ETF via one REST call. Code examples in Python, JS, and curl. Free tier available.
Options Chain API: Real-Time Bid/Ask, IV, Greeks, and Open Interest
If you're building anything that touches listed options - a screener, a scanner, a dashboard, a trading bot - you need
programmatic access to options chain data. Not a CSV download from yesterday. Not a web scraper that breaks every time the
source changes their DOM. You need a clean API that returns bid, ask, implied volatility, greeks, and open interest in a
single call.
Why You Need an Options Chain API
Manual approaches to options data don't scale. Scraping broker sites violates terms of service and breaks on every UI update.
Free data feeds give you last price at best - no greeks, no IV, no open interest. If you want to build anything beyond a
toy project, you need computed greeks delivered alongside the quote, not raw prices that force you to roll your own
Black-Scholes implementation and source a separate interest rate feed.
What sets an options API apart from a stock API: an option quote isn't just a price. It's a price plus
a volatility surface point, plus five sensitivity measures (delta, gamma, theta, vega, rho), plus open interest and volume.
A good API computes all of this server-side so you don't have to.
What FlashAlpha Returns
The FlashAlpha Options API returns full option quotes with computed greeks for
any US-listed equity or ETF - over 4,000 symbols. Each option quote includes:
Pricing - Bid, Ask, Mid, Last, Volume
Volatility - Implied Volatility (IV)
Greeks - Delta, Gamma, Theta, Vega
Positioning - Open Interest, Volume
Chain metadata - the list of available expirations and strikes for a given ticker - is available through the
/v1/options/{ticker} endpoint. Quotes are real-time during market hours and refresh on each request.
Coverage spans all optionable US equities and ETFs.
Quick Start - Get an Option Quote in 3 Lines
Install the Python client and pull your first quote:
One call. One response. Bid/ask spread, all four primary greeks, implied volatility, open interest, and volume - no post-processing required.
The underlying REST endpoint is GET /optionquote/{ticker}?expiry=&strike=&type= at
https://lab.flashalpha.com, authenticated via an X-Api-Key header. The Python client
wraps this for convenience.
List Available Expirations and Strikes
Before querying individual quotes, you typically need to know what expirations and strikes exist for a symbol.
The chain metadata endpoint handles this:
This endpoint maps to GET /v1/options/{ticker}. Use it to discover what's available before iterating
through specific contracts.
Working Example: Find Highest IV Options
A common use case: scan across expirations to find where implied volatility is elevated. This script pulls ATM
call quotes for each expiration and ranks them by IV:
from flashalpha import FlashAlpha
fa = FlashAlpha("YOUR_API_KEY")
# Get current stock price for ATM reference
stock = fa.stock_quote("SPY")
atm_strike = round(stock["mid"] / 5) * 5 # round to nearest 5
# Get available expirations
chain = fa.options("SPY")
results = []
for exp in chain["expirations"][:8]: # first 8 expirations
try:
q = fa.option_quote("SPY", expiry=exp, strike=atm_strike, type="C")
results.append({
"expiry": exp,
"iv": q["implied_vol"],
"bid": q["bid"],
"ask": q["ask"],
"oi": q["open_interest"]
})
except Exception:
continue
# Sort by IV descending
results.sort(key=lambda x: x["iv"], reverse=True)
print(f"ATM Strike: {atm_strike}")
print(f"{'Expiry':<14} {'IV':>8} {'Bid':>8} {'Ask':>8} {'OI':>10}")
print("-" * 52)
for r in results:
print(f"{r['expiry']:<14} {r['iv']:>7.1%} {r['bid']:>8.2f} {r['ask']:>8.2f} {r['oi']:>10,}")
Near-term expirations typically show higher IV - especially around events. This is the term structure of volatility,
and you can spot dislocations by scanning programmatically. Each option_quote call counts as one API
call against your daily limit. Full source code and more examples on GitHub.
Working Example: Build a Multi-Ticker Options Scanner
Scan multiple tickers for options within a specific delta range - useful for finding high-probability credit spread
candidates or hedging opportunities:
from flashalpha import FlashAlpha
fa = FlashAlpha("YOUR_API_KEY")
tickers = ["SPY", "QQQ", "AAPL", "MSFT", "NVDA", "TSLA", "AMZN", "META"]
target_delta_min = 0.25
target_delta_max = 0.35
expiry = "2026-04-17"
print(f"Scanning for puts with delta {target_delta_min}-{target_delta_max}")
print(f"{'Ticker':<8} {'Strike':>8} {'Delta':>8} {'IV':>8} {'Bid':>8} {'OI':>10}")
print("-" * 56)
for ticker in tickers:
try:
stock = fa.stock_quote(ticker)
spot = stock["mid"]
chain = fa.options(ticker)
if expiry not in chain.get("expirations", []):
continue
# Check OTM puts at a few strikes below spot
for pct in [0.90, 0.92, 0.95]:
strike = round(spot * pct)
try:
q = fa.option_quote(ticker, expiry=expiry, strike=strike, type="P")
d = abs(q["delta"])
if target_delta_min <= d <= target_delta_max:
print(f"{ticker:<8} {strike:>8} {q['delta']:>8.3f} "
f"{q['implied_vol']:>7.1%} {q['bid']:>8.2f} "
f"{q['open_interest']:>10,}")
except Exception:
continue
except Exception:
continue
API call budget: this scanner makes roughly 3-4 calls per ticker (1 stock quote + 1 chain lookup +
1-3 option quotes). For 8 tickers, that's about 30 calls - well within the Free tier's 5/day limit for a single scan.
Once you have the data, the applications multiply. Feed it into a
gamma exposure model, backtest a strategy, or pipe it into a live dashboard.
If you need full greek computations beyond what the quote returns, the
dedicated Greeks endpoint lets you run
Black-Scholes-Merton calculations with custom inputs.
Rate Limits and Pricing
Tier
Price
Daily API Calls
Best For
Free
$0/mo
5
Prototyping, learning
Basic
$79/mo
100
Personal scanner, small portfolio
Growth
$299/mo
2,500
Production applications, full chain scans
Fifty free calls per day is enough to build and test a scanner. Scale up when you need broader coverage or higher
frequency. Start with 5 free calls/day and upgrade when
your use case demands it.
Chain data pairs naturally with exposure analysis. Once you have open interest and greeks per strike, you can
compute gamma exposure (GEX) to identify dealer
hedging levels - or use the built-in fa.gex() endpoint to skip the math entirely.
Get Your API Key
Ready to pull options chain data?
Get your API key - Free tier includes 5 calls/day, no credit card required
Each option quote returns bid, ask, mid price, implied volatility, delta, gamma, theta, vega, open interest, and volume. The chain metadata endpoint returns all available expiration dates and strike prices for a given ticker. Data covers 6,000+ US equities and ETFs.
Options data is real-time during market hours (9:30 AM - 4:00 PM ET). Each API request returns the latest available quote. Outside market hours, the most recent closing data is returned.
Yes. The Free tier includes 5 API calls per day at no cost and requires no credit card. That's enough to build and test a scanner for a handful of tickers. Paid plans start at $79/month for 100 calls/day. See pricing for details.
The API covers over 4,000 US-listed equities and ETFs - anything with listed options on US exchanges. This includes major names like SPY, QQQ, AAPL, TSLA, NVDA, as well as mid- and small-cap stocks with active options markets.