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 Stock 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: Stock
paths:
/stock/list/symbols:
x-concurrent-limit-ttl-ms: '339'
x-min-subscription: free
get:
summary: Symbols
operationId: stock_list_symbols
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.stock_list_symbols()
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.stock_list_symbols()
'
tags:
- Stock
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 stocks. This endpoint is updated overnight.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/stock/list/symbols
description: List all stock symbols
- url: http://127.0.0.1:25503/v3/stock/list/symbols?format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/format'
responses:
'200':
description: List all stock symbols
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
A
AA
AAA
AAAA
AAAP
'
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\": \"A\"},\n {\"symbol\": \"AA\"},\n {\"symbol\": \"AAA\"},\n {\"symbol\": \"AAAA\"},\n {\"symbol\": \"AAAP\"}\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":"A"}
{"symbol":"AA"}
{"symbol":"AAA"}
{"symbol":"AAAA"}
{"symbol":"AAAP"}'
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
0 .PR.I.PR.A
1 .PR.I.PR.B
2 .PR.S/WI
3 A
4 AA
... ...
25524 ZYN
25525 ZYNE
25526 ZYXI
25527 ZZK
25528 ZZZ
[25529 rows x 1 columns]
'
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: (25_529, 1)
┌────────────┐
│ symbol │
│ --- │
│ str │
╞════════════╡
│ .PR.I.PR.A │
│ .PR.I.PR.B │
│ .PR.S/WI │
│ A │
│ AA │
│ … │
│ ZYN │
│ ZYNE │
│ ZYXI │
│ ZZK │
│ ZZZ │
└────────────┘
'
/stock/list/dates/{request_type}:
x-concurrent-limit-ttl-ms: '20'
x-min-subscription: free
x-symbol-wildcard: true
get:
summary: Dates
operationId: stock_list_dates
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.stock_list_dates(request_type=''quote'', symbol=[''AAPL''])
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.stock_list_dates(request_type=''quote'', symbol=[''AAPL''])
'
tags:
- Stock
description: 'Lists all dates of data that are available for a stock with a given request type and symbol. This endpoint is updated overnight.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/stock/list/dates/quote?symbol=AAPL
description: List all dates for a stock quote for a given symbol
- url: http://127.0.0.1:25503/v3/stock/list/dates/trade?symbol=AAPL,SPY
description: List all dates for a stock trade for multiple symbols
- url: http://127.0.0.1:25503/v3/stock/list/dates/trade?symbol=*
description: List all dates for a stock trade for all symbols
- url: http://127.0.0.1:25503/v3/stock/list/dates/quote?symbol=AAPL&format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/request_type'
- $ref: '#/components/parameters/multi_symbol'
- $ref: '#/components/parameters/format'
responses:
'200':
description: List all dates for a stock quote 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
2016-08-16
2016-08-17
2016-08-18
2016-08-19
2016-08-23
'
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\": \"2016-08-16\"},\n {\"date\": \"2016-08-17\"},\n {\"date\": \"2016-08-18\"},\n {\"date\": \"2016-08-19\"},\n {\"date\": \"2016-08-23\"}\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":"2016-08-16"}
{"date":"2016-08-17"}
{"date":"2016-08-18"}
{"date":"2016-08-19"}
{"date":"2016-08-23"}'
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 2012-06-01
1 2012-06-04
2 2012-06-05
3 2012-06-06
4 2012-06-07
... ...
3496 2026-04-20
3497 2026-04-21
3498 2026-04-22
3499 2026-04-23
3500 2026-04-24
[3501 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: (3_501, 1)
┌────────────┐
│ date │
│ --- │
│ str │
╞════════════╡
│ 2012-06-01 │
│ 2012-06-04 │
│ 2012-06-05 │
│ 2012-06-06 │
│ 2012-06-07 │
│ … │
│ 2026-04-20 │
│ 2026-04-21 │
│ 2026-04-22 │
│ 2026-04-23 │
│ 2026-04-24 │
└────────────┘
'
/stock/snapshot/ohlc:
x-skip-concurrent-limit: true
x-min-subscription: value
x-symbol-wildcard: true
get:
summary: Open High Low Close
operationId: stock_snapshot_ohlc
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.stock_snapshot_ohlc(symbol=[''AAPL''])
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.stock_snapshot_ohlc(symbol=[''AAPL''])
'
tags:
- Stock
description: '
Provides a real-time Open, High, Low, Close for the current day.
* Returns a real-time session OHLC from the [Nasdaq Basic feed](/Articles/Data-And-Requests/The-SIPs) if the account has a [stocks standard or pro subscription](https://www.thetadata.net/subscribe.html#stocks).
* Returns a 15-minute delayed session OHLC from the [UTP & CTA feeds](/Articles/Data-And-Requests/The-SIPs) if the account has the stocks value subscription.
* Theta Data resets its snapshot cache at midnight ET every day. This endpoint may not work on a weekend where there were no eligible messages sent over exchange feeds. We recommend using historic requests during the weekend.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/stock/snapshot/ohlc?symbol=*
description: Returns OHLC for stocks for all symbols
- url: http://127.0.0.1:25503/v3/stock/snapshot/ohlc?symbol=AAPL&venue=nqb
description: Returns OHLC for a given stock trade from the Nasdaq Basic feed
- url: http://127.0.0.1:25503/v3/stock/snapshot/ohlc?symbol=AAPL&venue=nqb&format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/multi_symbol'
- $ref: '#/components/parameters/venue'
- $ref: '#/components/parameters/min_time'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Returns OHLC for stocks for all symbols
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:10:04.43,CVCO,492.0000,492.0000,480.5477,485.1100,119656,7684
2025-08-20T16:11:13.962,IFRX,0.8900,0.9199,0.8529,0.8929,57048,138
2025-08-20T16:04:10.564,KLXY,0.0000,0.0000,0.0000,0.0000,9,6
2025-08-20T16:04:07.554,HCOW,23.5600,23.6976,23.5600,23.6616,3648,44
2025-08-20T16:22:32.726,SCS,16.2000,16.3200,16.1550,16.1800,992620,7690
'
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\":119656,\"symbol\":\"CVCO\",\"high\":492.0000,\"low\":480.5477,\"count\":7684,\"close\":485.1100,\"open\":492.0000,\"timestamp\":\"2025-08-20T16:10:04.43\"},\n {\"volume\":57048,\"symbol\":\"IFRX\",\"high\":0.9199,\"low\":0.8529,\"count\":138,\"close\":0.8929,\"open\":0.8900,\"timestamp\":\"2025-08-20T16:11:13.962\"},\n {\"volume\":9,\"symbol\":\"KLXY\",\"high\":0.0000,\"low\":0.0000,\"count\":6,\"close\":0.0000,\"open\":0.0000,\"timestamp\":\"2025-08-20T16:04:10.564\"},\n {\"volume\":3648,\"symbol\":\"HCOW\",\"high\":23.6976,\"low\":23.5600,\"count\":44,\"close\":23.6616,\"open\":23.5600,\"timestamp\":\"2025-08-20T16:04:07.554\"},\n {\"volume\":992620,\"symbol\":\"SCS\",\"high\":16.3200,\"low\":16.1550,\"count\":7690,\"close\":16.1800,\"open\":16.2000,\"timestamp\":\"2025-08-20T16:22:32.726\"}\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":119656,"symbol":"CVCO","high":492.0000,"low":480.5477,"count":7684,"close":485.1100,"open":492.0000,"timestamp":"2025-08-20T16:10:04.43"}
{"volume":57048,"symbol":"IFRX","high":0.9199,"low":0.8529,"count":138,"close":0.8929,"open":0.8900,"timestamp":"2025-08-20T16:11:13.962"}
{"volume":9,"symbol":"KLXY","high":0.0000,"low":0.0000,"count":6,"close":0.0000,"open":0.0000,"timestamp":"2025-08-20T16:04:10.564"}
{"volume":3648,"symbol":"HCOW","high":23.6976,"low":23.5600,"count":44,"close":23.6616,"open":23.5600,"timestamp":"2025-08-20T16:04:07.554"}
{"volume":992620,"symbol":"SCS","high":16.3200,"low":16.1550,"count":7690,"close":16.1800,"open":16.2000,"timestamp":"2025-08-20T16:22:32.726"}'
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:13.669000-04:00 AAPL 266.09 268.36 265.07 266.9199 10436064 212955
'
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:13.669 EDT ┆ AAPL ┆ 266.09 ┆ 268.36 ┆ 265.07 ┆ 266.9199 ┆ 10436064 ┆ 212955 │
└────────────────────────────────┴────────┴────────┴────────┴────────┴──────────┴──────────┴────────┘
'
/stock/snapshot/trade:
x-skip-concurrent-limit: true
x-min-subscription: standard
get:
summary: Trade
operationId: stock_snapshot_trade
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
df = client.stock_snapshot_trade(symbol=[''AAPL''])
'
- lang: Python
label: polars
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''polars'')
df = client.stock_snapshot_trade(symbol=[''AAPL''])
'
tags:
- Stock
description: '
Returns a real-time last trade from the [Nasdaq Basic feed](/Articles/Data-And-Requests/The-SIPs) if the account has a [stocks standard or pro subscription](https://www.thetadata.net/subscribe.html#stocks).
- Theta Data resets its snapshot cache at midnight ET every day. This endpoint may not work on a weekend where there were no eligible messages sent over exchange feeds. We recommend using historic requests during the weekend.
'
x-sample-urls:
- url: http://127.0.0.1:25503/v3/stock/snapshot/trade?symbol=AAPL
description: Returns last trade for stocks for a given symbol
- url: http://127.0.0.1:25503/v3/stock/snapshot/trade?symbol=AAPL&format=html
description: Click to open in browser (HTML)
parameters:
- $ref: '#/components/parameters/multi_symbol'
- $ref: '#/components/parameters/venue'
- $ref: '#/components/parameters/min_time'
- $ref: '#/components/parameters/format'
responses:
'200':
description: Returns last trade for stocks for a given symbol
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.
sequence:
type: integer
description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences).
size:
type: integer
description: The amount of contracts / shares traded.
condition:
type: integer
description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html).
price:
type: number
description: The trade price.
example: 'timestamp,symbol,sequence,size,condition,price
2025-08-20T16:36:05.549,AAPL,63539137,23,1,225.7500
'
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.
sequence:
type: integer
description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences).
size:
type: integer
description: The amount of contracts / shares traded.
condition:
type: integer
description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html).
price:
type: number
description: The trade price.
example: "{\n \"response\": [\n {\"symbol\":\"AAPL\",\"sequence\":63539137,\"condition\":1,\"size\":23,\"price\":225.7500,\"timestamp\":\"2025-08-20T16:36:05.549\"}\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.
sequence:
type: integer
description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences).
size:
type: integer
description: The amount of contracts / shares traded.
condition:
type: integer
description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html).
price:
type: number
description: The trade price.
example: '{"symbol":"AAPL","sequence":63539137,"condition":1,"size":23,"price":225.7500,"timestamp":"2025-08-20T16:36:05.549"}'
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.
sequence:
type: integer
description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences).
size:
type: integer
description: The amount of contracts / shares traded.
condition:
type: integer
description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html).
price:
type: number
description: The trade price.
example: 'timestamp symbol sequence size condition price
0 2026-04-27 12:13:13.669000-04:00 AAPL 35639213 21 96 266.9263
'
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.
sequence:
type: integer
description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences).
size:
type: integer
description: The amount of contracts / shares traded.
condition:
type: integer
description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html).
price:
type: number
description: The trade price.
example: 'shape: (1, 6)
┌────────────────────────────────┬────────┬──────────┬──────┬───────────┬──────────┐
│ timestamp ┆ symbol ┆ sequence ┆ size ┆ condition ┆ price │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ datetime[ms, America/New_York] ┆ str ┆ i64 ┆ i64 ┆ i64 ┆ f64 │
╞════════════════════════════════╪════════╪══════════╪══════╪═══════════╪══════════╡
│ 2026-04-27 12:13:13.669 EDT ┆ AAPL ┆ 35639213 ┆ 21 ┆ 96 ┆ 266.9263 │
└────────────────────────────────┴────────┴──────────┴──────┴───────────┴──────────┘
'
/stock/snapshot/quote:
x-skip-concurrent-limit: true
x-min-subscription: value
x-symbol-wildcard: true
get:
summary: Quote
operationId: stock_snapshot_quote
x-codeSamples:
- lang: Python
label: pandas
source: 'from thetadata import ThetaClient
client = ThetaClient(dataframe_type=''pandas'')
# --- truncated at 32 KB (214 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thetadata/refs/heads/main/openapi/thetadata-stock-api-openapi.yml