⚠️Blast API (blastapi.io) ends Oct 31. Migrate to Dwellir and skip Alchemy's expensive compute units.
Switch Today →
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.