Skip to main content
Loading market data…
GET/api/v1/options/{underlying}Standard tier+ · 300 req/min

Deribit options chain, Greeks, put/call ratio, and max-pain strike for BTC or ETH.

Returns the latest Deribit chain for BTC or ETH — every strike, both calls and puts, with Greeks attached. Use this to visualise the term structure, compute dealer gamma, or just cherry-pick ATM IVs. The endpoint also computes put/call ratio (by OI) and max-pain for you. Without an `expiry` query we render the nearest upcoming contract.

Path parameters

Segments of the URL path, validated server-side.

NameTypeRequiredDefaultDescription
underlyingenumrequired
Which asset's chain.
BTCETH

Query parameters

All query parameters are optional unless marked required.

NameTypeRequiredDefaultDescription
expirystringoptional
Deribit `DDMMMYY` label (e.g. `25APR25`). Omit to get the nearest upcoming expiry.

Response shape

Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.

data payloadtypescript
// Wrapped in the standard envelope:
// {
//   data: /* shape below */,
//   meta?: { total?: number; limit?: number; offset?: number; ... }
// }

{
  underlying: "BTC" | "ETH";
  expiry: string | null;                   // the one we rendered
  expiries: string[];                      // every available expiry
  chain: Array<{
    strike: number;
    expiry: string;
    optionType: "C" | "P";
    markPrice: number | null;
    markIv: number | null;
    delta: number | null;
    gamma: number | null;
    vega: number | null;
    theta: number | null;
    openInterest: number | null;
    volume24h: number | null;
    underlyingPrice: number | null;
    ts: number;
  }>;
  pcr: number | null;                       // put/call by OI
  maxPain: number | null;                   // strike minimising ITM OI
  lastTs: number | null;
}

Example

Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.

Requestbash
curl -sS "http://localhost:3000/api/v1/options/BTC?expiry=25APR25" \
  -H "Authorization: Bearer cg_live_YOUR_KEY"
Responsejson
{
  "data": {
    "underlying": "BTC",
    "expiry": "25APR25",
    "expiries": ["25APR25", "02MAY25", "09MAY25", "27JUN25"],
    "chain": [
      {
        "strike": 60000,
        "expiry": "25APR25",
        "optionType": "C",
        "markPrice": 0.052,
        "markIv": 0.58,
        "delta": 0.67,
        "gamma": 0.00011,
        "vega": 45.2,
        "theta": -22.1,
        "openInterest": 1280.5,
        "volume24h": 210.0,
        "underlyingPrice": 63150,
        "ts": 1744834800000
      }
    ],
    "pcr": 0.83,
    "maxPain": 62000,
    "lastTs": 1744834800000
  },
  "meta": { "total": 1 }
}

Notes

  • Greek values are straight from Deribit's `public/get_instruments` payload; we don't re-model them.
  • Max pain is a lagging stat, not a prediction. Retail folklore; useful for intuition, not a signal on its own.

Next

Check the error code reference, or get an API key to try the request against your own account.