Free key · 10 calls/day Commercial JSON · $149/mo
Where is options open interest concentrated for each expiration?
Send one US stock or ETF symbol. The Max Pain API returns the max pain strike, put/call ratio and largest open-interest concentrations for every expiration inside 45 days — as dated JSON that a person, script or AI agent can compare and monitor.
Get free API key View a real response
NVDA One liquid US stock or ETF /v1/maxpain/NVDA Computed on demand from settled open interest max_pain[] One dated record per expiration This is the commercial JSON product. The Max Pain directory remains free: nightly HTML snapshots for a curated ticker set, no email or key. Use the API when you need another optionable symbol, structured output, repeated comparisons or an unattended workflow. The free key exercises the same API; paid access is for sustained, batch or unattended use.
What one response gives you
One answer per expiration
Max pain is not one permanent number for a ticker. Near and far expirations can disagree,
so the API returns every expiration in the 45-day window with its own dte.
The chain around the answer
Alongside the strike you get call and put open interest, the put/call ratio and the
highest-open-interest strike on each side. Add ?distribution=true for the
strike-level distribution.
Dates an agent can audit
as_of identifies the settlement used for open interest; spot_date
identifies the close used for distance calculations. A stale fallback is explicitly marked
with stale: true.
The calculation in the payload
Every response carries method, note and
disclaimer. Your agent does not need a separate prompt to remember what the
number is — or what it is not.
The endpoint
Base URL https://api.quantdata.uk. Send X-API-Key: qd_...; there is no SDK, OAuth
flow or session state. The same key opens the
Brooks Events API,
Weis / Wyckoff API and
Gamma API. One plan covers all four.
| Input | Where | Default | What it changes |
|---|---|---|---|
symbol | path | required | US-listed stock or ETF with a liquid option chain. |
distribution | query | false | Adds the full oi_by_strike distribution for each expiration. |
GET /v1/maxpain/{symbol}
This is the recorded 200 response published in the API contract for NVDA. Two
expirations are shown; a live call returns every qualifying expiration inside 45 days.
$ curl -H "X-API-Key: qd_9f3c..." \
https://api.quantdata.uk/v1/maxpain/NVDA
{
"symbol": "NVDA",
"as_of": "2026-07-24",
"spot": 202.0599,
"spot_date": "2026-07-27",
"contracts": 1634,
"max_pain": [
{
"expiration": "2026-07-27",
"dte": 3,
"max_pain": 210.0,
"spot_vs_max_pain_pct": -3.78,
"call_oi": 68508,
"put_oi": 70326,
"put_call_ratio": 1.027,
"highest_call_oi_strike": 240.0,
"highest_put_oi_strike": 200.0
},
{
"expiration": "2026-07-31",
"dte": 7,
"max_pain": 200.0,
"spot_vs_max_pain_pct": 1.03,
"call_oi": 276006,
"put_oi": 242793,
"put_call_ratio": 0.88,
"highest_call_oi_strike": 220.0,
"highest_put_oi_strike": 170.0
}
],
"method": "For each expiration, the strike that minimises the total payout to option buyers if the underlying settled there. Computed from open interest alone: no pricing model, no volatility assumption, no fitted parameter.",
"note": "Open interest as of the prior settlement, so this describes yesterday's positioning; dte is counted from as_of, the date the open interest was measured. highest_call_oi_strike and highest_put_oi_strike are simply the strikes carrying the most open interest; we have not measured whether price respects them, and they are not support or resistance levels. Descriptive output only: no forecast and no directional claim is made.",
"disclaimer": "Educational analytics, not investment advice."
}
Read it as a dated chain summary: on the 2026-07-24 open-interest settlement, the
Jul 27 and Jul 31 expirations produced different max pain strikes. Neither value is promoted to
a single ticker-level target.
Two workflows, the same contract
Monitor one symbol through time
Call the same ticker after each new settlement, store as_of, and compare how
max pain, put/call ratio and the largest OI concentrations move across expirations. This is
the depth workflow: one instrument, repeatedly observed.
Compare a watchlist in one pass
Run the same request across the optionable stocks and ETFs you care about, then compare like-for-like fields. This is the breadth workflow: many symbols, one stable JSON shape, suitable for a scheduled agent.
A first request for an uncached symbol can return 202 with
retry_after_seconds: 90. Retry that request after the stated delay. Thin chains,
rejected symbols and failed lookups are not charged.
Freshness: settled, not live
Open interest is published after settlement. A call made during Tuesday’s session will
normally describe Monday’s positions, even if the accompanying spot close is newer. This
is not a refresh-rate problem the API can solve: there is no live intraday open-interest feed
underneath the calculation. Always cite as_of, especially close to expiration.
as_of Method: arithmetic, not a pricing model
For each expiration the service tries every listed strike and asks: if the underlying settled here, what total intrinsic payout would option buyers receive? The strike with the smallest total payout is max pain. The inputs are strike and open interest. There is no implied volatility, interest rate, fitted coefficient or dealer-position assumption.
That makes the result reproducible: two people holding the same de-duplicated chain will compute the same number. It does not make the number predictive. Arithmetic certainty about a chain is different from evidence about where price will trade.
Honest limits
US equity and ETF options only
Hong Kong, A-share, futures, FX and crypto symbols return 400. Cash-settled
index roots do too; use SPY, QQQ or IWM instead of
SPX, NDX or RUT.
Liquidity is required
The chain needs at least 200 contracts across at least three expirations inside 45 days.
A thinner chain returns 404 instead of a plausible-looking unstable figure.
No intraday positioning
Same-day opening, closing and rolling activity is absent until the next settlement. The limitation is largest near expiry, when same-day flow can matter most.
No measured price reaction
The endpoint does not label max pain or the OI walls as targets, support or resistance. Quant Data has not published a hit rate for those levels.
Frequently asked
What does the Max Pain API return?
It returns one record for every listed expiration inside 45 days: the max pain strike, its distance from spot, total call and put open interest, put/call ratio, and the strikes carrying the most call and put open interest. Add distribution=true to receive open interest by strike for each expiration.
How fresh is the open interest?
Open interest settles overnight. The response therefore describes the prior settlement, not live intraday positioning. Always read and store as_of; spot_date can be one trading day newer than the open-interest date.
Is max pain a price target or support and resistance?
No. Max pain is an arithmetic result about an option chain. Quant Data has not published evidence that price moves toward it or respects the highest-open-interest strikes, so the API makes no forecast and returns no trading instruction.
What is the difference between the free Max Pain pages and this API?
The free pages are nightly HTML snapshots for a curated set of tickers and need no key. The commercial API returns JSON on demand for any US-listed stock or ETF whose option chain meets the liquidity thresholds, which makes it suitable for watchlists, scheduled jobs and AI agents. A free API key lets you test the same commercial endpoint before upgrading.
Can I call SPX, NDX, RUT or VIX?
No. Cash-settled index roots return 400 because the price source used by the calculation does not carry those index levels. Use the tracking ETF instead: SPY for SPX, QQQ for NDX and IWM for RUT.
Can an AI agent use the Max Pain API?
Yes. It is one HTTP GET with an X-API-Key header and structured error responses. A cold symbol can return 202 with retry_after_seconds; an agent can wait, retry the same request, then cite as_of and the relevant expiration alongside any result.
Try the Max Pain API with your own ticker
One email gets a free qd_ key with 10 successful calls per UTC day across Max Pain, Gamma, Brooks Events and Weis / Wyckoff. No account or card. Upgrade only when you need sustained, batch or unattended access.
Get free API key Buy full API access
Paid access starts with 3 days free after a card is added. The Max Pain and GEX pages stay free and need no key at all.
Questions first? quantdata@quantdata.uk — a person reads it.
Educational analytics, not investment advice. The endpoint describes options positioning and makes no forecast, recommendation, target or claim about future price.