Perpetuals API

One coin's options max pain strike at each expiry, on one venue

The strike at which a coin's open options would be worth the least to their holders, at each expiry, with the call and put open interest behind it.

GET/api/external/perps/options-max-pain/{symbol}

What it returns

The MAX PAIN strike at each of a coin's options expiries: the price at which the open contracts would expire worth the least to their holders — the level the open book points at — with the call and put open interest behind it, both in contracts and in US dollars. Nearest expiry first. Max pain is stated PER VENUE here: the source publishes no cross-venue figure and this API derives none, so venue selects which book and comparing venues means asking again per venue. Only the handful of coins with a listed options market answer; every other well-formed ticker is a 404. options-markets answers how big each venue's options book is, and options-history how it has moved. symbol is the coin ticker, matched case-insensitively — not an instrument id, not a token mint or contract address, and not scoped to any of this API's chains.

Chains

This endpoint is not tied to a chain: it takes no chain in its request.

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -H "x-dex-data-key: $DEXDATA_API_KEY" \
  "https://api.dexdata.io/api/external/perps/options-max-pain/<symbol>"
Parameters
ParameterDescription
venue

query · string · optional

Whose options book to read. There is no cross-venue value to ask for and no "all": the source states max pain one venue at a time, so compare venues by asking again per venue. Defaults to Deribit, the deepest book measured. A venue that lists the coin thinly still answers, sometimes with a single expiry.DeribitOKXBinanceBybit
symbol

path · string · required

The coin (base asset) ticker, e.g. "BTC", "ETH" or "SOL" — not an instrument id such as "BTC-27JUN25-100000-C", and not a token mint or contract address. Case-insensitive.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of One coin's options max pain strike at each expiry, on one venue
FieldTypeDescription
symbolstringThe coin ticker, any case on the way in (e.g. "BTC"); answered upper-cased.
venuestringThe venue whose book this answer is, echoed back.
expiriesobject[]One entry per expiry the venue lists, by expiry ascending — the nearest first. An expiry the source states no usable date for is left out rather than dated by guess.
expiries[].expirystringThe expiry date, YYYY-MM-DD, UTC.
expiries[].maxPainPricenumber | nullThe strike at which the contracts open at this expiry would be worth the least to their holders in total, in US dollars. Not a forecast and not a price target: it is where the open book currently sits.
expiries[].callOpenInterestnumber | nullOpen call contracts at this expiry, in units of the coin.
expiries[].putOpenInterestnumber | nullOpen put contracts at this expiry, in units of the coin.
expiries[].callNotionalUsdnumber | nullWhat those calls control: the open contracts at spot, US dollars.
expiries[].putNotionalUsdnumber | nullWhat those puts control: the open contracts at spot, US dollars.
expiries[].callMarketValueUsdnumber | nullWhat those calls are themselves worth — the premium on the open contracts, US dollars. Far smaller than callNotionalUsd, which is what they control.
expiries[].putMarketValueUsdnumber | nullWhat those puts are themselves worth — the premium on the open contracts, US dollars. Far smaller than putNotionalUsd, which is what they control.

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key