Robinhood Calls & Traces API — WebSocket Streams
Stream every contract call and internal trace on Robinhood with Bitquery GraphQL — top-level calls and nested internal calls, with decoded input arguments, gas accounting, revert errors, and the surrounding transaction and receipt joined into one record. The EVM.Calls cube on network: robinhood replaces a tracing node: no debug_traceTransaction loops, no 4-byte databases, no trace decoding pipeline.
Open one WebSocket that carries every call on the chain, or narrowly filtered sockets — per contract, per function, per selector, deployments-only, reverts-only. Every subscription on this page was verified live over WebSocket, and every query was executed against the production endpoint before publishing.
To query or stream data outside the Bitquery IDE, you need an API access token.
Follow the steps here: How to generate Bitquery API token ➤
On this page: Why not a tracing node · Datasets & history · Call anatomy · Firehose · By contract · By function · Deployments · Reverts · Value traces · By wallet · Call tree · Analytics · FAQ
Why stream calls instead of tracing a node
Tracing node (debug_traceTransaction / trace_filter) | Bitquery Calls stream | |
|---|---|---|
| Infrastructure | Archive node with tracing enabled — heavy to run and sync | One WebSocket to streaming.bitquery.io |
| Decoding | Raw calldata; you maintain ABIs and 4-byte lookups | Arguments arrive decoded and typed for known signatures |
| Scope | Per-transaction or per-block tracing loops | Server-side filters: contract, function name, selector, caller, Create, Reverted, value, time |
| Context | Trace only — separate calls for tx and receipt | Transaction and Receipt joined onto every call |
| Deployments | Diff traces for CREATE frames yourself | Call: { Create: true } is a filter |
| Backfill | Re-trace history block by block | Same query with dataset: archive / combined |
Datasets and history
realtime(the default) — a rolling window of recent blocks whose depth varies; measure it with the probe below rather than assuming it.archive— deep call history, retained up to roughly the last 3 months (Robinhood is a newer chain, so today the archive holds its complete history; older data ages out as the cap applies); its head lags the chain by minutes.combined— archive + realtime union; the safe choice for fixed windows (24h, 7d).
For older or bulk history, Bitquery can provide data exports — contact support.
Check the calls window
{
EVM(network: robinhood) {
Calls {
count
earliest: Block { Time(minimum: Block_Time) }
latest: Block { Time(maximum: Block_Time) }
}
}
}
What one call row contains
| Group | What it gives you |
|---|---|
Call | From/To, Value (+USD), gas fields, Signature (function Name, full Signature, 4-byte SignatureHash), flags: Create, Delegated, Reverted, Success, SelfDestruct, Error, plus tree position (Index, CallerIndex, CallPath, InternalCalls) |
Arguments | Decoded, typed function input values (address, bigInteger, string, hex, bool, integer) with parameter names |
Transaction | Hash, From/To, value, full gas and fee fields (incl. USD) |
Receipt | GasUsed, CumulativeGasUsed, ContractAddress, receipt Type |
Block | Number, Time, Nonce |
Tree semantics: Index numbers each call within the transaction, CallerIndex points to the parent call's index, and CallPath is the position path from the top-level call (e.g. [2, 0] = first sub-call of call 2) — enough to rebuild the entire trace tree client-side.
For calls, Signature.SignatureHash is the 4-byte selector as uppercase hex without a 0x prefix (e.g. A9059CBB for transfer(address,uint256)). Calls with an empty Name are undecoded selectors — still streamed and filterable by hash. Note that on-chain balanceOf-style reads made by contracts also appear: this cube sees every call executed, not just state-changing ones.