Every stream. Every method. Every field.
The complete inventory of what the feeds carry: proto methods, compatibility, field-by-field specs, filters, snapshot semantics, sample messages, and honest volume notes. If a field is not listed here, we do not stream it.
grpc.robinhoodrpc.io:443gRPC / TLS · x-api-key · reflection- robinhoodrpc.*QuickNode-compatible
- robinhoodrpc_l1_gateway.v2Dwellir-compatible
- robinhoodrpc_swaps.v1native schema
- robinhoodrpc_btc_price.v1native schema
Consolidated tape
RobinhoodRPC nativerhrpc.v1.Tape/StreamTapeOne ordered stream of every trade on Robinhood Chain — Uniswap, Rialto, Lighter, Arcus, Morpho liquidations and RFQ fills — normalized into a single record type. Each print carries price in both token and underlying-share terms, the multiplier that converts between them, the market session, and the premium against the underlying snapshotted at execution.
- token_symbols
- venues
- kinds (spot, perp, liquidation, mint, redeem, RFQ)
- min_size_usd
- block range (backfill then live)
Backfill and live through one stream: supply a from_block and omit to_block to replay history then tail indefinitely. Resumable by cursor — reconnect with the last cursor and delivery continues without a gap. At-least-once with an explicit dedup key.
{ "tape_sequence": "88214417", "token_symbol": "AAPL", "venue": "VENUE_UNISWAP", "kind": "TRADE_KIND_SPOT_SWAP", "side": "SIDE_BUY", "price": "231.4400", "price_per_share": "231.4400", "multiplier": "1.000000", "size_tokens": "18.25", "size_usd": "4223.78", "session": "SESSION_REGULAR", "underlying_market_open": true, "premium_bps_at_print": "14.2", "block_number": 4512889, "confirmation_state": "CONFIRMATION_STATE_INCLUDED"}Volume: Volume scales with chain activity; the chain produces a block roughly every 100 ms.
Consolidated quote
RobinhoodRPC nativerhrpc.v1.Tape/StreamQuotesWhen liquidity is split across an AMM, a propAMM and two perp venues, no single venue's quote is meaningful on its own. This stream publishes the best bid and offer across all of them, which venue holds each side, and aggregate size within 10, 50 and 100 basis points of the consolidated mid.
- token_symbols
- min_move_bps
Emitted on change. Supply min_move_bps to receive an update only when the consolidated mid moves by at least that much.
{ "token_symbol": "NVDA", "best_bid": "182.9100", "best_bid_venue": "VENUE_RIALTO", "best_ask": "183.0400", "best_ask_venue": "VENUE_UNISWAP", "mid": "182.9750", "spread_bps": "7.1", "depth_10bps": "412885.00", "session": "SESSION_REGULAR", "underlying_market_open": true}Volume: One message per consolidated quote change, per instrument.
Price reconciliation
RobinhoodRPC nativerhrpc.v1.EquitiesStream/StreamPricesFour prices exist for every stock token and they disagree by construction: Robinhood's raw underlying REST price, Chainlink's multiplier-adjusted oracle, Chainlink Data Streams, and observed DEX spot. This stream carries all four with their observation times and staleness, plus the premium between the onchain price and the underlying — the number no other provider on this chain publishes.
- token_symbols
- min_premium_change_bps
Sources have different cadences — a 15-second REST cache, an oracle heartbeat, sub-second Data Streams, and per-block DEX observation. Each input is stamped with its own observation time and staleness rather than being treated as simultaneous.
{ "token_symbol": "TSLA", "session": "SESSION_OVERNIGHT", "underlying_market_open": false, "underlying_mid": "402.1800", "oracle_price": "402.6100", "oracle_staleness_ms": 42180, "dex_mid": "405.9200", "multiplier": "1.000000", "premium_bps": "92.9", "flags": ["DIVERGENCE_FLAG_SESSION_CLOSED"]}Volume: Emitted on change, per instrument.
Corporate actions
RobinhoodRPC nativerhrpc.v1.EquitiesStream/StreamCorporateActionsMerges Robinhood's corporate-actions endpoint, the pending-multiplier fields on /assets, and onchain UIMultiplierUpdated events into one ordered lifecycle per action. All 13 action types are typed, and the pause window that precedes a large multiplier change is emitted ahead of effect rather than discovered afterwards.
- token_symbols
- stages
- replay_in_progress
Set replay_in_progress to receive actions already in flight on connect, so a new subscriber is never blind to a pause window that has already been scheduled.
{ "action_id": "0x9f2c…", "token_symbol": "NVDA", "type": "CORPORATE_ACTION_TYPE_FORWARD_SPLIT", "stage": "LIFECYCLE_STAGE_PAUSE_SCHEDULED", "effective_at": "2026-09-14T20:00:00Z", "seconds_until_effective": 14400, "old_multiplier": "1.004200", "new_multiplier": "4.016800", "details": { "forward_split": { "underlying_symbol": "NVDA", "old_rate": "1", "new_rate": "4" } }}Volume: Low volume, high value. Most instruments see a handful of events per quarter.
Transactions
RobinhoodRPC nativerhrpc.v1.ChainStream/StreamTransactionsTyped transactions with Arbitrum Nitro fields that generic EVM providers drop: type codes 100–106, requestId on parent-to-child transactions, and address aliasing exposed as both from and unaliasedFrom. Set include_unconfirmed to receive records at SEQUENCED, before block inclusion.
- from
- to
- block range
- include_unconfirmed
Every SEQUENCED record reaches a terminal state — INCLUDED, DROPPED or REORGED. A pre-confirmation is never left unresolved.
{ "hash": "0x7a1e…", "block_number": 4512889, "from": "0x2f9b…", "to": "0xc41d…", "tx_type": "ARBITRUM_TX_TYPE_DYNAMIC_FEE", "from_is_aliased": false, "confirmation_state": "CONFIRMATION_STATE_SEQUENCED"}Volume: Scales with chain activity.
Logs
Standard EVMrhrpc.v1.ChainStream/StreamLogsStandard EVM log filtering by address and topic, evaluated server-side before bytes leave us. Logs from contracts with a known ABI arrive decoded into typed events alongside the raw data.
- addresses
- topics (positional, any-of)
- block range
- include_unconfirmed
Compatible with the standard eth_subscribe logs shape, so existing tooling works unmodified. Reorgs are additionally emitted as explicit REORGED records rather than only setting removed.
{ "address": "0xc41d…", "topics": ["0xddf252ad…", "0x0000…2f9b", "0x0000…88a1"], "block_number": 4512889, "decoded": { "name": "Transfer", "signature": "Transfer(address,address,uint256)", "params": [ { "name": "from", "type": "address", "value": "0x2f9b…", "indexed": true }, { "name": "to", "type": "address", "value": "0x88a1…", "indexed": true }, { "name": "value", "type": "uint256", "value": "18250000000000000000" } ] }}Volume: Depends entirely on your filter breadth.
Blocks
Standard EVMrhrpc.v1.ChainStream/StreamBlocksBlock headers carrying l1BlockNumber, sendCount and sendRoot alongside the standard fields. On Nitro, extraData equals sendRoot and mixHash encodes sendCount and l1BlockNumber — surfacing them properly avoids a class of misinterpretation.
- block range
- include_unconfirmed
Backfill and live through one stream. Resumable by cursor.
{ "number": 4512889, "hash": "0x41bb…", "timestamp": "2026-08-27T14:22:09.118Z", "l1_block_number": 21884412, "send_count": "88214", "send_root": "0x9ac2…", "confirmation_state": "CONFIRMATION_STATE_INCLUDED"}Volume: Roughly ten per second at a 100 ms block time.
Candles
RobinhoodRPC nativerhrpc.v1.Tape/StreamCandlesCandles built from the consolidated tape rather than a single venue. Any candle spanning a market-session boundary is flagged, and candles containing a corporate action are restated onto the post-action multiplier with the responsible action id attached.
- token_symbols
- interval
- block range
- exclude_session_crossing
Aggregation happens within a session, not across it. VWAP computed across a session boundary is not a meaningful number and we do not produce one silently.
{ "token_symbol": "AAPL", "interval": "INTERVAL_1M", "open_time": "2026-08-27T14:22:00Z", "open": "231.1900", "high": "231.6200", "low": "231.0400", "close": "231.4400", "volume_usd": "884120.55", "vwap": "231.3812", "session": "SESSION_REGULAR", "crosses_session_boundary": false, "corporate_action_adjusted": false}Volume: One message per interval per instrument.
Balances
RobinhoodRPC nativerhrpc.v1.Portfolio/StreamBalancesBalance updates for watched accounts, always carrying both the raw ERC-20 amount and the underlying-share equivalent, plus the multiplier used and its effective block. A consumer can always check the arithmetic.
- account
- token_symbols
- as_of
Historical requests require an as_of block or timestamp. There is no code path that quietly applies today's multiplier to a past balance.
{ "account": "0x2f9b…", "token_symbol": "NVDA", "balance_raw": "12500000000000000000", "balance_ui": "50.2100", "multiplier_applied": "4.016800", "multiplier_effective_block": 4310000, "as_of_block": 4512889, "value_usd": "9186.42"}Volume: One message per balance change on a watched account.
Cross-cutting features
These apply to every surface above. They are properties of the platform, not of individual streams.
Backfill and live, one interface
Supply a from_block and omit to_block to replay history then tail indefinitely. No second pipeline, no schema fork between historical and real-time.
Resumable by cursor
Reconnect with the last cursor you received and delivery continues without a gap. A dropped connection never creates an undetectable hole.
Server-side filtering
Addresses, topics, venues, instruments, sizes and change thresholds are evaluated before bytes leave us.
At-least-once with dedup keys
Every record carries an explicit dedup key and a monotonic sequence, so consumers dedupe deterministically instead of guessing.
Reorgs as events
A reorg is emitted as an explicit REORGED record with compensating writes on the same dedup key — not silently corrected upstream where your audit log cannot see it.
Provenance on every field
Source, block, observation time and the code version that produced the record, so a disagreement with another vendor is diagnosable.
Found the fields you need?
Every stream on this page is on both plans. Subscribe in under a minute.