Real-time Stock Data

This API provides stock market data on a websocket stream. This helps receive the most up to date market information that could help your trading strategy to act upon certain market movements. If you wish to access the latest pricing data, using the stream provides much better accuracy and performance than polling the latest historical endpoints.

You can find the general description of the real-time WebSocket Stream here. This page focuses on the stock stream.

URL

The URL for the stock stream is

wss://stream.data.alpaca.markets/v2/{feed}

Sandbox URL:

wss://stream.data.sandbox.alpaca.markets/v2/{feed}

Substitute iex or sip to {feed} depending on your subscription. The difference between SIP and IEX is described here.

Any attempt to access a data feed not available for your subscription will result in an error during authentication.

Channels

You can subscribe to the channels described in this section. For example

{"action":"subscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["*"]}

Trades

Schema

AttributeTypeNotes
Tstringmessage type, always “t”
Sstringsymbol
iinttrade ID
xstringexchange code where the trade occurred
pnumbertrade price
sinttrade size
carraytrade condition
tstringRFC-3339 formatted timestamp with nanosecond precision
zstringtape

Example

{
  "T": "t",
  "i": 96921,
  "S": "AAPL",
  "x": "D",
  "p": 126.55,
  "s": 1,
  "t": "2021-02-22T15:51:44.208Z",
  "c": ["@", "I"],
  "z": "C"
}

Quotes

Schema

AttributeTypeNotes
Tstringmessage type, always “q”
Sstringsymbol
axstringask exchange code
apnumberask price
asintask size
bxstringbid exchange code
bpnumberbid price
bsintbid size
carrayquote condition
tstringRFC-3339 formatted timestamp with nanosecond precision
zstringtape

Example

{
  "T": "q",
  "S": "AMD",
  "bx": "U",
  "bp": 87.66,
  "bs": 1,
  "ax": "Q",
  "ap": 87.68,
  "as": 4,
  "t": "2021-02-22T15:51:45.335689322Z",
  "c": ["R"],
  "z": "C"
}

Bars

There are three separate channels where you can stream trade aggregates (bars).

Minute Bars (bars)

Minute bars are emitted right after each minute mark. They contain the trades from the previous minute. Trades from pre-market and aftermarket are also aggregated and sent out on the bars channel.

Daily Bars (dailyBars)

Daily bars are emitted right after each minute mark after the market opens. The daily bars contain all trades until the time they were emitted.

Updated Bars (updatedBars)

Updated bars are emitted after each half-minute mark if a “late” trade arrived after the previous minute mark. For example if a trade with a timestamp of 16:49:59.998 arrived right after 16:50:00, just after 16:50:30 an updated bar with t set to 16:49:00 will be sent containing that trade, possibly updating the previous bar’s closing price and volume.

Schema

AttributeTypeDescription
Tstringmessage type: “b”, “d” or “u”
Sstringsymbol
onumberopen price
hnumberhigh price
lnumberlow price
cnumberclose price
vintvolume
tstringRFC-3339 formatted timestamp

Example

{
  "T": "b",
  "S": "SPY",
  "o": 388.985,
  "h": 389.13,
  "l": 388.975,
  "c": 389.12,
  "v": 49378,
  "t": "2021-02-22T19:15:00Z"
}

Trade Corrections

These messages indicate that a previously sent trade was incorrect and they contain the corrected trade.

Subscription to trade corrections and cancel/errors is automatic when you subscribe to the trade channel.

{"action":"subscribe","trades":["AAPL"]}
[{"T":"subscription","trades":["AAPL"],"quotes":[],"bars":[],"updatedBars":[],"dailyBars":[],"statuses":[],"lulds":[],
"corrections":["AAPL"],"cancelErrors":["AAPL"]}]

Schema

AttributeTypeDescription
Tstringmessage type, always “c”
Sstringsymbol
xstringexchange code
oiintoriginal trade id
opnumberoriginal trade price
osstringoriginal trade size
ocarrayoriginal trade conditions
ciintcorrected trade id
cpnumbercorrected trade price
csintcorrected trade size
ccarraycorrected trade conditions
tstringRFC-3339 formatted timestamp
zstringtape

Example

{
  "T": "c",
  "S": "EEM",
  "x": "M",
  "oi": 52983525033527,
  "op": 39.1582,
  "os": 440000,
  "oc": [
    " ",
    "7"
  ],
  "ci": 52983525034326,
  "cp": 39.1809,
  "cs": 440000,
  "cc": [
    " ",
    "7"
  ],
  "z": "B",
  "t": "2023-04-06T14:25:06.542305024Z"
}

Trade Cancels/Errors

These messages indicate that a previously sent trade was canceled.

Subscription to trade corrections and cancel/errors is automatic when you subscribe to the trade channel.

{"action":"subscribe","trades":["AAPL"]}
[{"T":"subscription","trades":["AAPL"],"quotes":[],"bars":[],"updatedBars":[],"dailyBars":[],"statuses":[],"lulds":[],
"corrections":["AAPL"],"cancelErrors":["AAPL"]}]

Schema

AttributeTypeDescription
Tstringmessage type, always “x”
Sstringsymbol
iinttrade id
xstringtrade exchange
pnumbertrade price
sinttrade size
astringaction (“C” for cancel, “E” for error)
tstringRFC-3339 formatted timestamp
zstringtape

Example

{
  "T": "x",
  "S": "GOOGL",
  "i": 465,
  "x": "D",
  "p": 105.31,
  "s": 300,
  "a": "C",
  "z": "C",
  "t": "2023-04-06T13:15:42.83540958Z"
}

LULDs

Limit Up - Limit Down messages provide upper and lower limit price bands to securities.

Schema

AttributeTypeDescription
Tstringmessage type, always “l”
Sstringsymbol
unumberlimit up price
dnumberlimit down price
istringindicator
tstringRFC-3339 formatted timestamp
zstringtape

Example

{
  "T": "l",
  "S": "IONM",
  "u": 3.24,
  "d": 2.65,
  "i": "B",
  "t": "2023-04-06T13:34:45.565004401Z",
  "z": "C"
}

Trading Status

Identifies the trading status applicable to the security and reason for the trading halt if any. The status messages can be accessed from any {source} depending on your subscription.

To enable market data on a production environment please reach out to our sales team.

Schema

AttributeTypeDescription
Tstringmessage type, always “s”
Sstringsymbol
scstringstatus code
smstringstatus message
rcstringreason code
rmstringreason message
tstringRFC-3339 formatted timestamp
zstringtape

Example

{
  "T": "s",
  "S": "AAPL",
  "sc": "H",
  "sm": "Trading Halt",
  "rc": "T12",
  "rm": "Trading Halted; For information requested by NASDAQ",
  "t": "2021-02-22T19:15:00Z",
  "z": "C"
}

Status Codes

Tape A & B (CTA)

CodeValue
2Trading Halt
3Resume
5Price Indication
6Trading Range Indication
7Market Imbalance Buy
8Market Imbalance Sell
9Market On Close Imbalance Buy
AMarket On Close Imbalance Sell
CNo Market Imbalance
DNo Market On Close Imbalance
EShort Sale Restriction
FLimit Up-Limit Down

Tape C & O (UTP)

CodesResume
HTrading Halt
QQuotation Resumption
TTrading Resumption
PVolatility Trading Pause

Readon Codes

Tape A & B (CTA)

CodeValue
DNews Released (formerly News Dissemination)
IOrder Imbalance
MLimit Up-Limit Down (LULD) Trading Pause
PNews Pending
XOperational
YSub-Penny Trading
1Market-Wide Circuit Breaker Level 1 – Breached
2Market-Wide Circuit Breaker Level 2 – Breached
3Market-Wide Circuit Breaker Level 3 – Breached

Tape C & O (UTP)

CodeValue
T1Halt News Pending
T2Halt News Dissemination
T5Single Stock Trading Pause In Affect
T6Regulatory Halt Extraordinary Market Activity
T8Halt ETF
T12Trading Halted; For information requested by NASDAQ
H4Halt Non Compliance
H9Halt Filings Not Current
H10Halt SEC Trading Suspension
H11Halt Regulatory Concern
01Operations Halt, Contact Market Operations
IPO1IPO Issue not yet Trading
M1Corporate Action
M2Quotation Not Available
LUDPVolatility Trading Pause
LUDSVolatility Trading Pause – Straddle Condition
MWC1Market Wide Circuit Breaker Halt – Level 1
MWC2Market Wide Circuit Breaker Halt – Level 2
MWC3Market Wide Circuit Breaker Halt – Level 3
MWC0Market Wide Circuit Breaker Halt – Carry over from previous day
T3News and Resumption Times
T7Single Stock Trading Pause/Quotation-Only Period
R4Qualifications Issues Reviewed/Resolved; Quotations/Trading to Resume
R9Filing Requirements Satisfied/Resolved; Quotations/Trading To Resume
C3Issuer News Not Forthcoming; Quotations/Trading To Resume
C4Qualifications Halt ended; maint. Req. met; Resume
C9Qualifications Halt Concluded; Filings Met; Quotes/Trades To Resume
C11Trade Halt Concluded By Other Regulatory Auth,; Quotes/Trades Resume
R1New Issue Available
RIssue Available
IPOQIPO security released for quotation
IPOEIPO security – positioning window extension
MWCQMarket Wide Circuit Breaker Resumption

Example

$ wscat -c wss://stream.data.alpaca.markets/v2/sip
connected (press CTRL+C to quit)
< [{"T":"success","msg":"connected"}]
> {"action": "auth", "key": "*****", "secret": "*****"}
< [{"T":"success","msg":"authenticated"}]
> {"action": "subscribe", "trades": ["AAPL"], "quotes": ["AMD", "CLDR"], "bars": ["*"],"dailyBars":["VOO"],"statuses":["*"]}
< [{"T":"subscription","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["*"],"updatedBars":[],"dailyBars":["VOO"],"statuses":["*"],"lulds":[],"corrections":["AAPL"],"cancelErrors":["AAPL"]}]
< [{"T":"q","S":"AMD","bx":"K","bp":91.95,"bs":2,"ax":"Q","ap":91.98,"as":1,"c":["R"],"z":"C","t":"2023-04-06T11:54:21.670905508Z"}]
< [{"T":"t","S":"AAPL","i":628,"x":"K","p":162.92,"s":3,"c":["@","F","T","I"],"z":"C","t":"2023-04-06T11:54:26.838232225Z"},{"T":"t","S":"AAPL","i":75,"x":"Z","p":162.92,"s":3,"c":["@","F","T","I"],"z":"C","t":"2023-04-06T11:54:26.838562809Z"},{"T":"t","S":"AAPL","i":1465,"x":"P","p":162.91,"s":71,"c":["@","F","T","I"],"z":"C","t":"2023-04-06T11:54:26.83915973Z"}]
< [{"T":"q","S":"AMD","bx":"P","bp":91.9,"bs":1,"ax":"Q","ap":91.98,"as":1,"c":["R"],"z":"C","t":"2023-04-06T11:54:27.924933876Z"}]