curl --request GET \
  --url https://api.sim.dune.com/v1/evm/supported-chains \
  --header 'X-Sim-Api-Key: YOUR_API_KEY'
{
  "chains": [
    {
      "name": "ethereum",
      "chain_id": 1,
      "tags": ["default", "mainnet"],
      "balances": {"supported": true},
      "transactions": {"supported": true},
      "activity": {"supported": true},
      "token_info": {"supported": true},
      "token_holders": {"supported": true},
      "collectibles": {"supported": true}
    },
    {
      "name": "polygon",
      "chain_id": 137,
      "tags": ["default", "mainnet"],
      "balances": {"supported": true},
      "transactions": {"supported": true},
      "activity": {"supported": true},
      "token_info": {"supported": true},
      "token_holders": {"supported": true},
      "collectibles": {"supported": true}
    }
  ]
}
Chains
The Supported Chains endpoint provides realtime information about which blockchains are supported by Sim’s EVM API endpoints. Chain support varies by API endpoint. Use the dropdown below to check which chains are available for each API:

Using the API Endpoint

You can programmatically retrieve the list of supported chains to adapt to newly supported networks. The response includes an array of supported chains. Each item in the array includes the chain’s name, chain_id, an array of tags, and support for each endpoint. Each endpoint (balances, transactions, activity, etc.) has a supported boolean value
curl --request GET \
  --url https://api.sim.dune.com/v1/evm/supported-chains \
  --header 'X-Sim-Api-Key: YOUR_API_KEY'
{
  "chains": [
    {
      "name": "ethereum",
      "chain_id": 1,
      "tags": ["default", "mainnet"],
      "balances": {"supported": true},
      "transactions": {"supported": true},
      "activity": {"supported": true},
      "token_info": {"supported": true},
      "token_holders": {"supported": true},
      "collectibles": {"supported": true}
    },
    {
      "name": "polygon",
      "chain_id": 137,
      "tags": ["default", "mainnet"],
      "balances": {"supported": true},
      "transactions": {"supported": true},
      "activity": {"supported": true},
      "token_info": {"supported": true},
      "token_holders": {"supported": true},
      "collectibles": {"supported": true}
    }
  ]
}

Tags

The tags property groups chains by category, such as mainnet, testnet, or default. You can use these tags to filter or select chains in API requests. Any endpoint that supports the chain_ids query parameter accepts a tag in place of explicit IDs, letting you fetch data for an entire group of chains in a single request. When using chain_ids, you can request chains in several ways:
  • By tags: ?chain_ids=mainnet returns all chains tagged with mainnet. Using ?chain_ids=mainnet,testnet returns all chains that are tagged with mainnet or testnet.
  • Specific chain IDs: ?chain_ids=1,137,42161 (Ethereum, Polygon, Arbitrum)
  • Default behavior: Omitting chain_ids returns only chains tagged default.
Some supported chains have no tag assigned. A chain may be untagged due to higher latency, restrictive rate limits, RPC cost, or a temporary incident. Untagged chains stay out of default requests to keep them fast, but you can still query them with chain_ids by passing the chain name (e.g. ?chain_ids=corn,funkichain). Open the accordion above and scan the table to see which chains carry tags and which are untagged.

Examples

Here are two practical examples of how you might use this endpoint:

1. Building a Dynamic Chain Selector

This example shows how to fetch supported chains and create a user-friendly dropdown menu that filters chains based on their capabilities. It can be useful for wallet UIs or dApp chain selection.
// Fetch supported chains and build a dropdown for users
async function buildChainSelector() {
  const response = await fetch('https://api.sim.dune.com/v1/evm/supported-chains', {
    headers: { 'X-Sim-Api-Key': 'YOUR_API_KEY' }
  });
  
  const data = await response.json();
  
  // Filter chains that support balances
  const supportedChains = data.chains.filter(chain => chain.balances.supported);
  
  // Build dropdown options
  const chainOptions = supportedChains.map(chain => ({
    value: chain.chain_id,
    label: `${chain.name} (${chain.chain_id})`,
    isMainnet: chain.tags.includes('mainnet')
  }));
  
  return chainOptions;
}

2. Validating Chain Support

This example demonstrates how to validate whether a specific chain supports a particular endpoint before making API calls. This helps prevent errors and improves user experience by showing appropriate messages.
async function validateChainSupport(chainId, endpointName) {
  // Check if a chain supports a specific endpoint before making requests
  try {
    const response = await fetch('https://api.sim.dune.com/v1/evm/supported-chains', {
      headers: { 'X-Sim-Api-Key': 'YOUR_API_KEY' }
    });
    
    const data = await response.json();
    
    // Find the chain
    const chain = data.chains.find(c => c.chain_id === chainId);
    
    if (!chain) {
      return { supported: false, message: `Chain ${chainId} not found` };
    }
    
    // Check if the endpoint is supported
    if (!chain[endpointName] || !chain[endpointName].supported) {
      return { 
        supported: false, 
        message: `Endpoint '${endpointName}' not supported on ${chain.name}` 
      };
    }
    
    return { 
      supported: true, 
      message: `Chain ${chain.name} supports ${endpointName}` 
    };
    
  } catch (error) {
    return { supported: false, message: `Error validating chain: ${error.message}` };
  }
}

// Usage
const result = await validateChainSupport(1, 'balances');
console.log(result.message); // "Chain ethereum supports balances"