{
"type": "request",
"id": "auth-001",
"payload": {
"method": "POST",
"path": "/auth",
"body": {
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTEyMzQ1IiwiZXhwIjoxNzAxNDUzNjAwfQ.signature"
}
}
}{
"type": "subscribe",
"id": "sub-1",
"payload": [
{
"symbol": "AAPL",
"tradeFields": [
"price",
"size"
]
}
]
}{
"type": "unsubscribe",
"id": "unsub-1",
"payload": [
"AAPL",
"MSFT"
]
}{
"type": "ping",
"id": "ping-001"
}{
"type": "request",
"id": "req-expiry-1",
"payload": {
"method": "GET",
"path": "/options/AAPL/expiry-dates"
}
}{
"type": "request",
"id": "req-contracts-1",
"payload": {
"method": "GET",
"path": "/options/AAPL/contracts/2024-01-19"
}
}{
"type": "request",
"id": "req-003",
"payload": {
"method": "GET",
"path": "/equities/AAPL/snapshot"
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "quote",
"symbol": "AAPL",
"data": {
"bidPrice": 190.04,
"askPrice": 190.06,
"midPrice": 190.05,
"spread": 0.02,
"quoteTimestamp": 1701450001000
},
"timestamp": 1701450001123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "trade",
"symbol": "AAPL",
"data": {
"price": 190.05,
"size": 100
},
"timestamp": 1701450001123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "level2nOB",
"symbol": "AAPL",
"data": {
"orderBook": [
"0:150.24:200",
"500:150.26:0"
],
"quotes": [
"NSDQ:150.26:500:150.25:400",
"NYSE:150.27:200:150.24:200"
],
"symbol": "AAPL",
"timestamp": "2025-12-29T05:18:33.600000-05:00"
},
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "timeAndSales",
"symbol": "AAPL",
"data": {
"symbol": "AAPL",
"price": "189.95",
"size": "100",
"tick": "up",
"tradeSeq": "123456789",
"tradeExchange": "Q",
"tradeTimestamp": "2026-04-20T07:11:01.717000-04:00"
},
"timestamp": 1701450001123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "greeks",
"symbol": "XSP281215C00920000",
"data": {
"delta": 0.531,
"gamma": 0.0391,
"impliedVolatility": 0.2788,
"symbol": "XSP281215C00920000",
"theta": -0.0249,
"rho": 0.004,
"timestamp": "2026-02-13T15:08:22.10+05:30",
"vega": 0.1618
},
"timestamp": 1770975502651
}
}{
"type": "event",
"payload": {
"action": "error",
"symbol": "AAPL",
"error": "invalid quote fields: invalidField1, invalidField2",
"id": "sub-1",
"timestamp": 1701450004000
}
}{
"type": "event",
"payload": {
"action": "authRequired",
"error": "authentication required",
"id": "sub-001",
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "refreshAuth",
"data": {
"message": "authentication expires soon, please re-authenticate",
"expiresIn": 300000
},
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "authExpired",
"error": "authentication expired",
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "authSuccess",
"id": "auth-001",
"data": {
"expiresIn": 2700000
},
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "snapshot",
"type": "quote",
"symbol": "AAPL",
"data": {
"bidPrice": 189.94,
"bidSize": 100,
"askPrice": 189.96,
"askSize": 200,
"midPrice": 189.95,
"spread": 0.02,
"quoteTimestamp": 1701450000000
},
"id": "sub-2",
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "unsubscribe",
"data": {
"symbols": [
"AAPL",
"MSFT"
]
},
"id": "unsub-1",
"timestamp": 1701450002000
}
}{
"type": "pong",
"id": "ping-001",
"timestamp": "2026-05-13T10:30:00Z",
"payload": null
}{
"type": "response",
"id": "req-expiry-1",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"expiryDates": [
{
"date": "2024-01-19"
},
{
"date": "2024-01-26",
"freq": "W"
},
{
"date": "2024-02-16"
}
]
}
}
}{
"type": "response",
"id": "req-contracts-1",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"expiryDate": "2024-01-19",
"calls": [
{
"symbol": "AAPL240119C00145000",
"strikePrice": 145
},
{
"symbol": "AAPL240119C00150000",
"strikePrice": 150
}
],
"puts": [
{
"symbol": "AAPL240119P00145000",
"strikePrice": 145
},
{
"symbol": "AAPL240119P00150000",
"strikePrice": 150
}
]
}
}
}{
"type": "response",
"id": "req-003",
"timestamp": "2026-01-07T15:17:32Z",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"name": "Apple Inc.",
"description": "Apple Inc. is a preeminent American multinational technology company renowned for its innovative consumer electronics, software, and online services.",
"assetType": "Common Stock",
"sector": "TECHNOLOGY",
"industry": "CONSUMER ELECTRONICS",
"address": "ONE APPLE PARK WAY, CUPERTINO, CA, UNITED STATES, 95014",
"sicCode": "3663",
"fiscalYearEnd": "September",
"latestQuarter": "2025-09-30",
"lastPrice": "261.9",
"price": "261.968295",
"openPrice": "263.59999999999997",
"highPrice": "263.68",
"lowPrice": "261.21",
"closePrice": "262.428295",
"netChange": "-0.45999999999999996",
"bidPrice": "261.98",
"bidSize": "400",
"askPrice": "261.99",
"askSize": "100",
"midPrice": "261.985",
"spread": "0.009999999999990905",
"bidExchange": "NQEX|Nasdaq Exchange",
"askExchange": "NQEX|Nasdaq Exchange",
"tradeExchange": "NQNX|Nasdaq Trade Reporting Facility",
"totalVolume": "10781409",
"avgVolume4Weeks": "41245325",
"tick": "-1",
"tradeSeq": "13264647",
"quoteTimestamp": "2026-01-07T10:16:56.961000-05:00",
"tradeTimestamp": "2026-01-07T10:17:31.398000-05:00",
"high52WeekPrice": "288.62",
"high52WeekDate": "2025-12-03T00:00:00.000Z",
"low52WeekPrice": "169.2101",
"low52WeekDate": "2025-04-08T00:00:00.000Z",
"movingAverage50Day": "269.52",
"movingAverage200Day": "229.91",
"marketCapitalization": "4021300494000",
"sharesOutstanding": "14776353",
"eps": "7.4",
"EPSDiluted": "1.84",
"dilutedEPSTTM": "7.4",
"EPSLatest12Month": "89.690722",
"EPS3YearGrowthRate": "12.566554",
"EPS5YearGrowthRate": "19.982310000000002",
"PE": "35.1689",
"trailingPE": "36.62",
"forwardPE": "33.0",
"pegRatio": "2.769",
"priceToBookRatio": "54.84",
"priceToSalesRatioTTM": "9.66",
"bookValue": "4.991",
"beta": "1.107",
"dividend": "0.26",
"dividendPerShare": "1.02",
"dividendYield": "0.0037",
"revenueTTM": "416161006000",
"revenuePerShareTTM": "27.84",
"grossProfitTTM": "195201008000",
"ebitda": "144748003000",
"profitMargin": "0.269",
"operatingMarginTTM": "0.317",
"returnOnAssetsTTM": "0.23",
"returnOnEquityTTM": "1.714",
"evToRevenue": "9.82",
"evToEBITDA": "28.24",
"quarterlyEarningsGrowthYOY": "0.912",
"quarterlyRevenueGrowthYOY": "0.079",
"assets": "359241000",
"liabilities": "285508000",
"longTermDebt": "986570000",
"alphaVantageUpdatedAt": "2025-12-23T11:29:26Z",
"type": "ETRADE",
"size": "1"
}
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "marketStatus",
"data": {
"market": "open",
"serverTime": "2026-05-13T10:30:00Z",
"exchanges": {
"nyse": "open",
"nasdaq": "open"
},
"currencies": {
"fx": "open"
},
"afterHours": false,
"earlyHours": false
},
"timestamp": 1701450000123
}
}Market Data WebSocket
Real-time streaming API for equity quotes, trades, and market indices. Subscribe to specific symbols with field-level granularity to receive only the data you need, minimizing bandwidth and latency.
wss://api.aries.com/v1/market/ws, authenticate once, and the server will push live prices, trades, and order-book activity for any symbols you ask about. You can stream the same data a professional trader watches on screen — bid/ask quotes, last sale prices, intraday OHLC, every individual trade as it prints, full depth-of-market, and option Greeks — without polling.Key Features
Key Features
Field-Level Subscriptions
* for all fields. Minimize bandwidth by requesting only the data you need.Real-Time Updates
Initial Snapshot
Multi-Symbol Support
Equities & Options
Market Indices
Supported Symbols
Supported Symbols
Equities
Standard stock ticker symbols. Pass them just as you’d type them on a brokerage screen — for exampleAAPL, MSFT, GOOGL, TSLA. No special formatting required.Indices
Major market indices are supported:| Symbol | Index |
|---|---|
SPX | S&P 500 — broad large-cap U.S. stocks |
NDX | Nasdaq 100 — 100 largest non-financial Nasdaq stocks |
DJI | Dow Jones Industrial Average — 30 blue-chip U.S. stocks |
VIX | CBOE Volatility Index — market “fear gauge” |
RUT | Russell 2000 — small-cap U.S. stocks |
COMP | Nasdaq Composite — all Nasdaq-listed stocks |
NYA | NYSE Composite — all NYSE-listed stocks |
OEX | S&P 100 — 100 largest S&P 500 companies |
MID | S&P MidCap 400 — mid-sized U.S. stocks |
SML | S&P SmallCap 600 — small-cap U.S. stocks |
lastPrice, openPrice, highPrice, lowPrice, netChange, totalVolume, etc.). Quote fields like bidPrice/askPrice will be empty.Options
Option contracts use OSI (Options Symbology Initiative) symbols — the 21-character standard the U.S. options industry uses to uniquely identify a contract.The format isROOT + YYMMDD + C/P + 00000000 (the strike price in cents, left-padded). For example, AAPL240119C00150000 decodes as:AAPL— underlying stock240119— expiration date, 2024-01-19C— call (usePfor a put)00150000— strike price, $150.00 (00150000 ÷ 1000)
symbolType: "option" so the server knows to apply option-specific routing and to enable Greeks if requested.Data Types
Data Types
Quote Data
Trade Data
Level 2 / Order Book Data
Time & Sales Data
Greeks Data
symbolType: "option" and greeksFields is specified.Market Status
open, closed, in pre-market, or in after-hours trading, plus the status of individual exchanges.Level 2: compact order book rows
Level 2: compact order book rows
payload.data.orderBook entries use askSize:price:bidSize, and payload.data.quotes entries use exchange:askPrice:askSize:bidPrice:bidSize.Example:{
"orderBook": ["0:250.00:100", "100:272.55:0"],
"quotes": ["EDGX:272.55:100:272.00:500"],
"symbol": "AAPL",
"timestamp": "2025-12-29T05:18:33.600000-05:00"
}
Message Framing (NDJSON)
Message Framing (NDJSON)
\n). This format is called NDJSON — Newline-Delimited JSON.What this means for you: Don’t just call JSON.parse(frame) on every incoming message. Instead, split the frame on \n, drop empty lines, and parse each line independently. Otherwise you will silently lose messages whenever the server coalesces.Example
A single WebSocket frame may contain:{"type":"event","payload":{"action":"snapshot","type":"quote","symbol":"MSFT","data":{"bidPrice":189.94},"id":"sub-1","timestamp":1701450000123}}
{"type":"event","payload":{"action":"snapshot","type":"quote","symbol":"AAPL","data":{"bidPrice":172.21},"id":"sub-1","timestamp":1701450000124}}
\n and parse each line independently.Requirements
Requirements
WebSocket Client
Authentication
JSON Parser
Network Connectivity
Use Cases
Use Cases
Portfolio Monitoring
Trading Applications
Market Dashboards
Price Alert Systems
Market Analysis Tools
Authentication
If authentication is enabled, authenticate after opening the WebSocket and before subscribing. Auth uses the request/response envelope withPOST /auth; the body is only the token object expected by the backend.
Client sends:
{
"type": "request",
"id": "auth-001",
"payload": {
"method": "POST",
"path": "/auth",
"body": {
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
}
{
"type": "event",
"payload": {
"action": "authSuccess",
"id": "auth-001",
"data": {
"expiresIn": 2700000
},
"timestamp": 1701450000123
}
}
Subscribing to Market Data
Basic Subscription Structure
To start receiving data for a symbol, send a subscribe message. Thepayload is always an array, even when you only want one symbol — each item describes one symbol and the specific fields you want to receive for it.
Subscription object fields:
| Field | Type | Required | What to enter |
|---|---|---|---|
symbol | string | Yes | A stock ticker (e.g. AAPL), an index code (e.g. SPX), or an OSI option symbol (e.g. AAPL240119C00150000). |
symbolType | string | No | equity (default) for stocks and indices, or option for option contracts. Must be option if you want Greeks. |
quoteFields | string | array | No | Quote fields to subscribe to (see Quote Fields table below). Use ["*"] for all. |
tradeFields | string | array | No | Trade fields to subscribe to (see Trade Fields table below). Use ["*"] for all. |
level2 | boolean | No | true to receive full order-book depth for this symbol. Defaults to false. |
timeAndSales | boolean | No | true to receive a message for every individual trade execution. Defaults to false. |
timeAndSalesFields | string | array | No | Specific T&S fields to receive when timeAndSales: true. Defaults to all fields. |
greeksFields | string | array | No | Greek fields to subscribe to (options only). Use ["*"] for all. |
{
"type": "subscribe",
"id": "optional-correlation-id",
"payload": [
{
"symbol": "AAPL",
"symbolType": "equity",
"quoteFields": ["bidPrice", "askPrice"],
"tradeFields": ["lastPrice", "totalVolume"],
"level2": false,
"timeAndSales": false,
"timeAndSalesFields": ["price", "size"],
"greeksFields": ["delta", "gamma"]
}
]
}
symbolTypedefaults to"equity". Set it to"option"only when you’re subscribing to an option contract.- If you omit both
quoteFieldsandtradeFields, the server treats it as “send me everything” and subscribes you to all quote and all trade fields for that symbol. - Any field list (
quoteFields,tradeFields,timeAndSalesFields,greeksFields) accepts either a single string ("bidPrice") or an array (["bidPrice", "askPrice"]). Arrays are recommended for consistency.
Subscription Examples
Basic Examples
Basic Examples
Subscribe to Trade Fields Only
Get just price and size data for AAPL:{
"type": "subscribe",
"id": "sub-1",
"payload": [
{
"symbol": "AAPL",
"tradeFields": ["price", "size"]
}
]
}
Subscribe to All Quote and Trade Fields
When bothquoteFields and tradeFields are omitted, the backend subscribes to all quote and all trade fields:{
"type": "subscribe",
"id": "sub-2",
"payload": [
{
"symbol": "AAPL"
}
]
}
Subscribe to Quote Fields Only
Include onlyquoteFields when you do not want a trade subscription:{
"type": "subscribe",
"id": "sub-quote-1",
"payload": [
{
"symbol": "AAPL",
"quoteFields": ["bidPrice", "askPrice", "bidSize", "askSize"]
}
]
}
Subscribe to All Fields Using Wildcard
Use"*" to subscribe to all available fields:{
"type": "subscribe",
"id": "sub-4",
"payload": [
{
"symbol": "GOOGL",
"quoteFields": ["*"],
"tradeFields": ["*"]
}
]
}
Multiple Symbols
Multiple Symbols
Subscribe to Specific Quote Fields for Multiple Symbols
{
"type": "subscribe",
"id": "sub-3",
"payload": [
{
"symbol": "AAPL",
"quoteFields": ["bidPrice", "bidSize", "askPrice", "askSize", "midPrice", "spread"]
},
{
"symbol": "MSFT",
"quoteFields": ["bidPrice", "bidSize", "askPrice", "askSize", "midPrice", "spread"]
}
]
}
Subscribe to Multiple Symbols with Different Fields
Different symbols can have different field subscriptions:{
"type": "subscribe",
"id": "sub-6",
"payload": [
{
"symbol": "AAPL",
"tradeFields": ["lastPrice", "size", "netChange", "tick"]
},
{
"symbol": "MSFT",
"quoteFields": ["bidPrice", "askPrice", "spread"]
},
{
"symbol": "GOOGL",
"quoteFields": ["*"],
"tradeFields": ["*"]
}
]
}
Level 2 & Time & Sales
Level 2 & Time & Sales
Subscribe to Level 2 Order Book Data
{
"type": "subscribe",
"id": "sub-l2-1",
"payload": [
{
"symbol": "AAPL",
"level2": true
}
]
}
Subscribe to Time & Sales Data
{
"type": "subscribe",
"id": "sub-tns-1",
"payload": [
{
"symbol": "AAPL",
"timeAndSales": true
}
]
}
Subscribe to Both Level 2 and Time & Sales
Perfect for tape reading and order flow analysis:{
"type": "subscribe",
"id": "sub-l2-tns-1",
"payload": [
{
"symbol": "AAPL",
"level2": true,
"timeAndSales": true
}
]
}
Full Market Data Suite
Subscribe to quotes, trades, Level 2, and Time & Sales:{
"type": "subscribe",
"id": "sub-full-1",
"payload": [
{
"symbol": "AAPL",
"quoteFields": ["bidPrice", "askPrice", "midPrice", "spread"],
"tradeFields": ["lastPrice", "size", "totalVolume", "netChange"],
"level2": true,
"timeAndSales": true
}
]
}
Index Data
Index Data
Subscribe to S&P 500 Index
tradeFields only.{
"type": "subscribe",
"id": "sub-7",
"payload": [
{
"symbol": "SPX",
"tradeFields": ["lastPrice", "openPrice", "highPrice", "lowPrice", "netChange", "totalVolume"]
}
]
}
Subscribe to Multiple Indices
{
"type": "subscribe",
"id": "sub-8",
"payload": [
{
"symbol": "SPX",
"tradeFields": ["lastPrice", "netChange"]
},
{
"symbol": "NDX",
"tradeFields": ["lastPrice", "netChange"]
},
{
"symbol": "VIX",
"tradeFields": ["lastPrice", "netChange"]
}
]
}
Mixed Equities and Indices
{
"type": "subscribe",
"id": "sub-9",
"payload": [
{
"symbol": "AAPL",
"quoteFields": ["bidPrice", "askPrice", "midPrice"],
"tradeFields": ["lastPrice", "netChange"]
},
{
"symbol": "SPX",
"tradeFields": ["lastPrice", "openPrice", "highPrice", "lowPrice"]
}
]
}
Option Contracts
Option Contracts
Subscribe to a Single Option Contract
symbolType: "option".{
"type": "subscribe",
"id": "sub-10",
"payload": [
{
"symbol": "AAPL240119C00150000",
"symbolType": "option",
"quoteFields": ["bidPrice", "askPrice", "midPrice", "spread", "openInterest"],
"tradeFields": ["lastPrice", "totalVolume"]
}
]
}
Subscribe to Multiple Option Contracts
{
"type": "subscribe",
"id": "sub-11",
"payload": [
{
"symbol": "AAPL240119C00150000",
"symbolType": "option",
"quoteFields": ["bidPrice", "askPrice"],
"tradeFields": ["lastPrice"]
},
{
"symbol": "AAPL240119C00155000",
"symbolType": "option",
"quoteFields": ["bidPrice", "askPrice"],
"tradeFields": ["lastPrice"]
},
{
"symbol": "AAPL240119P00145000",
"symbolType": "option",
"quoteFields": ["bidPrice", "askPrice"],
"tradeFields": ["lastPrice"]
}
]
}
Subscribe to All Greeks (Wildcard)
Use"*" to receive all Greeks fields for an option contract:{
"type": "subscribe",
"id": "sub-greeks-1",
"payload": [
{
"symbol": "XSP281215C00920000",
"symbolType": "option",
"greeksFields": ["*"]
}
]
}
Subscribe to Specific Greeks Fields
Request only the Greeks you need to minimize bandwidth:{
"type": "subscribe",
"id": "sub-greeks-2",
"payload": [
{
"symbol": "AAPL240119C00150000",
"symbolType": "option",
"greeksFields": ["delta", "impliedVolatility"]
}
]
}
Subscribe to Greeks Alongside Quotes
Combine Greeks with quote data in a single subscription:{
"type": "subscribe",
"id": "sub-greeks-3",
"payload": [
{
"symbol": "AAPL240119C00150000",
"symbolType": "option",
"quoteFields": ["bidPrice", "askPrice", "midPrice"],
"greeksFields": ["delta", "gamma", "theta", "vega", "impliedVolatility"]
}
]
}
greeksFields is only applicable when symbolType is "option". Including it for equity symbols has no effect.Available Fields Reference
Frequently used fields you can subscribe to, organized by data type. The wildcard["*"] expands to every backend-supported field for that category.
Quote Fields
Quote Fields
quoteFields array. Use ["*"] for all fields.| Field | Description |
|---|---|
* | Wildcard - Subscribe to all available quote fields |
bidPrice | Current best bid price - the highest price a buyer is willing to pay |
bidSize | Number of shares available at the bid price (typically in round lots of 100) |
bidExchange | Exchange code where the best bid originated (e.g., ‘Q’ for NASDAQ, ‘N’ for NYSE) |
askPrice | Current best ask (offer) price - the lowest price a seller is willing to accept |
askSize | Number of shares available at the ask price (typically in round lots of 100) |
askExchange | Exchange code where the best ask originated (e.g., ‘Q’ for NASDAQ, ‘N’ for NYSE) |
quoteTimestamp | Unix timestamp in milliseconds of the consolidated/top-of-book quote time |
midPrice | Midpoint price calculated as (bidPrice + askPrice) / 2 |
spread | Bid-ask spread calculated as askPrice - bidPrice |
openInterest | Total outstanding open contracts for the option (options only; include in quoteFields when symbolType is "option") |
type | Data source type for the snapshot record |
sicCode | Standard Industrial Classification (SIC) code identifying the company’s industry |
hasOptions | Whether the symbol has listed options available (boolean) |
sharesOutstanding | Total shares outstanding |
assets | Total assets |
liabilities | Total liabilities |
longTermDebt | Long-term debt |
EPSDiluted | Diluted earnings per share |
EPSLatest12Month | Latest 12-month (trailing) earnings per share |
EPS3YearGrowthRate | 3-year EPS growth rate |
EPS5YearGrowthRate | 5-year EPS growth rate |
avgVolume4Weeks | Average daily trading volume over the trailing 4 weeks |
PE | Price-to-earnings (P/E) ratio |
high52WeekPrice | 52-week high price |
high52WeekDate | Date of the 52-week high |
low52WeekPrice | 52-week low price |
low52WeekDate | Date of the 52-week low |
dividend | Latest dividend amount |
shortSaleRestricted | Whether the symbol is under a short-sale restriction (SSR) |
type down are fundamental and reference data drawn from the symbol snapshot rather than the live order book. They are delivered as strings (except hasOptions, which is a boolean), and field names are case-sensitive — use the exact casing shown (e.g. PE, EPSDiluted)."quoteFields": ["bidPrice", "askPrice", "bidSize", "askSize", "midPrice", "spread"]
Trade Fields
Trade Fields
tradeFields array. Use ["*"] for all fields.| Field | Description |
|---|---|
* | Wildcard - Subscribe to all available trade fields |
price | Last trade execution price (same as lastPrice in most cases) |
size | Number of shares in the last trade execution |
totalVolume | Cumulative trading volume for the current session (total shares traded) |
openPrice | Opening price for the current trading session |
highPrice | Highest price reached during the current trading session |
lowPrice | Lowest price reached during the current trading session |
lastPrice | Most recent trade price (last sale price) |
netChange | Net price change from previous close (lastPrice - previousClosePrice) |
tick | Tick direction indicator: ‘up’ (uptick), ‘down’ (downtick), or ‘unchanged’ |
tradeSeq | Trade sequence number - monotonically increasing identifier for each trade |
tradeTimestamp | ISO 8601 timestamp of when the trade was executed |
closePrice | Official closing price (may be from current or previous session depending on market hours) |
"tradeFields": ["lastPrice", "size", "totalVolume", "netChange", "tick"]
Time & Sales Fields
Time & Sales Fields
timeAndSalesFields array when timeAndSales: true. Use ["*"] for all fields (default if not specified).| Field | Description |
|---|---|
* | Wildcard - Subscribe to all available Time & Sales fields |
symbol | The ticker symbol for the trade |
price | Trade execution price |
size | Number of shares in the trade |
tick | Tick direction indicator: ‘up’ (uptick), ‘down’ (downtick), or ‘unchanged’ |
tradeSeq | Trade sequence number - monotonically increasing identifier for each trade |
tradeExchange | Exchange code where the trade was executed (e.g., ‘Q’ for NASDAQ, ‘N’ for NYSE, ‘D’ for FINRA ADF) |
tradeTimestamp | ISO 8601 timestamp of when the trade was executed |
{
"symbol": "AAPL",
"timeAndSales": true,
"timeAndSalesFields": ["price", "size", "tick", "tradeTimestamp", "tradeExchange"]
}
Level 2 Fields
Level 2 Fields
level2: true. The response contains market depth across multiple exchanges in a compact format.| Field | Description |
|---|---|
symbol | The ticker symbol for the order book |
orderBook | Array of compact order book entries in format "askSize:price:bidSize" |
quotes | Array of exchange quotes in format "EXCHANGE:askPrice:askSize:bidPrice:bidSize" |
timestamp | ISO 8601 timestamp of the update |
orderBook follows: "askSize:price:bidSize"askSize: Number of shares at ask (0 if no ask)price: Price levelbidSize: Number of shares at bid (0 if no bid)
quotes follows: "EXCHANGE:askPrice:askSize:bidPrice:bidSize"EXCHANGE: Exchange code (NSDQ, NYSE, BATS, EDGX, etc.)askPrice: Ask price at this exchangeaskSize: Number of shares at askbidPrice: Bid price at this exchangebidSize: Number of shares at bid
- orderBook:
askSize:price:bidSize(e.g.,"0:250.00:100"= 0 shares ask, $250.00 price, 100 shares bid) - quotes:
exchange:askPrice:askSize:bidPrice:bidSize(e.g.,"EDGX:272.55:100:272.00:500"= EDGX exchange, 272.55askwith100shares,272.00 bid with 500 shares)
{
"type": "event",
"payload": {
"action": "update",
"type": "level2nOB",
"symbol": "AAPL",
"data": {
"orderBook": [
"0:250.00:100",
"0:271.00:100",
"0:272.00:1000",
"45:272.49:0",
"100:272.55:0"
],
"quotes": [
"EDGX:272.55:100:272.00:500",
"BATS:272.58:300:271.00:100",
"NSDQ:272.49:45:272.40:10"
],
"symbol": "AAPL",
"timestamp": "2025-12-29T05:18:33.600000-05:00"
},
"timestamp": 1767003513653
}
}
Greeks Fields
Greeks Fields
greeksFields array. Only available for option contracts (symbolType: "option"). Use ["*"] for all fields.What are Greeks? Greeks are standard risk measures that tell you how an option’s price is likely to move when something changes — the underlying stock price, time, or volatility. They are the building blocks of options risk management.| Field | Description |
|---|---|
* | Wildcard — subscribe to all available Greeks fields |
delta | How much the option’s price moves for a **1moveintheunderlyingstock∗∗.Callsare0to1,putsare−1to0.A0.50deltacallgains≈0.50 if the stock rises $1. Also a rough estimate of the probability the option expires in-the-money. |
gamma | How much delta itself changes per $1 move in the underlying. High gamma = delta swings quickly, so position risk changes fast. |
theta | How much value the option loses per day purely from time passing (the “time decay”). Almost always negative for long option holders. |
vega | How much the option’s price changes for a 1-percentage-point change in implied volatility. Long options have positive vega — they gain when volatility rises. |
rho | How much the option’s price changes for a 1-percentage-point change in interest rates. Usually small for short-dated options. |
impliedVolatility | The market’s expectation of how volatile the underlying will be over the option’s life, expressed as a decimal: 0.2752 means 27.52% annualized. Higher IV = more expensive options. |
symbol | The OSI symbol of the option contract |
timestamp | ISO 8601 timestamp of when the Greeks were last calculated |
"greeksFields": ["*"]
"greeksFields": ["delta", "gamma", "impliedVolatility"]
greeksFields is only applicable when symbolType is "option". It has no effect for equity or index symbols.Unsubscribing from Market Data
The WebSocket supports three unsubscribe modes for flexible subscription management.- Mode 1: Full Unsubscribe
- Mode 2: Type-Specific
- Mode 3: Field-Level
{
"type": "unsubscribe",
"id": "unsub-1",
"payload": ["AAPL", "MSFT", "GOOGL"]
}
Unsubscribe from Quotes Only
{
"type": "unsubscribe",
"id": "unsub-2",
"payload": [
{
"symbol": "AAPL",
"quote": true,
"trade": false
}
]
}
Unsubscribe from Trades Only
{
"type": "unsubscribe",
"id": "unsub-3",
"payload": [
{
"symbol": "TSLA",
"trade": true
}
]
}
Unsubscribe from Level 2 Only
{
"type": "unsubscribe",
"id": "unsub-l2-1",
"payload": [
{
"symbol": "AAPL",
"level2": true
}
]
}
Unsubscribe from Time & Sales Only
{
"type": "unsubscribe",
"id": "unsub-tns-1",
"payload": [
{
"symbol": "AAPL",
"timeAndSales": true
}
]
}
Unsubscribe from Level 2 and Time & Sales
{
"type": "unsubscribe",
"id": "unsub-l2-tns-1",
"payload": [
{
"symbol": "AAPL",
"level2": true,
"timeAndSales": true
}
]
}
Unsubscribe from All Greeks
{
"type": "unsubscribe",
"id": "unsub-greeks-1",
"payload": [
{
"symbol": "XSP281215C00920000",
"greeks": true
}
]
}
quote: boolean - Unsubscribe from all quote datatrade: boolean - Unsubscribe from all trade datalevel2: boolean - Unsubscribe from Level 2 datatimeAndSales: boolean - Unsubscribe from Time & Sales datagreeks: boolean - Unsubscribe from all Greeks data (options only)
Unsubscribe from Specific Quote Fields
{
"type": "unsubscribe",
"id": "unsub-4",
"payload": [
{
"symbol": "GOOGL",
"quoteFields": ["bidPrice", "askPrice", "bidSize", "askSize"]
}
]
}
Unsubscribe from Specific Trade Fields
{
"type": "unsubscribe",
"id": "unsub-5",
"payload": [
{
"symbol": "AAPL",
"tradeFields": ["totalVolume", "tick", "tradeSeq"]
}
]
}
Unsubscribe from Mixed Fields
{
"type": "unsubscribe",
"id": "unsub-6",
"payload": [
{
"symbol": "MSFT",
"quoteFields": ["midPrice", "spread"],
"tradeFields": ["tradeTimestamp", "closePrice"]
}
]
}
greeks: true to remove the full Greeks subscription for an option symbol.Unsubscribe Response
When you unsubscribe, the server confirms the action:{
"type": "event",
"payload": {
"action": "unsubscribe",
"data": {
"symbols": ["AAPL"]
},
"id": "unsub-1",
"timestamp": 1701450000123
}
}
Message Formats & Responses
Snapshot Responses
When you subscribe, you immediately receive a snapshot of current market data. The snapshot contains all requested fields.Quote Snapshot Example
Quote Snapshot Example
{
"type": "event",
"payload": {
"action": "snapshot",
"type": "quote",
"symbol": "AAPL",
"data": {
"bidPrice": 150.25,
"bidSize": 500,
"bidExchange": "Q",
"askPrice": 150.26,
"askSize": 300,
"askExchange": "N",
"quoteTimestamp": 1701450000121,
"midPrice": 150.255,
"spread": 0.01
},
"id": "sub-1",
"timestamp": 1701450000123
}
}
Trade Snapshot Example
Trade Snapshot Example
{
"type": "event",
"payload": {
"action": "snapshot",
"type": "trade",
"symbol": "AAPL",
"data": {
"price": 150.25,
"lastPrice": 150.25,
"size": 100,
"totalVolume": 45678900,
"openPrice": 149.50,
"highPrice": 151.00,
"lowPrice": 149.25,
"closePrice": 149.80,
"netChange": 0.45,
"tick": "up",
"tradeSeq": 123456,
"tradeTimestamp": "2026-04-20T07:11:01.123000-04:00"
},
"id": "sub-1",
"timestamp": 1701450000125
}
}
Level 2 Update Example
Level 2 Update Example
- orderBook:
askSize:price:bidSize - quotes:
exchange:askPrice:askSize:bidPrice:bidSize
{
"type": "event",
"payload": {
"action": "update",
"type": "level2nOB",
"symbol": "AAPL",
"timestamp": 1701450000123,
"data": {
"orderBook": [
"0:150.24:200",
"0:150.24:300",
"500:150.26:0",
"300:150.26:0",
"400:150.27:0"
],
"quotes": [
"NSDQ:150.26:500:150.25:400",
"NYSE:150.27:200:150.24:200",
"PACF:150.26:300:150.24:300"
],
"symbol": "AAPL",
"timestamp": "2025-12-29T05:18:33.123000-05:00"
}
}
}
Time & Sales Update Example
Time & Sales Update Example
{
"type": "event",
"payload": {
"action": "update",
"type": "timeAndSales",
"symbol": "AAPL",
"timestamp": 1701450000458,
"data": {
"symbol": "AAPL",
"price": "150.26",
"size": "250",
"tick": "up",
"tradeSeq": "123457",
"tradeExchange": "Q",
"tradeTimestamp": "2026-04-20T07:11:01.717000-04:00"
}
}
}
Option Contract Snapshot
Option Contract Snapshot
{
"type": "event",
"payload": {
"action": "snapshot",
"type": "quote",
"symbol": "AAPL240119C00150000",
"data": {
"bidPrice": 5.25,
"askPrice": 5.30,
"bidSize": 50,
"askSize": 75,
"midPrice": 5.275,
"spread": 0.05,
"openInterest": 12450
},
"id": "sub-opt-1",
"timestamp": 1701450000123
}
}
Greeks Snapshot & Update Example
Greeks Snapshot & Update Example
greeksFields, the server immediately sends a snapshot of the last known Greeks values. Subsequent updates are streamed whenever Greeks are recalculated.1. Initial snapshot (received immediately on subscribe):{
"type": "event",
"payload": {
"action": "snapshot",
"type": "greeks",
"symbol": "XSP281215C00920000",
"timestamp": 1770975436651,
"data": {
"delta": 0.522,
"gamma": 0.0386,
"impliedVolatility": 0.2752,
"symbol": "XSP281215C00920000",
"theta": -0.0246,
"rho": 0.004,
"timestamp": "2026-02-13T15:07:16.65+05:30",
"vega": 0.1606
}
}
}
{
"type": "event",
"payload": {
"action": "update",
"type": "greeks",
"symbol": "XSP281215C00920000",
"timestamp": 1770975502651,
"data": {
"delta": 0.531,
"gamma": 0.0391,
"impliedVolatility": 0.2788,
"symbol": "XSP281215C00920000",
"theta": -0.0249,
"rho": 0.004,
"timestamp": "2026-02-13T15:08:22.10+05:30",
"vega": 0.1618
}
}
}
greeksFields: ["delta", "impliedVolatility"]):{
"type": "event",
"payload": {
"action": "snapshot",
"type": "greeks",
"symbol": "AAPL240119C00150000",
"timestamp": 1701450000890,
"data": {
"delta": 0.638,
"impliedVolatility": 0.3105
}
}
}
action: "snapshot" vs action: "update" to distinguish the initial state from real-time changes. Only the fields you subscribed to are included in each message.Update Responses
After the snapshot, you receive real-time updates with only changed fields:Quote Update
Quote Update
{
"type": "event",
"payload": {
"action": "update",
"type": "quote",
"symbol": "AAPL",
"timestamp": 1701450001456,
"data": {
"bidPrice": 150.26,
"bidSize": 600,
"midPrice": 150.255,
"spread": 0.01
}
}
}
Trade Update
Trade Update
{
"type": "event",
"payload": {
"action": "update",
"type": "trade",
"symbol": "GOOG",
"timestamp": 1776683461767,
"data": {
"netChange": -3.1300000000000003,
"price": 336.27000000000004,
"size": 6,
"symbol": "GOOG",
"tradeTimestamp": "2026-04-20T07:11:01.717000-04:00"
}
}
}
Market Status Updates
After successful authentication and whenever market status changes, the server can send a market status event:{
"type": "event",
"payload": {
"action": "update",
"type": "marketStatus",
"data": {
"market": "open",
"serverTime": "2026-05-13T10:30:00Z",
"exchanges": {
"nyse": "open",
"nasdaq": "open"
},
"currencies": {
"fx": "open"
},
"afterHours": false,
"earlyHours": false
},
"timestamp": 1701450000123
}
}
Streaming event structure
Streaming market data events use the following envelope:| Field | Type | Description |
|---|---|---|
type | string | Outer envelope type. Streaming market data events always use event. |
payload.action | string | What kind of event this is. One of: snapshot (the first message you receive after subscribing — current state), update (a real-time change), error (something went wrong), unsubscribe (the server confirming you’ve been removed from a feed). |
payload.type | string | Which data category the event belongs to. One of: quote (best bid/ask), trade (last sale info), level2nOB (order book depth), timeAndSales (every individual trade), greeks (option risk measures), marketStatus (market session state). |
payload.symbol | string | The ticker or option symbol the event is about. Omitted for market-wide events such as marketStatus. |
payload.data | object | The actual data payload. Note that update messages only include fields that changed since the last message — fields not in the update have not changed. |
payload.id | string | Correlation ID. When the event was triggered by one of your subscribe requests, the server echoes back the id you sent. |
payload.timestamp | integer | When the event happened, in Unix milliseconds (epoch). |
type values:event— Streaming pushes from the server: market data, auth/refresh notifications, unsubscribe confirmations, subscription errors.pong— Reply to apingyou sent. Used only for keep-alive.response— Reply to an on-demandrequestyou sent (e.g. fetching option expiry dates).
Error Handling
Error Response Format
{
"type": "event",
"payload": {
"action": "error",
"symbol": "INVALID",
"error": "symbol not found",
"id": "sub-1",
"timestamp": 1701450000123
}
}
Common Error Messages
| Message | Description | Resolution |
|---|---|---|
authentication required | The connection must authenticate before this action | Send a POST /auth request message with a valid token |
invalid subscribe format | Subscribe payload could not be parsed as an array of symbol requests | Send payload as an array of objects |
invalid unsubscribe format | Unsubscribe payload could not be parsed as an array of strings or objects | Send payload as ["AAPL"] or [{ "symbol": "AAPL", "quote": true }] |
no symbols provided | The request did not include any symbols | Include at least one symbol |
too many symbols in request | Request exceeded the backend symbol limit | Split symbols across multiple requests |
invalid quote fields: ... | One or more quote field names are not supported | Check field names against the quote field list |
invalid trade fields: ... | One or more trade field names are not supported | Check field names against the trade field list |
invalid greeks fields: ... | One or more Greeks field names are not supported | Use only delta, gamma, theta, vega, rho, or impliedVolatility |
Connection Management
Ping/Pong Keepalive
Send periodic pings to keep the WebSocket connection alive and detect network issues: Client sends:{
"type": "ping",
"id": "ping-001"
}
{
"type": "pong",
"id": "ping-001",
"timestamp": "2026-05-13T10:30:00Z",
"payload": null
}
Handling Disconnects
const ws = new WebSocket('wss://api.aries.com/v1/market/ws');
ws.onclose = (event) => {
console.log('WebSocket closed:', event.code, event.reason);
// Implement reconnection logic with exponential backoff
setTimeout(() => {
reconnect();
}, getBackoffDelay());
};
ws.onerror = (error) => {
console.error('WebSocket error:', error);
};
Request/Response Pattern
Besides streaming subscriptions, the WebSocket supports on-demand queries using a RESTful-style request/response pattern.Get Option Expiry Dates
Query all available expiration dates for an underlying symbol: Request:{
"type": "request",
"id": "req-expiry-1",
"payload": {
"method": "GET",
"path": "/options/AAPL/expiry-dates"
}
}
{
"type": "response",
"id": "req-expiry-1",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"expiryDates": [
{
"date": "2024-01-19"
},
{
"date": "2024-02-16"
},
{
"date": "2024-03-15"
},
{
"date": "2024-04-19"
}
]
}
}
}
Get Option Contract Symbols
Query all call and put contracts for a symbol and expiration date: Request:{
"type": "request",
"id": "req-contracts-1",
"payload": {
"method": "GET",
"path": "/options/AAPL/contracts/2024-01-19"
}
}
{
"type": "request",
"id": "req-contracts-weekly-1",
"payload": {
"method": "GET",
"path": "/options/SPX/contracts/2024-01-19/W"
}
}
{
"type": "response",
"id": "req-contracts-1",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"expiryDate": "2024-01-19",
"calls": [
{
"symbol": "AAPL240119C00145000",
"strikePrice": 145.00
},
{
"symbol": "AAPL240119C00150000",
"strikePrice": 150.00
}
],
"puts": [
{
"symbol": "AAPL240119P00145000",
"strikePrice": 145.00
},
{
"symbol": "AAPL240119P00150000",
"strikePrice": 150.00
}
]
}
}
}
Request Responses
Successful request replies are returned astype: "response" with payload.status and payload.data.
Request/response errors use type: "response" with payload.status and payload.error. Streaming subscription errors use type: "event" with payload.action: "error".{
"type": "request",
"id": "auth-001",
"payload": {
"method": "POST",
"path": "/auth",
"body": {
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTEyMzQ1IiwiZXhwIjoxNzAxNDUzNjAwfQ.signature"
}
}
}{
"type": "subscribe",
"id": "sub-1",
"payload": [
{
"symbol": "AAPL",
"tradeFields": [
"price",
"size"
]
}
]
}{
"type": "unsubscribe",
"id": "unsub-1",
"payload": [
"AAPL",
"MSFT"
]
}{
"type": "ping",
"id": "ping-001"
}{
"type": "request",
"id": "req-expiry-1",
"payload": {
"method": "GET",
"path": "/options/AAPL/expiry-dates"
}
}{
"type": "request",
"id": "req-contracts-1",
"payload": {
"method": "GET",
"path": "/options/AAPL/contracts/2024-01-19"
}
}{
"type": "request",
"id": "req-003",
"payload": {
"method": "GET",
"path": "/equities/AAPL/snapshot"
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "quote",
"symbol": "AAPL",
"data": {
"bidPrice": 190.04,
"askPrice": 190.06,
"midPrice": 190.05,
"spread": 0.02,
"quoteTimestamp": 1701450001000
},
"timestamp": 1701450001123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "trade",
"symbol": "AAPL",
"data": {
"price": 190.05,
"size": 100
},
"timestamp": 1701450001123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "level2nOB",
"symbol": "AAPL",
"data": {
"orderBook": [
"0:150.24:200",
"500:150.26:0"
],
"quotes": [
"NSDQ:150.26:500:150.25:400",
"NYSE:150.27:200:150.24:200"
],
"symbol": "AAPL",
"timestamp": "2025-12-29T05:18:33.600000-05:00"
},
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "timeAndSales",
"symbol": "AAPL",
"data": {
"symbol": "AAPL",
"price": "189.95",
"size": "100",
"tick": "up",
"tradeSeq": "123456789",
"tradeExchange": "Q",
"tradeTimestamp": "2026-04-20T07:11:01.717000-04:00"
},
"timestamp": 1701450001123
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "greeks",
"symbol": "XSP281215C00920000",
"data": {
"delta": 0.531,
"gamma": 0.0391,
"impliedVolatility": 0.2788,
"symbol": "XSP281215C00920000",
"theta": -0.0249,
"rho": 0.004,
"timestamp": "2026-02-13T15:08:22.10+05:30",
"vega": 0.1618
},
"timestamp": 1770975502651
}
}{
"type": "event",
"payload": {
"action": "error",
"symbol": "AAPL",
"error": "invalid quote fields: invalidField1, invalidField2",
"id": "sub-1",
"timestamp": 1701450004000
}
}{
"type": "event",
"payload": {
"action": "authRequired",
"error": "authentication required",
"id": "sub-001",
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "refreshAuth",
"data": {
"message": "authentication expires soon, please re-authenticate",
"expiresIn": 300000
},
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "authExpired",
"error": "authentication expired",
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "authSuccess",
"id": "auth-001",
"data": {
"expiresIn": 2700000
},
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "snapshot",
"type": "quote",
"symbol": "AAPL",
"data": {
"bidPrice": 189.94,
"bidSize": 100,
"askPrice": 189.96,
"askSize": 200,
"midPrice": 189.95,
"spread": 0.02,
"quoteTimestamp": 1701450000000
},
"id": "sub-2",
"timestamp": 1701450000123
}
}{
"type": "event",
"payload": {
"action": "unsubscribe",
"data": {
"symbols": [
"AAPL",
"MSFT"
]
},
"id": "unsub-1",
"timestamp": 1701450002000
}
}{
"type": "pong",
"id": "ping-001",
"timestamp": "2026-05-13T10:30:00Z",
"payload": null
}{
"type": "response",
"id": "req-expiry-1",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"expiryDates": [
{
"date": "2024-01-19"
},
{
"date": "2024-01-26",
"freq": "W"
},
{
"date": "2024-02-16"
}
]
}
}
}{
"type": "response",
"id": "req-contracts-1",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"expiryDate": "2024-01-19",
"calls": [
{
"symbol": "AAPL240119C00145000",
"strikePrice": 145
},
{
"symbol": "AAPL240119C00150000",
"strikePrice": 150
}
],
"puts": [
{
"symbol": "AAPL240119P00145000",
"strikePrice": 145
},
{
"symbol": "AAPL240119P00150000",
"strikePrice": 150
}
]
}
}
}{
"type": "response",
"id": "req-003",
"timestamp": "2026-01-07T15:17:32Z",
"payload": {
"status": 200,
"data": {
"symbol": "AAPL",
"name": "Apple Inc.",
"description": "Apple Inc. is a preeminent American multinational technology company renowned for its innovative consumer electronics, software, and online services.",
"assetType": "Common Stock",
"sector": "TECHNOLOGY",
"industry": "CONSUMER ELECTRONICS",
"address": "ONE APPLE PARK WAY, CUPERTINO, CA, UNITED STATES, 95014",
"sicCode": "3663",
"fiscalYearEnd": "September",
"latestQuarter": "2025-09-30",
"lastPrice": "261.9",
"price": "261.968295",
"openPrice": "263.59999999999997",
"highPrice": "263.68",
"lowPrice": "261.21",
"closePrice": "262.428295",
"netChange": "-0.45999999999999996",
"bidPrice": "261.98",
"bidSize": "400",
"askPrice": "261.99",
"askSize": "100",
"midPrice": "261.985",
"spread": "0.009999999999990905",
"bidExchange": "NQEX|Nasdaq Exchange",
"askExchange": "NQEX|Nasdaq Exchange",
"tradeExchange": "NQNX|Nasdaq Trade Reporting Facility",
"totalVolume": "10781409",
"avgVolume4Weeks": "41245325",
"tick": "-1",
"tradeSeq": "13264647",
"quoteTimestamp": "2026-01-07T10:16:56.961000-05:00",
"tradeTimestamp": "2026-01-07T10:17:31.398000-05:00",
"high52WeekPrice": "288.62",
"high52WeekDate": "2025-12-03T00:00:00.000Z",
"low52WeekPrice": "169.2101",
"low52WeekDate": "2025-04-08T00:00:00.000Z",
"movingAverage50Day": "269.52",
"movingAverage200Day": "229.91",
"marketCapitalization": "4021300494000",
"sharesOutstanding": "14776353",
"eps": "7.4",
"EPSDiluted": "1.84",
"dilutedEPSTTM": "7.4",
"EPSLatest12Month": "89.690722",
"EPS3YearGrowthRate": "12.566554",
"EPS5YearGrowthRate": "19.982310000000002",
"PE": "35.1689",
"trailingPE": "36.62",
"forwardPE": "33.0",
"pegRatio": "2.769",
"priceToBookRatio": "54.84",
"priceToSalesRatioTTM": "9.66",
"bookValue": "4.991",
"beta": "1.107",
"dividend": "0.26",
"dividendPerShare": "1.02",
"dividendYield": "0.0037",
"revenueTTM": "416161006000",
"revenuePerShareTTM": "27.84",
"grossProfitTTM": "195201008000",
"ebitda": "144748003000",
"profitMargin": "0.269",
"operatingMarginTTM": "0.317",
"returnOnAssetsTTM": "0.23",
"returnOnEquityTTM": "1.714",
"evToRevenue": "9.82",
"evToEBITDA": "28.24",
"quarterlyEarningsGrowthYOY": "0.912",
"quarterlyRevenueGrowthYOY": "0.079",
"assets": "359241000",
"liabilities": "285508000",
"longTermDebt": "986570000",
"alphaVantageUpdatedAt": "2025-12-23T11:29:26Z",
"type": "ETRADE",
"size": "1"
}
}
}{
"type": "event",
"payload": {
"action": "update",
"type": "marketStatus",
"data": {
"market": "open",
"serverTime": "2026-05-13T10:30:00Z",
"exchanges": {
"nyse": "open",
"nasdaq": "open"
},
"currencies": {
"fx": "open"
},
"afterHours": false,
"earlyHours": false
},
"timestamp": 1701450000123
}
}Request to authenticate the WebSocket connection
Request to subscribe to market data for one or more symbols
Request to unsubscribe from market data
Keep-alive ping message
Request to get option expiration dates for a symbol
Request to get option contract symbols for a symbol and expiry date
Request to get a full snapshot of equity data for a symbol
Real-time quote update for a subscribed symbol
Real-time trade/price update for a subscribed symbol
Real-time Level 2 order book update showing market depth across exchanges
Real-time trade execution from the time and sales feed
Greeks snapshot on subscribe and real-time updates for an option contract
Error message from the server
Server requests authentication
Server warns authentication expires soon
Server notifies authentication has expired
Successful authentication response
Initial snapshot of market data after subscription
Confirmation of unsubscribe request
Response to ping request
Response containing option expiration dates
Response containing option contract symbols (calls and puts)
Response containing comprehensive equity data snapshot
Current market status
Was this page helpful?