Skip to main content

chain_subscribeNewHeads

Description#

Subscribes to notifications for every new block imported by the node. Each update includes the block header so you can monitor chain progress, trigger indexers, or feed analytics pipelines.

Parameters#

This subscription does not take parameters.

Returns#

Each notification contains:

FieldTypeDescription
parentHashstringHash of the parent block
numberstringBlock number encoded as hex
stateRootstringState trie root
extrinsicsRootstringExtrinsics root
digestobjectDigest logs

Subscription Example#

{
"jsonrpc": "2.0",
"method": "chain_subscribeNewHeads",
"params": [],
"id": 1
}

Sample Notification#

{
"jsonrpc": "2.0",
"method": "chain_subscribeNewHeads",
"params": {
"result": {
"parentHash": "0x2b35e249b7bb267e2a6a786f346ff9a383f6fec2bf2f606045c2cfa5d338e9e8",
"number": "0x9055ee",
"stateRoot": "0x8440501a34445deca91eb0f3a2a5fb9c66b2d1b62060fb9127c31435ac0066a8",
"extrinsicsRoot": "0xfe5036ad098f495de005059f695ca574814695efdbc6b7649b1bade7a4e88f68",
"digest": {
"logs": [
"0x0661757261208a2c7a1100000000",
"0x0452505352903006d1651014effe612aeb9e2bed207fca849e69a1d4594bdab580afc68677458a62ad06"
]
}
},
"subscription": 1
}
}

JavaScript Usage#

import { ApiPromise, WsProvider } from '@polkadot/api';

const provider = new WsProvider('wss://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY');
const api = await ApiPromise.create({ provider });

const unsub = await api.rpc.chain.subscribeNewHeads((header) => {
console.log(`New block #${header.number.toString()} (${header.hash.toHex()})`);
});

// Later, to stop listening
// await unsub();

Tips#

  • Pair with state_getStorage for incremental indexing (fetch storage deltas per block).
  • Use chain_subscribeFinalizedHeads when you only care about finalized blocks.