VIXCentral APIvixcentral.com ↗
Access real-time and historical VIX futures term structure, VIX9D, VIX3M, VIX6M, and contract prices via the VIXCentral API. Data available from 2007.
What is the VIXCentral API?
The VIXCentral API provides 3 endpoints for accessing VIX futures term structure data and volatility market indicators. The get_current_vix_curve endpoint returns live contract month prices alongside VIX, VIX9D, VIX3M, and VIX6M index values. Historical endpoints let you retrieve the full futures curve for any single trading day back to 2007 or pull a time series across a date range up to 31 calendar days at a time.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/e33cc124-14d6-4f83-9f64-e0f8be880c00/get_current_vix_curve' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace vixcentral-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.vix_central_api import VixCentral, Curve, HistoricalCurve, Snapshot
client = VixCentral()
# Get the current VIX futures term structure
current = client.curves.current()
print(current.date, current.indicators.VIX, current.indicators.VIX3M)
for contract in current.curve:
print(contract.month, contract.last, contract.settle)
# Get historical curve for a specific date
historical = client.historicalcurves.get(date="2024-01-15")
print(historical.date, historical.vix_index)
for contract in historical.futures_curve:
print(contract.month_index, contract.price)
# Fetch a time series of daily VIX data
snapshot = client.snapshots.fetch(start_date="2024-01-10", end_date="2024-01-20")
print(snapshot.start_date, snapshot.end_date, snapshot.truncated)
for day in snapshot.days:
print(day.date, day.vix, day.futures)
Retrieves the current VIX futures term structure including month labels, Last prices, Settle prices, and major VIX indices (VIX, VIX9D, VIX3M, VIX6M). Returns a snapshot timestamped at retrieval time. Each curve entry represents one futures contract month. Indicators may be null outside trading hours.
No input parameters required.
{
"type": "object",
"fields": {
"date": "string, UTC timestamp of retrieval in YYYY-MM-DD HH:MM:SS format",
"curve": "array of objects with keys: month (string), last (number), settle (number)",
"indicators": "object with keys: VIX9D (number), VIX (number), VIX3M (number), VIX6M (number)"
},
"sample": {
"data": {
"date": "2026-06-11 00:04:15",
"curve": [
{
"last": 20.75,
"month": "Jun",
"settle": 20.9
},
{
"last": 21.5,
"month": "Jul",
"settle": 21.51
},
{
"last": 21.9,
"month": "Aug",
"settle": 21.91
}
],
"indicators": {
"VIX": 22.89,
"VIX3M": 25.67,
"VIX6M": 24.13,
"VIX9D": 22.22
}
},
"status": "success"
}
}About the VIXCentral API
Current VIX Futures Curve
The get_current_vix_curve endpoint returns a curve array where each object contains a month label, last price, and settle price for each active VIX futures contract. An indicators object accompanies the curve with four index values: VIX, VIX9D, VIX3M, and VIX6M. The response also includes a date field showing the UTC timestamp of retrieval, which lets you confirm data freshness. This endpoint takes no input parameters.
Historical Single-Day and Range Lookups
The get_historical_vix_curve endpoint accepts a single date parameter in YYYY-MM-DD format and returns the vix_index closing value alongside a futures_curve array of objects with month_index (1-based contract position) and price. Historical coverage starts from 2007, and only trading days with recorded data are returned. If you need multiple days, get_historical_range accepts start_date and end_date parameters and returns a data array where each entry contains a date, a vix value, and a futures array of contract prices. The range is capped at 31 calendar days per request; the truncated boolean in the response signals when that limit was exceeded.
Response Shape Notes
Current and historical endpoints use slightly different contract representations. The current curve uses named month strings (e.g. "Aug25") while historical endpoints use integer month_index values. The range endpoint returns futures prices as a plain array of numbers ordered by contract month, without named month labels. These structural differences are worth accounting for when merging data across endpoints in your pipeline.
The VIXCentral API is a managed, monitored endpoint for vixcentral.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when vixcentral.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official vixcentral.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track daily VIX futures contango and backwardation by plotting the
curvearray fromget_current_vix_curve - Calculate the term structure slope between front and back months using
lastandsettleprices from the current curve - Backtest volatility trading strategies using historical futures prices from
get_historical_rangeover custom 31-day windows - Monitor VIX9D vs VIX spread as a short-term sentiment signal using the
indicatorsobject - Build a rolling term structure chart by stitching sequential
get_historical_rangecalls from 2007 to present - Compare VIX3M and VIX6M to the spot VIX to assess medium-term volatility expectations
- Detect roll yield opportunities by comparing
settleprices across consecutive contract months
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does VIXCentral have an official developer API?+
What does `get_historical_range` return when the date range includes weekends or holidays?+
data array. The start_date and end_date fields in the response reflect the requested boundary dates regardless of whether those specific dates had trading activity.What happens if I request a range longer than 31 days in `get_historical_range`?+
truncated field to true in the response. To cover a longer period, issue sequential requests with non-overlapping start_date and end_date values.Does the API return options data, open interest, or volume for VIX futures contracts?+
Is intraday or tick-level VIX futures data available?+
date field in get_current_vix_curve records the UTC retrieval timestamp, but the price data itself reflects the most recent published curve rather than a tick stream. You can fork this API on Parse and revise it to add intraday polling logic if needed.