Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Theta Data v3 Index API
description: Real-time and historic stock, options, and index data!
version: 3.0.0
x-java-package: net.thetadata.generated
servers:
- url: http://127.0.0.1:25503/v3
description: dev
security: []
tags:
- name: Index
paths:
/index/list/symbols:
x-concurrent-limit-ttl-ms: '334'
x-min-subscription: free
get:
summary: Symbols
operationId: index_list_symbols
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.index_list_symbols()
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.index_list_symbols()
'
tags:
- Index
description: 'A symbol can be defined as a unique identifier for a stock / underlying asset. Common terms also include: root, ticker, and underlying. This endpoint returns all traded symbols for options. This endpoint is updated overnight.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/index/list/symbols
description: List all symbols for indices
- url: http://127.0.0.1:25503/v3/index/list/symbols?format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/format'
responses:
'200':
description: List all symbols for indices
content:
text/csv:
schema:
type: array
items:
type: object
properties:
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
example: 'symbol
AASGI
AASUS
ACNAC
ACNIT
ACNRE
'
application/json:
schema:
type: array
items:
type: object
properties:
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
example: "{\n \"response\": [\n {\"symbol\":\"AASGI\"},\n {\"symbol\":\"AASUS\"},\n {\"symbol\":\"ACNAC\"},\n {\"symbol\":\"ACNIT\"},\n {\"symbol\":\"ACNRE\"}\n ]\n}\n"
application/x-ndjson:
schema:
type: array
items:
type: object
properties:
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
example: '{"symbol":"AASGI"}
{"symbol":"AASUS"}
{"symbol":"ACNAC"}
{"symbol":"ACNIT"}
{"symbol":"ACNRE"}'
python/pandas:
schema:
type: array
items:
type: object
properties:
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
example: "symbol\n0 \n1 .MSDXUTPU\n2 1500GNTR\n3 1500PG\n4 1500PGTR\n... ...\n13195 ZRX200K\n13196 ZRX3KRP\n13197 ZSLIV\n13198 ZVOLIV\n13199 ZYA\n\n[13200 rows x 1 columns]\n"
python/polars:
schema:
type: array
items:
type: object
properties:
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
example: 'shape: (13_200, 1)
┌───────────┐
│ symbol │
│ --- │
│ str │
╞═══════════╡
│ │
│ .MSDXUTPU │
│ 1500GNTR │
│ 1500PG │
│ 1500PGTR │
│ … │
│ ZRX200K │
│ ZRX3KRP │
│ ZSLIV │
│ ZVOLIV │
│ ZYA │
└───────────┘
'
/index/list/dates:
x-concurrent-limit-ttl-ms: '12'
x-min-subscription: free
get:
summary: Dates
operationId: index_list_dates
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.index_list_dates(symbol=[''SPX''])
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.index_list_dates(symbol=[''SPX''])
'
tags:
- Index
description: 'Lists all dates of data that are available for a index with a given request type and symbol. This endpoint is updated overnight.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/index/list/dates?symbol=SPX
description: List all dates for a index for a given symbol
- url: http://127.0.0.1:25503/v3/index/list/dates?symbol=SPX&format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/multi_symbol'
- $ref: '#/components/parameters/format'
responses:
'200':
description: List all dates for a index for a given symbol
content:
text/csv:
schema:
type: array
items:
type: object
properties:
date:
type: string
format: date
description: The date formated as YYYY-MM-DD.
example: 'date
2023-04-17
2023-04-18
2023-04-19
2023-04-20
2023-04-21
'
application/json:
schema:
type: array
items:
type: object
properties:
date:
type: string
format: date
description: The date formated as YYYY-MM-DD.
example: "{\n \"response\": [\n {\"date\":\"2023-04-17\"},\n {\"date\":\"2023-04-18\"},\n {\"date\":\"2023-04-19\"},\n {\"date\":\"2023-04-20\"},\n {\"date\":\"2023-04-21\"}\n ]\n}\n"
application/x-ndjson:
schema:
type: array
items:
type: object
properties:
date:
type: string
format: date
description: The date formated as YYYY-MM-DD.
example: '{"date":"2023-04-17"}
{"date":"2023-04-18"}
{"date":"2023-04-19"}
{"date":"2023-04-20"}
{"date":"2023-04-21"}'
python/pandas:
schema:
type: array
items:
type: object
properties:
date:
type: string
format: date
description: The date formated as YYYY-MM-DD.
example: 'date
0 2017-01-03
1 2017-01-04
2 2017-01-05
3 2017-01-06
4 2017-01-09
... ...
2335 2026-04-20
2336 2026-04-21
2337 2026-04-22
2338 2026-04-23
2339 2026-04-24
[2340 rows x 1 columns]
'
python/polars:
schema:
type: array
items:
type: object
properties:
date:
type: string
format: date
description: The date formated as YYYY-MM-DD.
example: 'shape: (2_340, 1)
┌────────────┐
│ date │
│ --- │
│ str │
╞════════════╡
│ 2017-01-03 │
│ 2017-01-04 │
│ 2017-01-05 │
│ 2017-01-06 │
│ 2017-01-09 │
│ … │
│ 2026-04-20 │
│ 2026-04-21 │
│ 2026-04-22 │
│ 2026-04-23 │
│ 2026-04-24 │
└────────────┘
'
/index/snapshot/ohlc:
x-skip-concurrent-limit: true
x-min-subscription: standard
get:
summary: Open High Low Close
operationId: index_snapshot_ohlc
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.index_snapshot_ohlc(symbol=[''SPX''])
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.index_snapshot_ohlc(symbol=[''SPX''])
'
tags:
- Index
description: '- Retrieves the real-time current day OHLC.
- [Exchanges](/Articles/Data-And-Requests/The-SIPs.html) typically generate a price report every second for popular indices like SPX.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/index/snapshot/ohlc?symbol=SPX
description: Returns OHLC for a given index price change
- url: http://127.0.0.1:25503/v3/index/snapshot/ohlc?symbol=SPX&format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/multi_symbol'
- $ref: '#/components/parameters/min_time'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Returns OHLC for a given index price change
content:
text/csv:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
open:
type: number
description: The opening trade price.
high:
type: number
description: The highest traded price.
low:
type: number
description: The lowest traded price.
close:
type: number
description: The closing traded price.
volume:
type: integer
description: The amount of contracts / shares traded.
count:
type: integer
description: The amount of trades.
example: 'timestamp,symbol,open,high,low,close,volume,count
2025-08-20T16:02:06,SPX,6406.62,6408.40,6343.86,6395.78,0,0
'
application/json:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
open:
type: number
description: The opening trade price.
high:
type: number
description: The highest traded price.
low:
type: number
description: The lowest traded price.
close:
type: number
description: The closing traded price.
volume:
type: integer
description: The amount of contracts / shares traded.
count:
type: integer
description: The amount of trades.
example: "{\n \"response\": [\n {\"volume\":0,\"symbol\":\"SPX\",\"high\":6408.40,\"low\":6343.86,\"count\":0,\"close\":6395.78,\"open\":6406.62,\"timestamp\":\"2025-08-20T16:02:06\"}\n ]\n}\n"
application/x-ndjson:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
open:
type: number
description: The opening trade price.
high:
type: number
description: The highest traded price.
low:
type: number
description: The lowest traded price.
close:
type: number
description: The closing traded price.
volume:
type: integer
description: The amount of contracts / shares traded.
count:
type: integer
description: The amount of trades.
example: '{"volume":0,"symbol":"SPX","high":6408.40,"low":6343.86,"count":0,"close":6395.78,"open":6406.62,"timestamp":"2025-08-20T16:02:06"}'
python/pandas:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
open:
type: number
description: The opening trade price.
high:
type: number
description: The highest traded price.
low:
type: number
description: The lowest traded price.
close:
type: number
description: The closing traded price.
volume:
type: integer
description: The amount of contracts / shares traded.
count:
type: integer
description: The amount of trades.
example: 'timestamp symbol open high low close volume count
0 2026-04-27 12:13:45-04:00 SPX 7152.72 7167.7 7146.72 7163.15 0 0
'
python/polars:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
open:
type: number
description: The opening trade price.
high:
type: number
description: The highest traded price.
low:
type: number
description: The lowest traded price.
close:
type: number
description: The closing traded price.
volume:
type: integer
description: The amount of contracts / shares traded.
count:
type: integer
description: The amount of trades.
example: 'shape: (1, 8)
┌────────────────────────────────┬────────┬─────────┬────────┬─────────┬─────────┬────────┬───────┐
│ timestamp ┆ symbol ┆ open ┆ high ┆ low ┆ close ┆ volume ┆ count │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ datetime[ms, America/New_York] ┆ str ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ i64 ┆ i64 │
╞════════════════════════════════╪════════╪═════════╪════════╪═════════╪═════════╪════════╪═══════╡
│ 2026-04-27 12:13:45 EDT ┆ SPX ┆ 7152.72 ┆ 7167.7 ┆ 7146.72 ┆ 7163.15 ┆ 0 ┆ 0 │
└────────────────────────────────┴────────┴─────────┴────────┴─────────┴─────────┴────────┴───────┘
'
/index/snapshot/price:
x-skip-concurrent-limit: true
x-min-subscription: standard
get:
summary: Price
operationId: index_snapshot_price
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.index_snapshot_price(symbol=[''SPX''])
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.index_snapshot_price(symbol=[''SPX''])
'
tags:
- Index
description: '- Retrieves a real-time last index price.
- [Exchanges](/Articles/Data-And-Requests/The-SIPs.html) typically generate a price report every second for popular indices like SPX.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/index/snapshot/price?symbol=SPX
description: Returns last index price
- url: http://127.0.0.1:25503/v3/index/snapshot/price?symbol=SPX&format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/multi_symbol'
- $ref: '#/components/parameters/min_time'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Returns last index price
content:
text/csv:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
price:
type: number
description: The trade price.
example: 'timestamp,symbol,price
2025-08-20T16:02:06,SPX,6395.78
'
application/json:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
price:
type: number
description: The trade price.
example: "{\n \"response\": [\n {\"symbol\":\"SPX\",\"price\":6395.78,\"timestamp\":\"2025-08-20T16:02:06\"}\n ]\n}\n"
application/x-ndjson:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
price:
type: number
description: The trade price.
example: '{"symbol":"SPX","price":6395.78,"timestamp":"2025-08-20T16:02:06"}'
python/pandas:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
price:
type: number
description: The trade price.
example: 'timestamp symbol price
0 2026-04-27 12:13:45-04:00 SPX 7163.15
'
python/polars:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
price:
type: number
description: The trade price.
example: 'shape: (1, 3)
┌────────────────────────────────┬────────┬─────────┐
│ timestamp ┆ symbol ┆ price │
│ --- ┆ --- ┆ --- │
│ datetime[ms, America/New_York] ┆ str ┆ f64 │
╞════════════════════════════════╪════════╪═════════╡
│ 2026-04-27 12:13:46 EDT ┆ SPX ┆ 7163.21 │
└────────────────────────────────┴────────┴─────────┘
'
/index/snapshot/market_value:
x-skip-concurrent-limit: true
x-min-subscription: standard
get:
summary: Market Value
operationId: index_snapshot_market_value
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.index_snapshot_market_value(symbol=[''SPX''])
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.index_snapshot_market_value(symbol=[''SPX''])
'
tags:
- Index
description: '- Retrieves a real-time last index market value.
- [Exchanges](/Articles/Data-And-Requests/The-SIPs.html) typically generate a price report every second for popular indices like SPX.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/index/snapshot/market_value?symbol=SPX
description: Returns last market value
- url: http://127.0.0.1:25503/v3/index/snapshot/market_value?symbol=SPX&format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/multi_symbol'
- $ref: '#/components/parameters/min_time'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Returns last index market value
content:
text/csv:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
market_price:
type: number
description: The index market price.
example: 'timestamp,symbol,market_price
2025-08-20T16:02:06,SPX,6395.81
'
application/json:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
market_price:
type: number
description: The index market price.
example: "{\n \"response\": [\n {\"symbol\":\"SPX\",\"market_price\":6395.81,\"timestamp\":\"2025-08-20T16:02:06\"}\n ]\n}\n"
application/x-ndjson:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
market_price:
type: number
description: The index market price.
example: '{"symbol":"SPX","market_price":6395.81,"timestamp":"2025-08-20T16:02:06"}'
python/pandas:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
market_price:
type: number
description: The index market price.
example: 'timestamp symbol market_price
0 2026-04-27 12:13:46-04:00 SPX 7163.18
'
python/polars:
schema:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format.
symbol:
type: string
description: The symbol of the contract, or stock / underlying asset / option / index.
market_price:
type: number
description: The index market price.
example: 'shape: (1, 3)
┌────────────────────────────────┬────────┬──────────────┐
│ timestamp ┆ symbol ┆ market_price │
│ --- ┆ --- ┆ --- │
│ datetime[ms, America/New_York] ┆ str ┆ f64 │
╞════════════════════════════════╪════════╪══════════════╡
│ 2026-04-27 12:13:46 EDT ┆ SPX ┆ 7163.19 │
└────────────────────────────────┴────────┴──────────────┘
'
/index/history/eod:
x-concurrent-limit-ttl-ms: '164'
x-min-subscription: free
x-history-access: true
get:
summary: End of Day
operationId: index_history_eod
x-codeSamples:
- lang: Python
label: pandas
source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='pandas')\ndf = client.index_history_eod(\n symbol='SPX',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 8),\n)\n"
- lang: Python
label: polars
source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='polars')\ndf = client.index_history_eod(\n symbol='SPX',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 8),\n)\n"
tags:
- Index
description: '- Since [the ind
# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thetadata/refs/heads/main/openapi/thetadata-index-api-openapi.yml