/api/v1/options/{underlying}Standard tier+ · 300 req/minDeribit 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.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| underlying | enum | required | — | Which asset's chain. BTCETH |
Query parameters
All query parameters are optional unless marked required.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| expiry | string | optional | — | 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.
// 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.
curl -sS "http://localhost:3000/api/v1/options/BTC?expiry=25APR25" \
-H "Authorization: Bearer cg_live_YOUR_KEY"{
"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.