XOOMAR

Free Crypto Options API

Max pain per expiry, put/call ratio, total open interest and the DVOL volatility index for BTC and ETH options, from Deribit, updated every 15 minutes. DVOL history starts in 2021; the free API returns the last six months.

Endpoints

GET
/api/markets/options/{currency}

Current summary: max pain per expiry, P/C ratio, total OI, DVOL.

GET
/api/markets/options/{currency}/dvol?from=YYYY-MM-DD&to=YYYY-MM-DD

Hourly DVOL candles (ts, open, high, low, close), newest first; from and to select the window. History starts in 2021; the free API returns the last six months.

Examples

curl

curl https://xoomar.com/api/markets/options/BTC

Python

import requests

r = requests.get("https://xoomar.com/api/markets/options/BTC")
data = r.json()["data"]
print(f"BTC Total OI: {data['totalOI']}")
for exp in data["expiries"][:3]:
    print(f"  {exp['expiry']}: max pain ${exp['maxPain']}")

Main features

  • BTC and ETH options data from Deribit, where most crypto options open interest trades, updated every 15 minutes.
  • Max pain per expiry: the strike at which the total payout to option holders at expiry would be smallest.
  • Put/call open interest ratio overall and per expiry, plus the DVOL implied volatility index with hourly history.

Example

Request

curl "https://xoomar.com/api/markets/options/btc"

Response, live at 2026-10-15 17:12 UTC, trimmed

{
  "data": {
    "currency": "BTC",
    "underlyingPrice": 82915.05,
    "totalOI": 400805.2,
    "pcRatio": 0.614,
    "dvol": 39.04,
    "expiries": [
      {
        "expiry": "2026-10-16",
        "maxPain": 83000,
        "totalOI": 17992.3,
        "pcRatio": 1.299
      },
      {
        "expiry": "2026-10-17",
        "maxPain": 82000,
        "totalOI": 1961.9,
        "pcRatio": 2.743
      }
    ],
    "updatedAt": "2026-10-15T17:00:00.000Z"
  },
  "updatedAt": "2026-10-15T17:12:54.970Z",
  "source": "xoomar.com",
  "docs": "https://xoomar.com/markets/api",
  "license": "https://xoomar.com/terms",
  "attribution": "Credit XOOMAR with a link to the dataset page on xoomar.com when you republish this data",
  "meta": {
    "source": "Deribit",
    "sourceAttribution": "Options data: Deribit.",
    "notice": "10 requests a minute without a key, 30 with a free key. Get a free key at https://xoomar.com/signup?utm_source=api, register your app at https://xoomar.com/developers/register?utm_source=api, and credit the data as \"Data: XOOMAR\" together with the sourceAttribution line."
  }
}

expiries arrives nearest first. The dvol field is the latest hourly close; the full candles are at /api/markets/options/{currency}/dvol.

What people build with it

Expiry dashboards

Show spot next to each expiry's max pain and open interest ahead of the Friday expiries.

Volatility charts

Chart hourly DVOL next to realized volatility from your own price data.

Positioning views

Track the put/call open interest ratio per expiry to see where puts or calls are concentrated.

Research datasets

Store the 15-minute summaries on your side to build your own expiry history.

Fair use

No key needed to start. A 429 response carries a Retry-After header in seconds; cache responses on your side where you can. Need more volume? Write to info@xoomar.com.

Response shape

Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs, license, attribution, meta }. In meta, source names who publishes the data and sourceAttribution is the credit line to show with it. The data field is an object with these fields:

FieldTypeDescription
currencystringBTC or ETH
underlyingPricenumberDeribit index price of the underlying as of updatedAt
updatedAtstringThe time the figures are as of, ISO
totalOInumberTotal open interest across all strikes, in contracts
pcRationumberPut/call open interest ratio across all expiries
dvolnumber | nullDeribit implied volatility index (crypto VIX)
expiriesarrayPer-expiry summaries for the nearest 10 expiries, nearest first
expiries[].expirystring (date)Expiry date YYYY-MM-DD
expiries[].maxPainnumber | nullThe strike at which the total payout to option holders at expiry would be smallest
expiries[].totalOInumberOpen interest for that expiry
expiries[].pcRationumberPut/call ratio for that expiry

The summary refreshes every 15 minutes, from Deribit.

Numeric fields typed string in the table carry exact decimals; parse them with your language's decimal type. No key needed to start: 10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history. A 429 response carries a Retry-After header in seconds. Credit XOOMAR with a link to the dataset page when you republish the data; the data terms are on the terms page.

A free account key raises the limit; send it in an X-API-Key header.

Frequently Asked Questions

What options data is available?
Max pain per expiry, put/call OI ratio, total open interest, and underlying price. For BTC and ETH.
How often does it update?
Every 15 minutes, from Deribit.
What is max pain?
The strike at which the total payout to option holders at expiry would be smallest. It's a level of open interest, not a price forecast.
Is DVOL history available?
Yes. /api/markets/options/{currency}/dvol returns hourly DVOL candles; from and to select the window. History starts in 2021; the free API returns the last six months.

Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.