openapi: 3.1.0 info: title: Theta Data v3 At-Time 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: At-Time paths: /stock/at_time/trade: x-concurrent-limit-ttl-ms: '652' x-min-subscription: standard x-history-access: true get: summary: Trade operationId: stock_at_time_trade x-codeSamples: - lang: Python label: pandas source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='pandas')\ndf = client.stock_at_time_trade(\n symbol='SPY',\n start_date=date(2024, 1, 16),\n end_date=date(2024, 1, 16),\n time_of_day='09:30:00.100',\n)\n" - lang: Python label: polars source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='polars')\ndf = client.stock_at_time_trade(\n symbol='SPY',\n start_date=date(2024, 1, 16),\n end_date=date(2024, 1, 16),\n time_of_day='09:30:00.100',\n)\n" tags: - At-Time description: '#### Real-time request: - Returns a real-time session from the [Nasdaq Basic feed](/Articles/Data-And-Requests/The-SIPs.html#nasdaq-basic) if the account has a [stocks standard or pro subscription](https://www.thetadata.net/subscribe.html#stocks). - Returns a 15-minute delayed session from the [UTP & CTA feeds](/Articles/Data-And-Requests/The-SIPs.html#equities-cta-utp) account has the [stocks value subscription](https://www.thetadata.net/subscribe.html#stocks) subscription. #### Historical request: Returns the last trade reported by [UTP & CTA feeds](/Articles/Data-And-Requests/The-SIPs.html#equities-cta-utp) at a specified millisecond of the day. Trade condition mappings can be found [here](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html). ' x-sample-urls: - url: http://127.0.0.1:25503/v3/stock/at_time/trade?symbol=SPY&start_date=20240116&end_date=20240116&time_of_day=09:30:00.100 description: Returns the last trade for a given symbol and specified time of day - url: http://127.0.0.1:25503/v3/stock/at_time/trade?symbol=SPY&start_date=20240116&end_date=20240116&time_of_day=09:30:00.100&format=html description: Click to open in browser (HTML) parameters: - $ref: '#/components/parameters/single_symbol' - $ref: '#/components/parameters/start_date' - $ref: '#/components/parameters/end_date' - $ref: '#/components/parameters/time_of_day' - $ref: '#/components/parameters/venue' - $ref: '#/components/parameters/format' responses: '200': description: Returns the last trade for a given symbol and specified time of day content: text/csv: schema: type: array items: &id001 type: object properties: timestamp: type: string format: date-time description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format. sequence: type: integer description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences). ext_condition1: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition2: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition3: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition4: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. condition: type: integer description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html). size: type: integer description: The amount of contracts / shares traded. exchange: type: integer description: The [exchange](/Articles/Errors-Exchanges-Conditions/Exchanges.html) the trade was executed. price: type: number description: The trade price. example: "timestamp,sequence,ext_condition1,ext_condition2,ext_condition3,ext_condition4,condition,size,exchange,price\r\n2024-01-16T09:30:00.088,405549,255,255,255,115,115,1,57,475.280\r\n" application/json: schema: &id002 type: array items: *id001 example: "{\n \"response\": [\n {\"sequence\":405549,\"condition\":115,\"size\":1,\"price\":475.280,\"ext_condition2\":255,\"ext_condition1\":255,\"ext_condition4\":115,\"exchange\":57,\"ext_condition3\":255,\"timestamp\":\"2024-01-16T09:30:00.088\"} \n ]\n}\n" application/x-ndjson: schema: *id002 example: '{"sequence":405549,"condition":115,"size":1,"price":475.280,"ext_condition2":255,"ext_condition1":255,"ext_condition4":115,"exchange":57,"ext_condition3":255,"timestamp":"2024-01-16T09:30:00.088"}' python/pandas: schema: *id002 example: 'timestamp sequence ext_condition1 ext_condition2 ext_condition3 ext_condition4 condition size exchange price 0 2025-10-02 09:29:59.861000-04:00 3899004 32 255 1 115 1 68 7 256.59 ' python/polars: schema: *id002 example: 'shape: (1, 10) ┌────────────────────────────────┬──────────┬────────────────┬────────────────┬────────────────┬────────────────┬───────────┬──────┬──────────┬────────┐ │ timestamp ┆ sequence ┆ ext_condition1 ┆ ext_condition2 ┆ ext_condition3 ┆ ext_condition4 ┆ condition ┆ size ┆ exchange ┆ price │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ datetime[ms, America/New_York] ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ f64 │ ╞════════════════════════════════╪══════════╪════════════════╪════════════════╪════════════════╪════════════════╪═══════════╪══════╪══════════╪════════╡ │ 2025-10-02 09:29:59.861 EDT ┆ 3899004 ┆ 32 ┆ 255 ┆ 1 ┆ 115 ┆ 1 ┆ 68 ┆ 7 ┆ 256.59 │ └────────────────────────────────┴──────────┴────────────────┴────────────────┴────────────────┴────────────────┴───────────┴──────┴──────────┴────────┘ ' /stock/at_time/quote: x-concurrent-limit-ttl-ms: '997' x-min-subscription: value x-history-access: true get: summary: Quote operationId: stock_at_time_quote x-codeSamples: - lang: Python label: pandas source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='pandas')\ndf = client.stock_at_time_quote(\n symbol='SPY',\n start_date=date(2024, 1, 16),\n end_date=date(2024, 1, 16),\n time_of_day='09:30:00.100',\n)\n" - lang: Python label: polars source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='polars')\ndf = client.stock_at_time_quote(\n symbol='SPY',\n start_date=date(2024, 1, 16),\n end_date=date(2024, 1, 16),\n time_of_day='09:30:00.100',\n)\n" tags: - At-Time description: "#### Real-time request:\n - Subscription tier standard or higher will default to NQB.\n - Real-time last BBO quote at-time_of_day-time from the [Nasdaq Basic feed](/Articles/Data-And-Requests/The-SIPs.html#nasdaq-basic) if the account has a [stocks standard or pro subscription](https://www.thetadata.net/subscribe.html#stocks).\n - 15-minute delayed NBBO quote at-time_of_day-time from the [UTP & CTA feeds](/Articles/Data-And-Requests/The-SIPs.html#equities-cta-utp) account has the [stocks value subscription](https://www.thetadata.net/subscribe.html#stocks) subscription.\n\n#### Historical request:\n Returns the last NBBO quote reported by [UTP & CTA feeds](/Articles/Data-And-Requests/The-SIPs.html#equities-cta-utp) at a specified millisecond of the day.\n" x-sample-urls: - url: http://127.0.0.1:25503/v3/stock/at_time/quote?symbol=SPY&start_date=20240116&end_date=20240116&time_of_day=09:30:00.100 description: Returns the last quote for a given symbol between specified dates (inclusive) with a one minute interval - url: http://127.0.0.1:25503/v3/stock/at_time/quote?symbol=SPY&start_date=20240116&end_date=20240116&time_of_day=09:30:00.100&format=html description: Click to open in browser (HTML) parameters: - $ref: '#/components/parameters/single_symbol' - $ref: '#/components/parameters/start_date' - $ref: '#/components/parameters/end_date' - $ref: '#/components/parameters/time_of_day' - $ref: '#/components/parameters/venue' - $ref: '#/components/parameters/format' responses: '200': description: Returns the last quote for a given symbol between specified dates (inclusive) with a one minute interval content: text/csv: schema: type: array items: &id003 type: object properties: timestamp: type: string format: date-time description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format. bid_size: type: integer description: The last NBBO bid size. bid_exchange: type: integer description: The last NBBO bid [exchange](/Articles/Errors-Exchanges-Conditions/Exchanges.html). bid: type: number description: The last NBBO bid price. bid_condition: type: integer description: The last NBBO bid [condition](/Articles/Errors-Exchanges-Conditions/Quote-Conditions.html). ask_size: type: integer description: The last NBBO ask size. ask_exchange: type: integer description: The last NBBO ask [exchange](/Articles/Errors-Exchanges-Conditions/Exchanges.html). ask: type: number description: The last NBBO ask price. ask_condition: type: integer description: The last NBBO ask [condition](/Articles/Errors-Exchanges-Conditions/Quote-Conditions.html). example: "timestamp,bid_size,bid_exchange,bid,bid_condition,ask_size,ask_exchange,ask,ask_condition\r\n2024-01-16T09:30:00.1,15,1,475.28,0,8,7,475.28,0\r\n" application/json: schema: &id004 type: array items: *id003 example: "{\n \"response\": [\n {\"ask_size\":8,\"bid_size\":15,\"ask_exchange\":7,\"ask_condition\":0,\"bid_exchange\":1,\"ask\":475.28,\"bid\":475.28,\"bid_condition\":0,\"timestamp\":\"2024-01-16T09:30:00.1\"}\n ]\n}\n" application/x-ndjson: schema: *id004 example: '{"ask_size":8,"bid_size":15,"ask_exchange":7,"ask_condition":0,"bid_exchange":1,"ask":475.28,"bid":475.28,"bid_condition":0,"timestamp":"2024-01-16T09:30:00.1"}' python/pandas: schema: *id004 example: 'timestamp bid_size bid_exchange bid bid_condition ask_size ask_exchange ask ask_condition 0 2025-10-02 09:30:00-04:00 3 1 256.55 0 238 7 256.6 0 ' python/polars: schema: *id004 example: 'shape: (1, 9) ┌────────────────────────────────┬──────────┬──────────────┬────────┬───────────────┬──────────┬──────────────┬───────┬───────────────┐ │ timestamp ┆ bid_size ┆ bid_exchange ┆ bid ┆ bid_condition ┆ ask_size ┆ ask_exchange ┆ ask ┆ ask_condition │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ datetime[ms, America/New_York] ┆ i64 ┆ i64 ┆ f64 ┆ i64 ┆ i64 ┆ i64 ┆ f64 ┆ i64 │ ╞════════════════════════════════╪══════════╪══════════════╪════════╪═══════════════╪══════════╪══════════════╪═══════╪═══════════════╡ │ 2025-10-02 09:30:00 EDT ┆ 3 ┆ 1 ┆ 256.55 ┆ 0 ┆ 238 ┆ 7 ┆ 256.6 ┆ 0 │ └────────────────────────────────┴──────────┴──────────────┴────────┴───────────────┴──────────┴──────────────┴───────┴───────────────┘ ' /option/at_time/trade: x-concurrent-limit-ttl-ms: '72' x-min-subscription: standard x-history-access: true get: summary: Trade operationId: option_at_time_trade x-codeSamples: - lang: Python label: pandas source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='pandas')\ndf = client.option_at_time_trade(\n symbol='AAPL',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 4),\n time_of_day='09:30:01.000',\n expiration=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.option_at_time_trade(\n symbol='AAPL',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 4),\n time_of_day='09:30:01.000',\n expiration=date(2024, 11, 8),\n)\n" tags: - At-Time description: '- Returns the last trade reported by [OPRA](/Articles/Data-And-Requests/The-SIPs.html) at a specified millisecond of the day. - Trade condition mappings can be found [here](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html). - Extended trade conditions are not reported by [OPRA](/Articles/Data-And-Requests/The-SIPs.html) for options, so they can be ignored. - The ``time_of_day``parameter represents the 00:00:00.000 ET that the trade should be provided for. ' x-sample-urls: - url: http://127.0.0.1:25503/v3/option/at_time/trade?symbol=AAPL&expiration=20241108&strike=220.000&right=call&start_date=20241104&end_date=20241104&time_of_day=09:30:01.000 description: Returns the last trade for an option contract - url: http://127.0.0.1:25503/v3/option/at_time/trade?symbol=AAPL&expiration=20241108&strike=220.000&right=call&start_date=20241104&end_date=20241104&time_of_day=09:30:01.000&format=html description: Click to open in browser (HTML) parameters: - $ref: '#/components/parameters/single_symbol' - $ref: '#/components/parameters/start_date' - $ref: '#/components/parameters/end_date' - $ref: '#/components/parameters/time_of_day' - $ref: '#/components/parameters/expiration' - $ref: '#/components/parameters/strike' - $ref: '#/components/parameters/right' - $ref: '#/components/parameters/max_dte' - $ref: '#/components/parameters/strike_range' - $ref: '#/components/parameters/format' responses: '200': description: Returns the last trade for an option contract content: text/csv: schema: type: array items: &id005 type: object properties: symbol: type: string description: The symbol of the contract, or stock / underlying asset / option / index. expiration: type: string format: date description: Expiration date of the contract in YYYY-MM-DD format. strike: type: number description: Strike price of the contract in dollars 180.00 right: type: string description: Indicates whether the contract is a call or put option. timestamp: type: string format: date-time description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format. sequence: type: integer description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences). ext_condition1: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition2: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition3: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition4: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. condition: type: integer description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html). size: type: integer description: The amount of contracts / shares traded. exchange: type: integer description: The [exchange](/Articles/Errors-Exchanges-Conditions/Exchanges.html) the trade was executed. price: type: number description: The trade price. example: "symbol,expiration,strike,right,timestamp,sequence,ext_condition1,ext_condition2,ext_condition3,ext_condition4,condition,size,exchange,price\r\nAAPL,2024-11-08,220.000,CALL,2024-11-04T09:30:00.471,18902138,255,255,255,255,130,2,22,3.90\r\n" application/json: schema: &id006 type: array items: *id005 example: "{\n \"response\": [\n {\n \"contract\": {\"symbol\":\"AAPL\",\"strike\":220.000,\"right\":\"CALL\",\"expiration\":\"2024-11-08\"},\n \"data\": [\n {\"sequence\":18902138,\"condition\":130,\"size\":2,\"price\":3.90,\"ext_condition2\":255,\"ext_condition1\":255,\"ext_condition4\":255,\"exchange\":22,\"ext_condition3\":255,\"timestamp\":\"2024-11-04T09:30:00.471\"}\n ]\n }\n ]\n}\n" application/x-ndjson: schema: *id006 example: '{"symbol":"AAPL","strike":220.000,"right":"CALL","sequence":18902138,"condition":130,"size":2,"price":3.90,"ext_condition2":255,"ext_condition1":255,"expiration":"2024-11-08","ext_condition4":255,"exchange":22,"ext_condition3":255,"timestamp":"2024-11-04T09:30:00.471"}' python/pandas: schema: *id006 example: 'symbol expiration strike right timestamp sequence ext_condition1 ext_condition2 ext_condition3 ext_condition4 condition size exchange price 0 SPY 2025-10-17 420.0 CALL 2025-09-19 09:36:06.712000-04:00 55859949 255 255 255 255 130 1 43 243.18 ' python/polars: schema: *id006 example: 'shape: (1, 14) ┌────────┬────────────┬────────┬───────┬────────────────────────────────┬──────────┬────────────────┬────────────────┬────────────────┬────────────────┬───────────┬──────┬──────────┬────────┐ │ symbol ┆ expiration ┆ strike ┆ right ┆ timestamp ┆ sequence ┆ ext_condition1 ┆ ext_condition2 ┆ ext_condition3 ┆ ext_condition4 ┆ condition ┆ size ┆ exchange ┆ price │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ str ┆ str ┆ f64 ┆ str ┆ datetime[ms, America/New_York] ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ f64 │ ╞════════╪════════════╪════════╪═══════╪════════════════════════════════╪══════════╪════════════════╪════════════════╪════════════════╪════════════════╪═══════════╪══════╪══════════╪════════╡ │ SPY ┆ 2025-10-17 ┆ 420.0 ┆ CALL ┆ 2025-09-19 09:36:06.712 EDT ┆ 55859949 ┆ 255 ┆ 255 ┆ 255 ┆ 255 ┆ 130 ┆ 1 ┆ 43 ┆ 243.18 │ └────────┴────────────┴────────┴───────┴────────────────────────────────┴──────────┴────────────────┴────────────────┴────────────────┴────────────────┴───────────┴──────┴──────────┴────────┘ ' /option/at_time/quote: x-concurrent-limit-ttl-ms: '634' x-min-subscription: value x-history-access: true get: summary: Quote operationId: option_at_time_quote x-codeSamples: - lang: Python label: pandas source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='pandas')\ndf = client.option_at_time_quote(\n symbol='AAPL',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 4),\n time_of_day='09:30:01.000',\n expiration=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.option_at_time_quote(\n symbol='AAPL',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 4),\n time_of_day='09:30:01.000',\n expiration=date(2024, 11, 8),\n)\n" tags: - At-Time description: '- Returns the last NBBO quote reported by [OPRA](/Articles/Data-And-Requests/The-SIPs.html) at a specified millisecond of the day. - The ``time_of_day``parameter represents the 00:00:00.000 ET that the quote should be provided for. - Using a sub-minute ``time_of_day`` (e.g. ``09:30:10.000``) will significantly slow the request and may cause it to hang, particularly when using ``expiration=*``. Use a minute-boundary time (e.g. ``09:30:00.000``) instead. ' x-sample-urls: - url: http://127.0.0.1:25503/v3/option/at_time/quote?symbol=AAPL&expiration=20241108&strike=220.000&right=call&start_date=20241104&end_date=20241104&time_of_day=09:30:01.000 description: Returns the last quote for an option contract - url: http://127.0.0.1:25503/v3/option/at_time/quote?symbol=AAPL&expiration=20241108&strike=220.000&right=call&start_date=20241104&end_date=20241104&time_of_day=09:30:01.000&format=html description: Click to open in browser (HTML) parameters: - $ref: '#/components/parameters/single_symbol' - $ref: '#/components/parameters/start_date' - $ref: '#/components/parameters/end_date' - $ref: '#/components/parameters/time_of_day' - $ref: '#/components/parameters/expiration' - $ref: '#/components/parameters/strike' - $ref: '#/components/parameters/right' - $ref: '#/components/parameters/max_dte' - $ref: '#/components/parameters/strike_range' - $ref: '#/components/parameters/format' responses: '200': description: Returns the last quote for an option contract content: text/csv: schema: type: array items: &id007 type: object properties: symbol: type: string description: The symbol of the contract, or stock / underlying asset / option / index. expiration: type: string format: date description: Expiration date of the contract in YYYY-MM-DD format. strike: type: number description: Strike price of the contract in dollars 180.00 right: type: string description: Indicates whether the contract is a call or put option. timestamp: type: string format: date-time description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format. bid_size: type: integer description: The last NBBO bid size. bid_exchange: type: integer description: The last NBBO bid [exchange](/Articles/Errors-Exchanges-Conditions/Exchanges.html). bid: type: number description: The last NBBO bid price. bid_condition: type: integer description: The last NBBO bid [condition](/Articles/Errors-Exchanges-Conditions/Quote-Conditions.html). ask_size: type: integer description: The last NBBO ask size. ask_exchange: type: integer description: The last NBBO ask [exchange](/Articles/Errors-Exchanges-Conditions/Exchanges.html). ask: type: number description: The last NBBO ask price. ask_condition: type: integer description: The last NBBO ask [condition](/Articles/Errors-Exchanges-Conditions/Quote-Conditions.html). example: "symbol,expiration,strike,right,timestamp,bid_size,bid_exchange,bid,bid_condition,ask_size,ask_exchange,ask,ask_condition\r\nAAPL,2024-11-08,220.000,CALL,2024-11-04T09:30:00.91,129,69,3.95,50,14,47,4.10,50\r\n" application/json: schema: &id008 type: array items: *id007 example: "{\n \"response\": [\n {\n \"contract\": {\"symbol\":\"AAPL\",\"strike\":220.000,\"right\":\"CALL\",\"expiration\":\"2024-11-08\"},\n \"data\": [\n {\"ask_size\":14,\"ask_condition\":50,\"bid_size\":129,\"ask_exchange\":47,\"bid_exchange\":69,\"ask\":4.10,\"bid\":3.95,\"bid_condition\":50,\"timestamp\":\"2024-11-04T09:30:00.91\"}\n ]\n }\n ]\n}\n" application/x-ndjson: schema: *id008 example: '{"symbol":"AAPL","ask_size":14,"ask_condition":50,"strike":220.000,"right":"CALL","bid_size":129,"ask_exchange":47,"bid_exchange":69,"ask":4.10,"expiration":"2024-11-08","bid":3.95,"bid_condition":50,"timestamp":"2024-11-04T09:30:00.91"}' python/pandas: schema: *id008 example: 'symbol expiration strike right timestamp bid_size bid_exchange bid bid_condition ask_size ask_exchange ask ask_condition 0 SPY 2025-10-17 420.0 CALL 2025-09-19 09:30:00-04:00 0 5 0.0 50 0 5 0.0 50 ' python/polars: schema: *id008 example: 'shape: (1, 13) ┌────────┬────────────┬────────┬───────┬────────────────────────────────┬──────────┬──────────────┬─────┬───────────────┬──────────┬──────────────┬─────┬───────────────┐ │ symbol ┆ expiration ┆ strike ┆ right ┆ timestamp ┆ bid_size ┆ bid_exchange ┆ bid ┆ bid_condition ┆ ask_size ┆ ask_exchange ┆ ask ┆ ask_condition │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ str ┆ str ┆ f64 ┆ str ┆ datetime[ms, America/New_York] ┆ i64 ┆ i64 ┆ f64 ┆ i64 ┆ i64 ┆ i64 ┆ f64 ┆ i64 │ ╞════════╪════════════╪════════╪═══════╪════════════════════════════════╪══════════╪══════════════╪═════╪═══════════════╪══════════╪══════════════╪═════╪═══════════════╡ │ SPY ┆ 2025-10-17 ┆ 420.0 ┆ CALL ┆ 2025-09-19 09:30:00 EDT ┆ 0 ┆ 5 ┆ 0.0 ┆ 50 ┆ 0 ┆ 5 ┆ 0.0 ┆ 50 │ └────────┴────────────┴────────┴───────┴────────────────────────────────┴──────────┴──────────────┴─────┴───────────────┴──────────┴──────────────┴─────┴───────────────┘ ' /index/at_time/price: x-concurrent-limit-ttl-ms: '108' x-min-subscription: value x-history-access: true get: summary: Price operationId: index_at_time_price x-codeSamples: - lang: Python label: pandas source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='pandas')\ndf = client.index_at_time_price(\n symbol='SPX',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 8),\n time_of_day='09:30:01.000',\n)\n" - lang: Python label: polars source: "from thetadata import ThetaClient\nfrom datetime import date\n\nclient = ThetaClient(dataframe_type='polars')\ndf = client.index_at_time_price(\n symbol='SPX',\n start_date=date(2024, 11, 4),\n end_date=date(2024, 11, 8),\n time_of_day='09:30:01.000',\n)\n" tags: - At-Time description: '- Retrieves historical indices price reports. [Exchanges](/Articles/Data-And-Requests/The-SIPs.html) typically generate a price report every second for popular indices like SPX. - The ``time_of_day`` parameter represents the 00:00:00.000 ET that the price should be provided for. ' x-sample-urls: - url: http://127.0.0.1:25503/v3/index/at_time/price?symbol=SPX&start_date=20241104&end_date=20241108&time_of_day=09:30:01.000 description: Returns specific at time historical index price reports - url: http://127.0.0.1:25503/v3/index/at_time/price?symbol=SPX&start_date=20241104&end_date=20241108&time_of_day=09:30:01.000&format=html description: Click to open in browser (HTML) parameters: - $ref: '#/components/parameters/single_symbol' - $ref: '#/components/parameters/start_date' - $ref: '#/components/parameters/end_date' - $ref: '#/components/parameters/time_of_day' - $ref: '#/components/parameters/format' responses: '200': description: Returns specific at time historical index price reports content: text/csv: schema: type: array items: &id009 type: object properties: timestamp: type: string format: date-time description: The timestamp in YYYY-MM-DDTHH:mm:ss.SSS format. sequence: type: integer description: The exchange [sequence](/Articles/Data-And-Requests/Making-Requests.html#trade-sequences). ext_condition1: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition2: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition3: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. ext_condition4: type: integer description: Additional trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html)(s). These can be ignored for options. condition: type: integer description: The trade [condition](/Articles/Errors-Exchanges-Conditions/Trade-Conditions.html). size: type: integer description: The amount of contracts / shares traded. exchange: type: integer description: The [exchange](/Articles/Errors-Exchanges-Conditions/Exchanges.html) the trade was executed. price: type: number description: The trade price. example: "timestamp,sequence,ext_condition1,ext_condition2,ext_condition3,ext_condition4,condition,size,exchange,price\r\n2024-11-04T09:30:01,0,255,255,255,255,0,0,5,5725.15\r\n2024-11-05T09:30:01,0,255,255,255,255,0,0,5,5722.43\r\n2024-11-06T09:30:01,0,255,255,255,255,0,0,5,5864.89\r\n2024-11-07T09:30:01,0,255,255,255,255,0,0,5,5947.21\r\n2024-11-08T09:30:01,0,255,255,255,255,0,0,5,5976.76\r\n" application/json: schema: &id010 type: array items: *id009 example: "{\n \"response\": [\n {\"sequence\":0,\"condition\":0,\"size\":0,\"price\":5725.15,\"ext_condition2\":255,\"ext_condition1\":255,\"ext_condition4\":255,\"exchange\":5,\"ext_condition3\":255,\"timestamp\":\"2024-11-04T09:30:01\"},\n {\"sequence\":0,\"condition\":0,\"size\":0,\"price\":5722.43,\"ext_condition2\":255,\"ext_condition1\":255,\"ext_condition4\":255,\"exchange\":5,\"ext_condition3\":255,\"timestamp\":\"2024-11-05T09:30:01\"},\n {\"sequence\":0,\"condition\":0,\"size\":0,\"price\":5864.89,\"ext_condition2\":255,\"ext_condition1\":255,\"ext_condition4\":255,\"exchange\":5,\"ext_condition3\":255,\"timestamp\":\"2024-11-06T09:30:01\"},\n {\"sequence\":0,\"condition\":0,\"size\":0,\"price\":5947.21,\"ext_condition2\":255,\"ext_condition1\":255,\"ext_condition4\":255,\"exchange\":5,\"ext_condition3\":255,\"timestamp\":\"2024-11-07T09:30:01\"},\n {\"sequence\":0,\"condition\":0,\"size\":0,\"price\":5976.76,\"ext_condition2\":255,\"ext_condition1\":255,\"ext_condition4\":255,\"exchange\":5,\"ext_condition3\":255,\"timestamp\":\"2024-11-08T09:30:01\"}\n ]\n}\n" application/x-ndjson: schema: *id010 example: '{"sequence":0,"condition":0,"size":0,"price":5725.15,"ext_condition2":255,"ext_condition1":255,"ext_condition4":255,"exchange":5,"ext_condition3":255,"timestamp":"2024-11-04T09:30:01"} {"sequence":0,"condition":0,"size":0,"price":5722.43,"ext_condition2":255,"ext_condition1":255,"ext_condition4":255,"exchange":5,"ext_condition3":255,"timestamp":"2024-11-05T09:30:01"} {"sequence":0,"condition":0,"size":0,"price":5864.89,"ext_condition2":255,"ext_condition1":255,"ext_condition4":255,"exchange":5,"ext_condition3":255,"timestamp":"2024-11-06T09:30:01"} {"sequence":0,"condition":0,"size":0,"price":5947.21,"ext_condition2":255,"ext_condition1":255,"ext_condition4":255,"exchange":5,"ext_condition3":255,"timestamp":"2024-11-07T09:30:01"} {"sequence":0,"condition":0,"size":0,"price":5976.76,"ext_condition2":255,"ext_condition1":255,"ext_condition4":255,"exchange":5,"ext_condition3":255,"timestamp":"2024-11-08T09:30:01"}' python/pandas: schema: *id010 example: 'timestamp sequence ext_condition1 ext_condition2 ext_condition3 ext_condition4 condition size exchange price 0 2025-10-02 11:29:59-04:00 0 255 255 255 255 0 0 5 6701.51 ' python/polars: schema: *id010 example: 'shape: (1, 10) ┌────────────────────────────────┬──────────┬────────────────┬────────────────┬────────────────┬────────────────┬───────────┬──────┬──────────┬─────────┐ │ timestamp ┆ sequence ┆ ext_condition1 ┆ ext_condition2 ┆ ext_condition3 ┆ ext_condition4 ┆ condition ┆ size ┆ exchange ┆ price │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ datetime[ms, America/New_York] ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ f64 │ ╞════════════════════════════════╪══════════╪════════════════╪════════════════╪════════════════╪════════════════╪═══════════╪══════╪══════════╪═════════╡ │ 2025-10-02 11:29:59 EDT ┆ 0 ┆ 255 ┆ 255 ┆ 255 ┆ 255 ┆ 0 ┆ 0 ┆ 5 ┆ 6701.51 │ └────────────────────────────────┴──────────┴────────────────┴────────────────┴────────────────┴────────────────┴───────────┴──────┴──────────┴─────────┘ ' components: parameters: start_date: name: start_date in: query description: The start date (inclusive). required: true schema: type: string format: date right: name: right in: query description: The right (call or put) of the contract. required: false schema: type: string enum: - call - put - both default: both time_of_day: name: time_of_day in: query description: The time of the day to fetch data for; assumed to be America/New_York. required: true schema: type: string format: time strike_range: name: strike_range in: query description: Limits the number of contracts returned relative to the underlying's spot price. For a specified value 'n', this returns 'n' strikes above and 'n' strikes below the spot price, plus one at-the-money (ATM) strike (where spot price = strike price), if available. This results in a maximum of `2n + 1` strikes. required: false schema: minimum: 1 type: integer format: int32 strike: name: strike in: query description: The strike price of the contract in dollars (ie `100.00` for `$100.00`), or `*` for all strikes. required: false schema: type: string default: '*' single_symbol: name: symbol in: query description: The stock or index symbol, or underlying symbol for options. required: true schema: type: string format: name: format in: query description: The format of the data when returned to the user. required: false schema: type: string enum: - csv - json - ndjson - html default: csv end_date: name: end_date in: query description: The end date (inclusive). required: true schema: type: string format: date venue: name: venue in: query description: Used to specify the venue of the real time or historic request. ``nqb`` = Nasdaq Basic; ``utp_cta`` = merged UTP & CTA. required: false schema: type: string enum: - nqb - utp_cta default: nqb expiration: name: expiration in: query x-date-wildcard: true description: The expiration of the contract in `YYYY-MM-DD` or `YYYYMMDD` format, or `*` for all expirations. required: true schema: type: string format: date max_dte: name: max_dte in: query description: If specified, only contracts with a full calendar day 'Days to Expiration' (DTE) less than or equal to this number will be returned. required: false schema: minimum: 0 type: integer format: int32