Skip to content
zerocopy.sh

Read

RPC, streaming, DAS and history.

Live streams that reach you in 100 microseconds, and every transaction since epoch 0. No dedicated nodes.

console.zerocopy.sh

Connected

region: frablock: 331,027,404filters: 3uptime: 99.9%

First byte to socket

100 µs

p50, rolling 24 h

p99 10 ms

0 drops

14:32:07.600swap · SOL to USDC100 µs
14:32:07.524transfer · USDC100 µs
14:32:07.448swap · BONK to SOL100 µs
14:32:07.372mint · compressed NFT300 µs
14:32:07.296swap · JUP to USDC100 µs
14:32:07.220transfer · SOL100 µs
14:32:07.144swap · RAY to USDC100 µs

* Sample stream, same wire format.

  • 14:32:07.000swapSOL to USDC90 µs
  • 14:32:07.041transferUSDC110 µs
  • 14:32:07.082swapBONK to SOL100 µs
  • 14:32:07.123mintcompressed NFT80 µs
  • 14:32:07.164swapJUP to USDC120 µs
  • 14:32:07.205transferSOL100 µs
  • 14:32:07.246swapRAY to USDC90 µs
  • 14:32:07.287stakedelegate110 µs
  • 14:32:07.328swapWIF to SOL100 µs
  • 14:32:07.369transferJitoSOL100 µs
  • 14:32:07.410burncompressed NFT80 µs
  • 14:32:07.451swapUSDT to USDC110 µs
100 µs
Median time to your socket
71
Methods on one endpoint
5
Regions
0
First epoch on record

RPC

Standard JSON-RPC

Standard JSON-RPC over HTTPS, answered from servers colocated next to the major slot leaders.

transport
HTTPS
methods
71
edge
next to the leaders

* One endpoint answers every method; no proprietary client.

quickstart.ts

TypeScript
import { ZeroCopy } from '@zerocopy/sdk'

const zc = new ZeroCopy('stream.zerocopy.sh')

for await (const tx of zc.stream({ mints: true })) {
  console.log(zc.age(tx)) // 100 µs
}

* Same client for streams, queries, and replays.

gRPC streaming

Live streams

Every transaction and account change on Solana, narrowed down to only the ones you asked for.

delivery
100 µs
measured with
GeyserBench
filters
our side

* Measured with GeyserBench against Helius and Triton: first in 99% of cases.

First in 99% of cases

Method: GeyserBench

zerocopy

p50 0.1 msp99 10 msFirst

Helius

p50 3.2 msp99 40.2 ms

Triton

p50 3.8 msp99 33.2 ms
01020304050 ms

p50p99

DAS API

Token and NFT lookups

Digital Asset Standard methods: asset lookups, collections, and transfers in single calls, compressed NFTs included.

methods
getAsset & more
covers
tokens and NFTs
indexing
our side

* Index kept on our side; nothing to run.

das.zerocopy.sh

getAsset
Mint
2xKD…9fAq
Collection
compressed: SMC2
Owner
5hJ3…q9Fz
Delegate
none
Supply
10,000
getAssetBatchsearchAssetsgetTransfers

* Sample response. Compressed NFTs included.

Historical data

Archive and replay

The full record since epoch 0. Query any epoch range, or replay it back through the same connection at any speed.

entries
every one
order
as written
backfill
a setting

* Live and historical share one client; a backfill is a setting.

history.zerocopy.sh

GET /v1/history
from: epoch 0to: epoch 1021speed: 4xorder: as written

Epoch 0

Epoch 1021

Covers
Epoch 0 to 1021
Query
Any epoch range
Replay
At any speed
Cost
One flat rate

* Every entry since epoch 0, streamed back in order.

Included

Everything, on every key.

Nothing on this page is gated behind a plan. Where the field gates it, the table says so.

What is included on every key, against Helius and Triton
ItemzerocopyHeliusTriton
gRPC on mainnetAny keyFrom the $499 planAny deposit
WebSocketAny key, same filtersEnhanced from $499Any deposit
Asset lookups, per 1M$35$50$50 plus bandwidth
Streaming, per TB$56$100$80
ReplayAny window since epoch 0The last 24 hoursAny epoch
Rate without a plan50 a second10 a second120 a second
Dedicated node neededNeverFor the fastest tierFor unmetered gRPC

* Helius and Triton figures are their published pay-as-you-go terms, read 2 September 2026.

The index

71 methods, one endpoint

Method reference.

RequestJSON-RPC over HTTPS
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getAccountInfo",
  "params": ["83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri", { "encoding": "base64", "commitment": "processed" }]
}
ResponsegetAccountInfo
{ "context": { "slot": 331027404 }, "value": { "lamports": 88849814690250, "owner": "11111111111111111111111111111111", "data": ["", "base64"], "executable": false, "rentEpoch": 1021, "space": 0 } }

* The standard Solana method set, answered from the colocation. Payload shapes, with values shortened. Commitment, encoding and filter options are the standard ones, and the same client reads the live tail and the full record.

Questions

Before you write in.

Do I need a dedicated node?
No. Everything on this page is a shared endpoint with flexible limits. Credit runs at 50 calls a second and 10 streams for nothing a month; a plan lifts that.
How is the latency measured?
From a transaction reaching the network to the last byte on your socket, measured with GeyserBench against Helius and Triton. The figure on this page is the median.
How far back does history go?
Epoch 0. Any window replays in order over the same stream you use live, at the same rate per terabyte, so a backfill is not a second integration.
gRPC or WebSocket?
Both, with the same filters. gRPC where you can run it, WebSocket where you cannot. Filters are free either way, so subscribe to what you need and no more.
What counts as a query?
One call is one query, whatever the method returns. Asset lookups are their own unit. Nothing is weighted, so the rate book is the bill.

Get a key.

One endpoint serves the live tail and the full record. Point a client at it and measure.