Polkadot Hub Data: Index DOT Transfers, Assets, and Swaps

Index Polkadot Hub extrinsics, DOT and asset transfers, and asset conversion swaps, delivered to your own database. Real-time and complete historical data, no node to run.


Polkadot Hub is Polkadot's system parachain and the entry point for users and application developers. The relay chain provides shared security, while the Hub carries the everyday logic: holding and sending DOT, issuing and moving fungible and non-fungible assets, staking, governance, and paying fees in assets other than DOT. Indexing Co's Polkadot feed follows Polkadot Hub, which is where balances, assets, and swaps actually happen. You can read how Polkadot frames it at polkadot.com and in the Polkadot Hub docs.

Polkadot Hub is a Substrate chain, so its native activity arrives as extrinsics, not EVM logs. Since January 2026 the Hub also runs Ethereum-compatible smart contracts, and calls to them arrive as extrinsics too. Each block is a header plus a list of extrinsics, and every extrinsic is a pallet call such as balances.transferKeepAlive, assets.transfer, or assetConversion.swapExactTokensForTokens, with a signer, a nonce, and positional arguments. Indexing Co covers Polkadot Hub in a single pipeline, lets you shape those extrinsics into rows, and delivers them to your own PostgreSQL, warehouse, or webhook. Real-time and full history, with no node to operate.

Source Polkadot Hub blocks
Ingest header + extrinsics
Decode pallet.call + args
Transform your JavaScript
Deliver your database

Why Polkadot Hub data is hard

The Activity Moved Off the Relay Chain Balances, assets, and swaps now live on Polkadot Hub, a parachain, rather than on the relay chain. The relay chain is there for security, so a pipeline pointed at it misses most of that activity. You need the Hub's blocks to see where DOT and assets actually move.
Extrinsics, Not Logs Activity arrives as pallet calls like balances.transferAllowDeath or assets.transfer, each with positional arguments whose meaning depends on the call. There are no ABIs or topics to lean on: every call you care about needs its own argument mapping.
XCM Locations as Asset IDs Asset conversion swaps describe assets as XCM locations, for example parents: 1, interior: Here for DOT or an X2 path of PalletInstance and GeneralIndex for a local asset. Turning those paths into clean asset columns is work a generic indexer will not do for you.
Inherents in Every Block Every block opens with system inherents such as parachainSystem.setValidationData and timestamp.set, and many blocks carry nothing else. Amounts and nonces arrive as comma-formatted planck strings. Filtering and normalizing that before it hits your tables is part of the job.

What Indexing Co delivers for Polkadot Hub

The DIY Path

Stand up and maintain the Substrate stack yourself.

  • Run a Polkadot Hub archive node or rent a Substrate RPC.
  • Decode extrinsics against the runtime metadata for each spec version.
  • Map positional args per pallet call and normalize XCM asset locations.
  • Build backfill, runtime-upgrade handling, and delivery from scratch.
Indexing Co

One pipeline sources, decodes, and delivers Polkadot Hub to your store.

  • Every extrinsic with its method, signer, nonce, hash, and decoded args.
  • Shaped by your JavaScript transform, filtered to the pallets you need.
  • Lands in your PostgreSQL, BigQuery, warehouse, or webhook.
  • Real-time delivery plus complete backfilled history. No node, no RPC babysitting.

What you can index

Polkadot Hub extrinsic data On Polkadot Hub, for example
DOT transfers balances.transferKeepAlive, balances.transferAllowDeath
Asset transfers assets.transfer for locally issued assets
Swaps assetConversion.swapExactTokensForTokens with XCM asset paths
Signers and nonces Per-account activity and transaction ordering
Block headers Block number, hash, parent hash, and timestamp.set time

A transform, not a subgraph

You write the transform in JavaScript, not AssemblyScript, and change it without re-indexing from block zero. Indexing Co runs your function over each block server-side: pick the extrinsics you care about and return rows for your destination.

// Indexing Co transform: Polkadot Hub balance, asset, and swap calls as rows
function transform(block) {
  const results = [];
  const hubPallets = ['balances', 'assets', 'assetConversion'];

  for (const ext of block.extrinsics || []) {
    const [pallet, call] = ext.method.split('.');
    if (!hubPallets.includes(pallet)) continue;
    results.push({
      chain: block._network,
      block: block.blockNumber,
      extrinsic_index: ext.index,
      extrinsic_hash: ext.hash,
      signer: ext.signer,
      nonce: ext.nonce.replace(/,/g, ''),
      pallet,
      call,
      args: ext.args,
    });
  }
  return results;
}

Polkadot Hub with Indexing Co

Run it yourself if

You want full control of Substrate infrastructure and have the team to operate a Polkadot Hub archive node, track runtime metadata across upgrades, and build backfill and delivery in-house.

Use Indexing Co if

You want Polkadot Hub transfers, asset movements, and swaps delivered to your own database as clean rows, with real-time plus complete history and no node to run.

Get a DemoOpen the Console

Related Reading

FAQ

Is this the Polkadot relay chain or Polkadot Hub?

Polkadot Hub. Indexing Co's Polkadot feed follows the Hub system parachain, where DOT balances, assets, and asset conversion swaps live. Blocks include the parachainSystem.setValidationData inherent that every parachain block carries.

What is in each Polkadot Hub block?

The block number, block hash, and header, plus an array of extrinsics. Each extrinsic carries its index, hash, signer, nonce, method in pallet.call form, and its decoded arguments.

Do I need to run a Polkadot node?

No. Indexing Co sources Polkadot Hub blocks for you, including full history, so you never operate an archive node or decode runtime metadata yourself.

Can I index only transfers, or only swaps?

Yes. Filter on the method string in your transform, for example keep only assetConversion calls, and return just the rows you want. Change the filter later without re-indexing from scratch.

Where does the Polkadot Hub data go?

Into your own destination: PostgreSQL, BigQuery, a warehouse, or a webhook. You define the output schema and own the storage.

Get Started

Index Polkadot Hub in minutes. Set up your first DOT transfer or asset pipeline without running a node.

Get a DemoOpen the Console