Real-Time Options Data API for Developers: Complete Guide | FlashAlpha Research

Real-Time Options Data API for Developers: Complete Guide

Building applications that consume real-time options data used to require expensive institutional feeds and months of integration work. Modern REST APIs have changed that equation entirely. This guide covers exactly what options data is available via API, how to access it, and practical use cases with working code examples — from screening tools to full trading bots.


Tomasz Dobrowolski - Quant Engineer

  • #OptionsAPI #DeveloperGuide #MarketData #Python

What Options Data Is Available via API

Before writing a single line of code, it helps to understand the categories of options data you can pull programmatically. Modern options data APIs go far beyond simple price quotes.

  • Price Data — Bid, ask, mid, last trade price, volume, and open interest for every listed contract. The raw market data you need for any options application.
  • Greeks — Delta, gamma, theta, and vega computed via Black-Scholes-Merton. Pre-calculated per contract so you don't need to build your own pricing engine.
  • Volatility Metrics — Implied volatility per strike, IV rank, IV percentile, and full volatility surface grids. Essential for identifying cheap or expensive options relative to history.
  • Exposure Analytics — Gamma exposure (GEX), delta exposure (DEX), vanna exposure (VEX), and charm exposure (CHEX) by strike. These quantify how dealer hedging creates support and resistance levels.
  • Key Levels — Gamma flip point, call wall, and put wall — the specific price levels where dealer positioning shifts from stabilizing to amplifying moves.
  • AI Narrative Analysis — Natural-language interpretation of dealer positioning and flow data. Useful for generating human-readable market commentary programmatically.

If you're new to exposure analytics, our guide to gamma exposure (GEX) explains the theory behind these metrics and why they matter for price action.

FlashAlpha API Overview

The FlashAlpha Lab API is a REST API that returns JSON responses. Every endpoint follows standard HTTP conventions — GET requests, query parameters for filtering, and JSON payloads in the response body.

Key architectural details:

  • Base URL: https://lab.flashalpha.com
  • Authentication: API key passed via the X-Api-Key header
  • Python SDK: Install with pip install flashalpha (GitHub · PyPI) — wraps every endpoint in a clean Python interface
  • Response caching: 15-second cache on all endpoints, balancing freshness with performance
  • Rate limits: Measured in daily API calls, scaling from 50/day (Free) to 2,500/day (Growth)

There is no WebSocket or streaming protocol. For real-time workflows, you poll endpoints at your desired interval. Our polling vs. streaming guide covers how to build efficient polling loops without wasting API calls.

Core Endpoints at a Glance

Here is the complete endpoint reference. For detailed request/response schemas, see the full API reference.

Market Data

EndpointDescription
GET /stockquote/{ticker}Live stock quote — bid, ask, mid, last price
GET /optionquote/{ticker}?expiry=&strike=&type=Single option quote with greeks (Growth+)
GET /v1/options/{ticker}Chain metadata — available expirations and strikes
GET /v1/surface/{symbol}Volatility surface grid (no auth required)
GET /v1/stock/{symbol}/summaryStock summary with IV rank and IV percentile

Exposure Analytics

EndpointDescription
GET /v1/exposure/gex/{symbol}Gamma exposure by strike
GET /v1/exposure/dex/{symbol}Delta exposure by strike
GET /v1/exposure/vex/{symbol}Vanna exposure by strike
GET /v1/exposure/chex/{symbol}Charm exposure by strike
GET /v1/exposure/summary/{symbol}Full exposure summary (Growth+)
GET /v1/exposure/levels/{symbol}Key levels — gamma flip, call wall, put wall
GET /v1/exposure/narrative/{symbol}AI narrative analysis of positioning (Growth+)

Pricing & Volatility

EndpointDescription
GET /v1/pricing/greeksBSM greeks calculator (spot, strike, dte, sigma, type)
GET /v1/pricing/ivImplied volatility solver
GET /v1/pricing/kellyKelly criterion position sizing (Growth+)
GET /v1/volatility/{symbol}ATM IV, realized vol, VRP assessment (Growth+)

Reference

EndpointDescription
GET /v1/tickersAll available tickers
GET /v1/symbolsCurrently tracked symbols
GET /v1/accountAccount info — plan tier, remaining daily calls
GET /healthHealth check (no auth required)

For the full options chain structure including how expirations and strikes are organized, see Options Chain API: Real-Time Greeks & Open Interest.

Quick Start

You can go from zero to live options data in under two minutes.

Step 1: Install the Python SDK.

pip install flashalpha

Step 2: Get your free API key at /pricing.

Step 3: Pull gamma exposure data for SPY.

from flashalpha import FlashAlpha

fa = FlashAlpha("your_api_key")
gex = fa.gex("SPY")
print(gex)

That's it. Five lines. The response is a structured JSON object:

{
  "symbol": "SPY",
  "underlying_price": 587.42,
  "net_gex": 1240000000,
  "gamma_flip": 585.0,
  "gex_interpretation": "Positive gamma — dealers stabilize moves",
  "strikes": [
    { "strike": 580.0, "call_gex": 320000000, "put_gex": -110000000, "net_gex": 210000000 },
    { "strike": 585.0, "call_gex": 580000000, "put_gex": -240000000, "net_gex": 340000000 },
    { "strike": 590.0, "call_gex": 410000000, "put_gex": -370000000, "net_gex": 40000000 }
  ]
}

For a more detailed walkthrough including error handling and pagination, see our Quick Start guide.

Use Cases

Screening & Scanning

Scan a universe of tickers for elevated implied volatility using the stock summary endpoint. This is how you build a daily screener that flags names trading at extreme IV rank.

from flashalpha import FlashAlpha

fa = FlashAlpha("your_api_key")
watchlist = ["SPY", "AAPL", "TSLA", "NVDA", "AMD", "QQQ"]

for ticker in watchlist:
    summary = fa.stock_summary(ticker)
    iv_rank = summary["volatility"]["iv_rank"]
    if iv_rank > 80:
        print(f"{ticker}: IV Rank {iv_rank}")

This pattern pairs well with our free tier — 50 calls/day covers a focused watchlist easily.

Options Pricing Models

Feed market-observed implied volatility into the BSM greeks calculator to price hypothetical contracts or stress-test positions under different vol assumptions.

greeks = fa.greeks(spot=587.42, strike=590, dte=14, sigma=0.18, type="call")
print(f"Delta: {greeks['first_order']['delta']}")
print(f"Gamma: {greeks['first_order']['gamma']}")
print(f"Theta: {greeks['first_order']['theta']}")

The /v1/pricing/greeks endpoint handles the math server-side, so you don't need scipy or a local BSM implementation. Our greeks API guide covers the full parameter set.

Portfolio Greeks Dashboard

Aggregate greeks across a multi-leg portfolio by querying individual option quotes and summing the weighted greeks.

positions = [
    {"ticker": "SPY", "expiry": "2026-04-17", "strike": 590, "type": "call", "qty": 10},
    {"ticker": "SPY", "expiry": "2026-04-17", "strike": 580, "type": "put", "qty": -5},
]

total_delta, total_gamma, total_theta = 0, 0, 0
for pos in positions:
    quote = fa.option_quote(pos["ticker"], expiry=pos["expiry"],
                            strike=pos["strike"], type=pos["type"])
    total_delta += quote["delta"] * pos["qty"] * 100
    total_gamma += quote["gamma"] * pos["qty"] * 100
    total_theta += quote["theta"] * pos["qty"] * 100

print(f"Portfolio Delta: {total_delta:.1f}, Gamma: {total_gamma:.2f}, Theta: ${total_theta:.2f}/day")

Backtesting

Use historical stock and option quotes to backtest options strategies. Pull historical data via historical_stock_quote() and historical_option_quote() to reconstruct P&L curves across past market regimes. Combine with expiration date data to model roll timing and theta decay accurately.

Trading Bots

The most common architecture for an automated options trading system using REST APIs:

Polling Loop Architecture: Poll FlashAlpha endpoints at a fixed interval (e.g., every 30 seconds) → feed data into your decision engine → execute trades via your broker's API (IBKR, Alpaca, Tradier). FlashAlpha provides the data layer; your broker handles execution.
import time
from flashalpha import FlashAlpha

fa = FlashAlpha("your_api_key")

while True:
    levels = fa.exposure_levels("SPY")
    quote = fa.stock_quote("SPY")

    if quote["mid"] < levels["levels"]["gamma_flip"]:
        print("Below gamma flip — volatility expansion likely")
        # Signal your broker API to adjust hedges

    time.sleep(30)  # Poll every 30 seconds

For detailed patterns on efficient polling, rate-limit management, and reconnection logic, see Real-Time Options Data: Polling vs. Streaming. Full source code for these examples and more is available on GitHub.

Data Coverage

Coverage

FlashAlpha covers 4,000+ US equities and ETFs with all listed expirations — weeklies, monthlies, quarterlies, and LEAPs. Data updates in real-time during market hours (9:30 AM - 4:00 PM ET).

Coverage specifics:

  • Equities: All optionable US stocks and ETFs
  • Expirations: Every listed expiration from weeklies through LEAPs (2+ years out)
  • Strikes: Full listed strike range per expiration
  • Update frequency: Real-time during market hours, with 15-second response caching
  • Exposure analytics: Computed for all tracked symbols with sufficient open interest
  • Volatility surfaces: Available for major tickers, no authentication required via /v1/surface/{symbol}

Use GET /v1/tickers to retrieve the full list of available tickers, or GET /v1/symbols to see which symbols are actively tracked for exposure analytics. Explore gamma exposure data interactively using our GEX tool.

Pricing

PlanPriceDaily CallsBest For
Free$0/mo50Exploration, prototyping, small watchlists
Basic$49/mo250Side projects, screening tools, personal dashboards
Trader$129/mo1,000Active trading systems, multi-ticker scanning
Growth$299/mo2,500Production apps, full exposure suite, AI narratives

Start free, scale when ready. The free tier gives you 50 API calls per day — enough to prototype any integration or run a focused watchlist scanner. Growth unlocks advanced endpoints like exposure summaries, AI narrative analysis, option quotes with greeks, and Kelly criterion sizing.

For a comparison with other providers, see Options API Comparison: FlashAlpha vs. Tradier vs. Polygon vs. Intrinio.

View pricing and get your API key →

Getting Started

Three paths depending on where you are:

  1. Get Your API Key — Sign up and grab your key. The free plan requires no credit card.
  2. Try the Playground — Test endpoints interactively before writing any code.
  3. Read the Docs — Full API reference with every endpoint, parameter, and response schema.
  4. Browse on GitHub — Python SDK, example scripts, and open-source tools.

If you prefer a guided introduction, the Lab API Overview walks through the architecture and authentication flow step by step.

Frequently Asked Questions

You can access live option quotes (bid, ask, mid, last, volume, open interest), pre-computed greeks (delta, gamma, theta, vega), implied volatility per strike, IV rank, IV percentile, full volatility surface grids, and advanced exposure analytics including gamma exposure (GEX), delta exposure (DEX), vanna exposure (VEX), and charm exposure (CHEX). Growth tier users also get AI-generated narrative analysis of dealer positioning and Kelly criterion position sizing.
Yes. The free plan includes 50 API calls per day at no cost and requires no credit card. It covers most endpoints and is sufficient for prototyping, personal projects, and small watchlist scanners. Our free tier guide shows you how to get the most out of those 50 daily calls.
No. All greeks are pre-computed server-side using Black-Scholes-Merton. The /optionquote endpoint returns delta, gamma, theta, and vega alongside the quote data. If you want to compute greeks for hypothetical scenarios (custom spot, strike, vol inputs), use the /v1/pricing/greeks endpoint. See our greeks API article for details.
There is an official Python SDK (pip install flashalpha). Since the API is standard REST with JSON responses, you can call it from any language using HTTP — JavaScript, Go, Rust, Java, C#, or anything else with an HTTP client. The Python SDK simply provides convenience wrappers around the REST endpoints.
Data updates in real-time during US market hours (9:30 AM - 4:00 PM ET). Responses are cached for 15 seconds, so polling more frequently than that won't yield new data. For most options trading applications, 15-30 second update intervals are more than sufficient — options prices move slower than equity tick data.

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!