OptionCharts APIoptioncharts.io ↗
Access options chains, Greeks, expiration dates, flow data, and market trends for any ticker via the OptionCharts.io API. 7 endpoints, no scraping required.
What is the OptionCharts API?
The OptionCharts.io API exposes 7 endpoints covering options chains, expiration summaries, large-trade flow, and market activity for any US equity ticker. The get_option_chain endpoint returns per-strike contract data including bid, ask, mid, volume, open interest, implied volatility, and all four Greeks — Delta, Gamma, Theta, and Vega — for calls, puts, or both. Companion endpoints handle expiration-date discovery, ticker search, and cross-market flow monitoring.
curl -X GET 'https://api.parse.bot/scraper/9dc19de8-1782-4128-af13-1d0465e91e59/get_option_chain?ticker=AAPL&expiration=Jun+12%2C+2026+%281+days%29+%28w%29&option_type=both' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace optioncharts-io-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: OptionCharts SDK — bounded, re-runnable; every call capped."""
from parse_apis.optioncharts_io_api import OptionCharts, OptionType, TickerInputError
client = OptionCharts()
# Search for a ticker by name, take the first result and drill into details.
result = client.tickersummaries.search(term="Apple", limit=3).first()
if result:
ticker_detail = result.details()
print(f"{ticker_detail.name} ({ticker_detail.symbol}): ${ticker_detail.price}")
# Construct a Ticker directly and list its expiration dates.
aapl = client.ticker(symbol="AAPL")
for exp in aapl.expirations.list(limit=3):
print(exp.expiration, exp.max_pain, exp.implied_volatility)
# List call options filtered by type using the OptionType enum.
for contract in aapl.options.list(option_type=OptionType.CALLS, limit=5):
print(contract.strike, contract.bid, contract.ask, contract.delta)
# Get the most active tickers by option volume.
for active in client.activetickers.list(limit=5):
print(active.symbol, active.name, active.option_volume, active.volume_put_call_ratio)
# Typed error handling around a call with an invalid ticker.
try:
bad = client.ticker(symbol="").options.list(limit=1).first()
except TickerInputError as exc:
print(f"Input error caught: {exc}")
# Check options flow for the largest recent trades.
for trade in client.flowtrades.list(limit=3):
print(trade.symbol, trade.contract, trade.sentiment, trade.total_value)
print("exercised: tickersummaries.search / ticker.details / expirations.list / options.list / activetickers.list / flowtrades.list")
Returns the full options chain (calls and puts) for a ticker symbol. Uses the nearest expiration date by default unless a specific expiration is provided. Results include strike price, bid/ask/mid prices, volume, open interest, implied volatility, and Greeks (Delta, Gamma, Theta, Vega). Filter by option_type to see only calls, only puts, or both.
| Param | Type | Description |
|---|---|---|
| tickerrequired | string | Stock ticker symbol (e.g., AAPL, SPY, TSLA) |
| expiration | string | Expiration date to filter by, as shown in get_expiration_dates results (e.g., 'Jun 12, 2026 (1 days) (w)') |
| option_type | string | Option type filter: 'calls', 'puts', or 'both' |
{
"type": "object",
"fields": {
"items": "array of option contract objects with Strike, Last Price, Bid, Mid, Ask, Volume, Open Interest, Implied Volatility, Delta, Gamma, Theta, Vega"
},
"sample": {
"data": {
"items": [
{
"Ask": "183.40",
"Bid": "180.05",
"Mid": "181.73",
"Vega": "0.00",
"Delta": "1.00",
"Gamma": "0.0000",
"Theta": "-0.01",
"Strike": "110.00",
"Volume": "0",
"Last Price": "9.90",
"Open Interest": "0",
"Implied Volatility": "0.00%"
}
]
},
"status": "success"
}
}About the OptionCharts API
Options Chain and Contract Data
The get_option_chain endpoint takes a ticker (required) and accepts optional expiration and option_type filters. When no expiration is provided, the nearest available date is used. Each contract object in the response includes Strike, Last Price, Bid, Mid, Ask, Volume, Open Interest, Implied Volatility, Delta, Gamma, Theta, and Vega. get_call_options_by_strike returns the same field set filtered to calls only, useful when you want to skip the option_type parameter in your request logic.
Expiration Dates and Summary Statistics
get_expiration_dates returns every available expiration for a ticker along with aggregate statistics per date: Volume Calls, Volume Puts, Volume Put-Call Ratio, Open Interest Calls, Open Interest Puts, Implied Volatility, Expected Move, and Max Pain. The expiration strings returned here are the correct format to pass back into get_option_chain or get_call_options_by_strike as the expiration parameter.
Market-Wide Activity and Flow
get_most_active_by_ticker returns a ranked list of symbols by total option volume across the market, including Call Volume, Put Volume, Volume Put-Call Ratio, and Avg Daily Volume %. The get_options_flow endpoint surfaces the largest individual trades across all tickers, with each record including Symbol, Contract, Type, Sentiment, Total Value, Total Size, Avg Price, and Underlying Price at Execution. These two endpoints require no input parameters.
Ticker Lookup and Overview
search_ticker accepts a free-text term — either a symbol fragment or company name — and returns matching symbol and name pairs. get_ticker_overview returns the company name, ticker, and current price for a given symbol, which is useful for confirming instrument identity before pulling chain data.
The OptionCharts API is a managed, monitored endpoint for optioncharts.io — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when optioncharts.io changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official optioncharts.io API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build an options screener that filters contracts by implied volatility and open interest using
get_option_chainresponse fields - Track max pain and expected move across all upcoming expirations using
get_expiration_datesaggregate statistics - Monitor unusual options activity by polling
get_options_flowfor large trades with sentiment labels - Identify the most traded tickers in the options market using
get_most_active_by_tickerput-call ratios and volume data - Resolve company names to ticker symbols before fetching chain data using
search_ticker - Display a ticker summary card with current price alongside Greeks from the nearest expiration chain
- Calculate put-call skew by comparing call and put volumes per expiration date returned by
get_expiration_dates
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does OptionCharts.io have an official developer API?+
What Greeks does `get_option_chain` return, and are they available for both calls and puts?+
option_type to 'calls', 'puts', or 'both' controls which side of the chain is included; the Greek fields are present regardless of which type is requested.What does `get_options_flow` include, and how does it differ from `get_most_active_by_ticker`?+
get_options_flow returns individual large trades with fields like Contract, Sentiment, Total Value, Total Size, and Underlying Price at Execution — it is trade-level data. get_most_active_by_ticker aggregates volume at the ticker level, showing which symbols are seeing the most options activity overall. Neither endpoint requires any input parameters.Can I filter options flow by ticker symbol or by a minimum trade size?+
get_options_flow currently returns the full cross-market flow feed with no ticker or size filter parameters. The API covers the fields needed to filter client-side: Symbol, Total Value, and Total Size are all present in each response record. You can fork this API on Parse and revise it to add server-side filter parameters for those fields.