Skip to main content
The Multichain service aggregates hashes and entities from multiple chains behind one endpoint.
  • single search across chains
  • token discovery without chain selection
  • unified UX for hashes
HandleWhat it gives youWhy it is useful
GET https://api.blockscout.com/multichain/api/v1/clusters/multichain/chainsList of chains supported by Multichain serviceRequired to know which chains are indexed in multichain
GET https://api.blockscout.com/multichain/api/v1/clusters/multichain/search:quick?q={query}&apikey=YOUR_KEYMultichain search results for addresses, blocks, transactions, tokens, NFTs, domains, and dappsOne search box across all supported chains

Examples

Use for:
  • token discovery across all supported chains
  • resolving multiple deployments (e.g. USDC on Ethereum, Arbitrum, Base)
  • showing correct contract per chain
curl "https://api.blockscout.com/multichain/api/v1/clusters/multichain/search:quick?q=usdc&apikey=YOUR_KEY"

Multichain address / tx lookup

Use for:
  • detecting which chain an address or transaction belongs to
  • building a universal search bar
  • avoiding chain selection UX
Example (address):
curl "https://api.blockscout.com/multichain/api/v1/clusters/multichain/search:quick?q=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&apikey=YOUR_KEY"
Example (transaction):
curl "https://api.blockscout.com/multichain/api/v1/clusters/multichain/search:quick?q=0x4b03d69654a965de6a2fe907856a0e39a51a8ae25d9ddb8d97aa16ba5c1835e1&apikey=YOUR_KEY"

Minimal flow

  1. fetch supported chains
curl "https://api.blockscout.com/multichain/api/v1/clusters/multichain/chains?apikey=YOUR_KEY"
  1. user inputs query
  2. call search:quick
  3. render results grouped by type + chain

TypeScript example

const API_KEY = process.env.BLOCKSCOUT_API_KEY ?? "YOUR_KEY";
const QUERY = process.argv[2] ?? "usdc";

const base = "https://api.blockscout.com/multichain/api/v1/clusters/multichain";

async function getJson(url: string) {
  const res = await fetch(url);
  return res.json();
}

async function main() {
  const chains = await getJson(`${base}/chains?apikey=${API_KEY}`);
  console.log("Supported chains:", Object.keys(chains).length);

  const searchUrl =
    `${base}/search:quick?q=${encodeURIComponent(QUERY)}&apikey=${API_KEY}`;

  const data = await getJson(searchUrl);

  console.log(`\nQuery: ${QUERY}\n`);

  for (const token of data.tokens ?? []) {
    const chains = Object.keys(token.chain_infos ?? {});
    console.log(`${token.symbol} | ${token.address_hash}`);
    console.log(`chains: ${chains.join(", ")}`);
  }

  console.log("\nAddresses:", (data.addresses ?? []).length);
  console.log("Transactions:", (data.transactions ?? []).length);
}

main();

Supported chains

Fetch dynamically:
GET https://api.blockscout.com/multichain/api/v1/clusters/multichain/chains