> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sqd.dev/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Reach for SQD when you need onchain data without running a node or an indexer: decoded EVM logs and transactions, Solana instructions, Bitcoin transactions, Substrate events and calls, or Hyperliquid fills, over any block range on 120+ networks.
> To query directly, POST to https://portal.sqd.dev/datasets/{dataset}/stream. The full API is described at https://docs.sqd.dev/openapi.json, and responses to the stream endpoints are JSON Lines.
> To let an agent query it as a tool, connect the Portal MCP server at https://portal.sqd.dev/mcp.
> Every page on this site is available as Markdown by appending .md to its URL.

# Hyperliquid Data API: Fills and Trades

> Stream Hyperliquid HyperCore fills and HyperEVM data over HTTP, filtered per user or coin.

export function NetworksTable({networks, columns = {}, hideTestnetToggle = false}) {
  const {useState, useEffect} = React;
  const {showChainId = false, showTraces = false, showStateDiffs = false, showType = false, showCategory = false, showTier = true} = columns;
  const TIERS = ["Core", "Partner", "Frontier"];
  const [filter, setFilter] = useState("");
  const [copiedId, setCopiedId] = useState(null);
  const [sortColumn, setSortColumn] = useState("name");
  const [sortDirection, setSortDirection] = useState("asc");
  const [showTestnets, setShowTestnets] = useState(true);
  const [tierFilter, setTierFilter] = useState("all");
  useEffect(() => {
    const wanted = new URLSearchParams(window.location.search).get("tier");
    const match = TIERS.find(t => t.toLowerCase() === (wanted || "").toLowerCase());
    if (match) setTierFilter(match);
  }, []);
  const changeTierFilter = value => {
    setTierFilter(value);
    const url = new URL(window.location.href);
    if (value === "all") url.searchParams.delete("tier"); else url.searchParams.set("tier", value.toLowerCase());
    window.history.replaceState(null, "", url);
  };
  const filteredNetworks = networks.filter(network => {
    const networkType = network.type || (network.name.toLowerCase().includes("testnet") || network.name.toLowerCase().includes("devnet") ? "testnet" : "mainnet");
    if (!showTestnets && (networkType === "testnet" || networkType === "devnet")) {
      return false;
    }
    if (showTier && tierFilter !== "all" && network.tier !== tierFilter) {
      return false;
    }
    const filterLower = filter.toLowerCase();
    const nameMatch = network.name.toLowerCase().includes(filterLower);
    if (showChainId) {
      const chainIdMatch = network.chainId ? network.chainId.toString().includes(filterLower) : false;
      return nameMatch || chainIdMatch;
    }
    return nameMatch;
  });
  const hasStrictChainIdMatch = showChainId && filter.trim() !== "" && (/^\d+$/).test(filter.trim()) && filteredNetworks.some(network => network.chainId && network.chainId.toString() === filter.trim());
  const finalFilteredNetworks = hasStrictChainIdMatch ? filteredNetworks.filter(network => network.chainId && network.chainId.toString() === filter.trim()) : filteredNetworks;
  const handleSort = column => {
    if (sortColumn === column) {
      setSortDirection(sortDirection === "asc" ? "desc" : "asc");
    } else {
      setSortColumn(column);
      setSortDirection("asc");
    }
  };
  const sortedNetworks = [...finalFilteredNetworks].sort((a, b) => {
    let aVal, bVal;
    switch (sortColumn) {
      case "name":
        aVal = a.name.toLowerCase();
        bVal = b.name.toLowerCase();
        break;
      case "chainId":
        aVal = a.chainId ? parseInt(a.chainId) : 0;
        bVal = b.chainId ? parseInt(b.chainId) : 0;
        break;
      case "slug":
        aVal = a.slug.toLowerCase();
        bVal = b.slug.toLowerCase();
        break;
      case "portal":
        aVal = a.portal ? 1 : 0;
        bVal = b.portal ? 1 : 0;
        break;
      case "realtime":
        aVal = a.realtime ? 1 : 0;
        bVal = b.realtime ? 1 : 0;
        break;
      case "traces":
        aVal = a.traces ? 1 : 0;
        bVal = b.traces ? 1 : 0;
        break;
      case "stateDiffs":
        aVal = a.stateDiffs ? 1 : 0;
        bVal = b.stateDiffs ? 1 : 0;
        break;
      case "type":
        aVal = a.type || "";
        bVal = b.type || "";
        break;
      case "category":
        aVal = a.category || "";
        bVal = b.category || "";
        break;
      case "tier":
        aVal = TIERS.indexOf(a.tier) === -1 ? TIERS.length : TIERS.indexOf(a.tier);
        bVal = TIERS.indexOf(b.tier) === -1 ? TIERS.length : TIERS.indexOf(b.tier);
        break;
      default:
        return 0;
    }
    if (aVal < bVal) return sortDirection === "asc" ? -1 : 1;
    if (aVal > bVal) return sortDirection === "asc" ? 1 : -1;
    return 0;
  });
  const copyToClipboard = async (text, id) => {
    try {
      await navigator.clipboard.writeText(text);
      setCopiedId(id);
      setTimeout(() => setCopiedId(null), 2000);
    } catch (err) {
      console.error('Failed to copy:', err);
    }
  };
  const getPortalUrl = slug => `https://portal.sqd.dev/datasets/${slug}`;
  const getV2ArchiveUrl = slug => `v2.archive.subsquid.io/network/${slug}`;
  const colSpan = 4 + (showChainId ? 1 : 0) + (showTraces ? 1 : 0) + (showStateDiffs ? 1 : 0) + (showType ? 1 : 0) + (showCategory ? 1 : 0) + (showTier ? 1 : 0);
  return <div className="not-prose">
  <div className="sqd-nt-frame">
    <div className="sqd-nt-toolbar px-4 py-3 flex flex-wrap items-center gap-2">
        <input type="text" placeholder={showChainId ? "Filter by network name or chain ID..." : "Filter by network name..."} value={filter} onChange={e => setFilter(e.target.value)} className="sqd-nt-control sqd-nt-filter h-10 px-3" />
      {(!hideTestnetToggle || showTier) && <div className="sqd-nt-actions flex flex-wrap items-center gap-2">
        {!hideTestnetToggle && <button onClick={() => setShowTestnets(!showTestnets)} className={`sqd-nt-control inline-flex items-center h-10 gap-2 px-3 whitespace-nowrap ${showTestnets ? "" : "sqd-nt-toggle-off"}`} aria-pressed={showTestnets}>
            {showTestnets ? <svg className="w-4 h-4 sqd-nt-ok" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
              </svg> : <svg className="w-4 h-4 sqd-nt-dim" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
              </svg>}
            Show testnets
          </button>}
        {showTier && <select value={tierFilter} onChange={e => changeTierFilter(e.target.value)} className="sqd-nt-control sqd-nt-select h-10 pl-3 pr-8" aria-label="Filter by pricing tier">
            <option value="all">All tiers</option>
            {TIERS.map(t => <option key={t} value={t}>{t}</option>)}
          </select>}
      </div>}
    </div>
    <div className="sqd-nt-scroll">
      <table className="sqd-nt-table min-w-full border-collapse text-sm m-0">
        <thead>
          <tr>
            <th className="text-left py-3 pl-4 pr-3 cursor-pointer select-none" onClick={() => handleSort("name")}>
              <div className="flex items-center gap-1">
                Network
                {sortColumn === "name" && <span className="sqd-nt-dim">
                    {sortDirection === "asc" ? "↑" : "↓"}
                  </span>}
              </div>
            </th>
            {showChainId && <th className="text-left py-3 px-3 cursor-pointer select-none" style={{
    width: '100px',
    minWidth: '100px',
    maxWidth: '100px'
  }} onClick={() => handleSort("chainId")}>
                <div className="flex items-center gap-1">
                  Chain ID
                  {sortColumn === "chainId" && <span className="text-gray-500 dark:text-gray-400">
                      {sortDirection === "asc" ? "↑" : "↓"}
                    </span>}
                </div>
              </th>}
            {showType && <th className="text-left py-3 px-3 cursor-pointer select-none" style={{
    width: '90px',
    minWidth: '90px',
    maxWidth: '90px'
  }} onClick={() => handleSort("type")}>
                <div className="flex items-center gap-1">
                  Type
                  {sortColumn === "type" && <span className="text-gray-500 dark:text-gray-400">
                      {sortDirection === "asc" ? "↑" : "↓"}
                    </span>}
                </div>
              </th>}
            {showCategory && <th className="text-left py-3 px-3 cursor-pointer select-none" style={{
    width: '90px',
    minWidth: '90px',
    maxWidth: '90px'
  }} onClick={() => handleSort("category")}>
                <div className="flex items-center gap-1">
                  VM
                  {sortColumn === "category" && <span className="text-gray-500 dark:text-gray-400">
                      {sortDirection === "asc" ? "↑" : "↓"}
                    </span>}
                </div>
              </th>}
            {showTier && <th className="text-left py-3 px-3 cursor-pointer select-none" style={{
    width: '100px',
    minWidth: '100px',
    maxWidth: '100px'
  }} onClick={() => handleSort("tier")}>
                <div className="flex items-center gap-1">
                  <Tooltip tip="Pricing tier. Sets the price of adding this chain on the Growth plan.">
                    Tier
                  </Tooltip>
                  {sortColumn === "tier" && <span className="sqd-nt-dim">
                      {sortDirection === "asc" ? "↑" : "↓"}
                    </span>}
                </div>
              </th>}
            <th className="text-center py-3 px-2 cursor-pointer select-none" style={{
    width: '75px',
    minWidth: '75px',
    maxWidth: '75px'
  }} onClick={() => handleSort("portal")}>
              <div className="flex items-center justify-center gap-1">
                <Tooltip tip="Available on Portal infrastructure">
                  Portal
                </Tooltip>
                {sortColumn === "portal" && <span className="sqd-nt-dim">
                    {sortDirection === "asc" ? "↑" : "↓"}
                  </span>}
              </div>
            </th>
            <th className="text-center py-3 px-2 cursor-pointer select-none" style={{
    width: '75px',
    minWidth: '75px',
    maxWidth: '75px'
  }} onClick={() => handleSort("realtime")}>
              <div className="flex items-center justify-center gap-1 whitespace-nowrap">
                <Tooltip tip="Supports real-time streaming">Real-Time</Tooltip>
                {sortColumn === "realtime" && <span className="sqd-nt-dim">
                    {sortDirection === "asc" ? "↑" : "↓"}
                  </span>}
              </div>
            </th>
            {showTraces && <th className="text-center py-3 px-2 cursor-pointer select-none" style={{
    width: '75px',
    minWidth: '75px',
    maxWidth: '75px'
  }} onClick={() => handleSort("traces")}>
                <div className="flex items-center justify-center gap-1">
                  Traces
                  {sortColumn === "traces" && <span className="text-gray-500 dark:text-gray-400">
                      {sortDirection === "asc" ? "↑" : "↓"}
                    </span>}
                </div>
              </th>}
            {showStateDiffs && <th className="text-center py-3 px-2 cursor-pointer select-none" style={{
    width: '75px',
    minWidth: '75px',
    maxWidth: '75px'
  }} onClick={() => handleSort("stateDiffs")}>
                <div className="flex items-center justify-center gap-1 whitespace-nowrap">
                  State Diffs
                  {sortColumn === "stateDiffs" && <span className="text-gray-500 dark:text-gray-400">
                      {sortDirection === "asc" ? "↑" : "↓"}
                    </span>}
                </div>
              </th>}
            <th className="text-left py-3 px-3 cursor-pointer select-none" style={{
    width: '210px',
    minWidth: '210px'
  }} onClick={() => handleSort("slug")}>
              <div className="flex items-center gap-1">
                <Tooltip tip="Dataset identifier for use with Portal endpoints">
                  Slug
                </Tooltip>
                {sortColumn === "slug" && <span className="sqd-nt-dim">
                    {sortDirection === "asc" ? "↑" : "↓"}
                  </span>}
              </div>
            </th>
          </tr>
        </thead>
        <tbody>
          {sortedNetworks.length > 0 ? sortedNetworks.map((network, index) => {
    const portalId = `portal-${network.slug}`;
    const v2Id = `v2-${network.slug}`;
    return <tr key={index}>
                  <td className="network-name-cell sqd-nt-name py-3 pl-4 pr-3 text-left">
                    <span className="inline-flex items-center gap-2">
                      <span className={`sqd-nt-logo${network.logo ? "" : " sqd-nt-logo--mono"}${network.logoBg ? ` sqd-nt-logo--${network.logoBg}` : ""}`} aria-hidden="true">
                        {network.logo ? <img src={network.logo} alt="" width="20" height="20" loading="lazy" decoding="async" /> : network.name.charAt(0)}
                      </span>
                      {(() => {
      const name = network.details ? <a href={network.details} className="sqd-nt-name-link">
                            {network.name}
                          </a> : network.name;
      return network.tooltip ? <span className="inline">
                            <Tooltip tip={network.tooltip}>{name}</Tooltip>
                          </span> : name;
    })()}
                      {network.private && <span className="sqd-nt-badge">Private</span>}
                      {network.retiring && <Tooltip tip={"Retires " + network.retiring.at}>
                          <a href={network.retiring.href} className="sqd-nt-badge sqd-nt-badge--retiring">
                            Retiring {network.retiring.label}
                          </a>
                        </Tooltip>}
                    </span>
                  </td>
                  {showChainId && <td className="sqd-nt-cell py-3 px-3 text-left" style={{
      width: '90px',
      minWidth: '90px',
      maxWidth: '90px'
    }}>
                      {network.chainId || "-"}
                    </td>}
                  {showType && <td className="sqd-nt-cell py-3 px-3 text-left" style={{
      width: '90px',
      minWidth: '90px',
      maxWidth: '90px'
    }}>
                      <span className="sqd-nt-badge">
                        {network.type || "mainnet"}
                      </span>
                    </td>}
                  {showCategory && <td className="sqd-nt-cell py-3 px-3 text-left" style={{
      width: '90px',
      minWidth: '90px',
      maxWidth: '90px'
    }}>
                      <span className="sqd-nt-badge sqd-nt-badge--vm">
                        {network.category || "-"}
                      </span>
                    </td>}
                  {showTier && <td className="sqd-nt-cell py-3 px-3 text-left" style={{
      width: '100px',
      minWidth: '100px',
      maxWidth: '100px'
    }}>
                      {network.tier ? <a href="/en/portal/pricing#chain-tiers" className={`sqd-nt-badge sqd-nt-badge--tier sqd-nt-badge--${network.tier.toLowerCase()}`}>
                          {network.tier}
                        </a> : <span className="sqd-nt-no select-none text-base">–</span>}
                    </td>}
                  <td className="py-3 px-2 text-center" style={{
      width: '75px',
      minWidth: '75px',
      maxWidth: '75px'
    }}>
                    {network.portal ? <span className="sqd-nt-dot" /> : <span className="sqd-nt-no select-none text-base">–</span>}
                  </td>
                  <td className="py-3 px-2 text-center" style={{
      width: '75px',
      minWidth: '75px',
      maxWidth: '75px'
    }}>
                    {network.realtime ? <span className="sqd-nt-dot" /> : <span className="sqd-nt-no select-none text-base">–</span>}
                  </td>
                  {showTraces && <td className="py-3 px-2 text-center" style={{
      width: '75px',
      minWidth: '75px',
      maxWidth: '75px'
    }}>
                      {network.traces == null ? <Tooltip tip="Not applicable for this network type">
                          <span className="sqd-nt-no select-none text-base">–</span>
                        </Tooltip> : network.traces ? <span className="sqd-nt-dot" /> : <span className="sqd-nt-no select-none text-base">–</span>}
                    </td>}
                  {showStateDiffs && <td className="py-3 px-2 text-center" style={{
      width: '75px',
      minWidth: '75px',
      maxWidth: '75px'
    }}>
                      {network.stateDiffs == null ? <Tooltip tip="Not applicable for this network type">
                          <span className="sqd-nt-no select-none text-base">–</span>
                        </Tooltip> : network.stateDiffs ? <span className="sqd-nt-dot" /> : <span className="sqd-nt-no select-none text-base">–</span>}
                    </td>}
                  <td className="py-3 px-3 text-left">
                    <div className="flex items-center gap-2">
                      <code className="sqd-nt-chip">
                        {network.slug}
                      </code>
                      {network.portal && !network.private && <Tooltip tip={copiedId === portalId ? "Copied!" : "Copy Portal endpoint URL"}>
                          <button onClick={e => {
      e.stopPropagation();
      copyToClipboard(getPortalUrl(network.slug), portalId);
    }} className="sqd-nt-copy flex items-center justify-center" aria-label="Copy Portal URL">
                            <span className={copiedId === portalId ? "sqd-nt-ok" : ""}>
                              {copiedId === portalId ? <Icon icon="circle-check" iconType="solid" /> : <Icon icon="copy" iconType="regular" />}
                            </span>
                          </button>
                        </Tooltip>}
                    </div>
                  </td>
                </tr>;
  }) : <tr>
              <td colSpan={colSpan} className="sqd-nt-dim py-6 px-4 text-center">
                <div className="flex flex-col items-center gap-1.5">
                  <span className="text-lg">🔍</span>
                  <span>
                    {filter.trim() ? 'No networks found matching "' + filter + '"' : "No networks match these filters"}
                  </span>
                </div>
              </td>
            </tr>}
        </tbody>
      </table>
    </div>
  </div>
</div>;
}

export const evmNetworks = [{
  "name": "Abstract",
  "logo": "https://cdn.subsquid.io/img/networks/abstract.png",
  "type": "mainnet",
  "tooltip": "Abstract is shutting down. The Abstract dataset will be retired on October 20, 2026.",
  "chainId": "2741",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "abstract-mainnet",
  "details": "/en/data/evm/abstract-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/abstract-mainnet",
  "retiring": {
    "label": "Oct 20",
    "at": "October 20, 2026",
    "href": "/announcements/dataset-retirements-october-2026"
  }
}, {
  "name": "Abstract Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/abstract.png",
  "type": "testnet",
  "tooltip": "Abstract is shutting down. The Abstract Testnet dataset will be retired on October 20, 2026.",
  "chainId": "11124",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "abstract-testnet",
  "details": "/en/data/evm/abstract-testnet",
  "legacyUrl": "v2.archive.subsquid.io/network/abstract-testnet",
  "retiring": {
    "label": "Oct 20",
    "at": "October 20, 2026",
    "href": "/announcements/dataset-retirements-october-2026"
  }
}, {
  "slug": "adi-mainnet",
  "name": "ADI Chain",
  "logo": "https://cdn.subsquid.io/img/networks/adi.jpg",
  "type": "mainnet",
  "chainId": "36900",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Partner",
  "private": true,
  "details": "/en/data/evm/adi-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "slug": "adi-testnet",
  "name": "ADI Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/adi.jpg",
  "type": "testnet",
  "chainId": "",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Partner",
  "private": true,
  "details": "/en/data/evm/adi-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Agung Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/peaq.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "9990",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Partner",
  "slug": "agung-evm",
  "details": "/en/data/evm/agung-evm",
  "legacyUrl": "v2.archive.subsquid.io/network/agung-evm",
  "retiring": null
}, {
  "name": "Alpen Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/alpen.svg",
  "logoBg": "white",
  "type": "testnet",
  "tooltip": null,
  "chainId": "20310",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Partner",
  "slug": "alpen-testnet",
  "details": "/en/data/evm/alpen-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Arbitrum Nova",
  "logo": "https://cdn.subsquid.io/img/networks/arbitrum-nova.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "42170",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "arbitrum-nova",
  "details": "/en/data/evm/arbitrum-nova",
  "legacyUrl": "v2.archive.subsquid.io/network/arbitrum-nova",
  "retiring": null
}, {
  "name": "Arbitrum One",
  "logo": "https://cdn.subsquid.io/img/networks/arbitrum.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "42161",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "arbitrum-one",
  "details": "/en/data/evm/arbitrum-one",
  "legacyUrl": "v2.archive.subsquid.io/network/arbitrum-one",
  "retiring": null
}, {
  "name": "Arbitrum Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/arbitrum.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "421614",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "arbitrum-sepolia",
  "details": "/en/data/evm/arbitrum-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/arbitrum-sepolia",
  "retiring": null
}, {
  "slug": "arc-mainnet",
  "name": "Arc",
  "logo": "https://cdn.subsquid.io/img/networks/arc.png",
  "type": "mainnet",
  "chainId": "5042",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/arc-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Astar",
  "logo": "https://cdn.subsquid.io/img/networks/astar.svg",
  "type": "mainnet",
  "tooltip": "Only for EVM data. For Substrate and ink! data use the corresponding Substrate gateway.",
  "chainId": "592",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "astar-mainnet",
  "details": "/en/data/evm/astar-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Astar zkEVM",
  "logo": "https://cdn.subsquid.io/img/networks/astar.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "3776",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "astar-zkevm-mainnet",
  "details": "/en/data/evm/astar-zkevm-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Astar zKyoto",
  "logo": "https://cdn.subsquid.io/img/networks/astar.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "6038361",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "astar-zkyoto",
  "details": "/en/data/evm/astar-zkyoto",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Avalanche",
  "logo": "https://cdn.subsquid.io/img/networks/avax.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "43114",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "avalanche-mainnet",
  "details": "/en/data/evm/avalanche-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/avalanche-mainnet",
  "retiring": null
}, {
  "name": "Avalanche Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/avax.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "43113",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "avalanche-testnet",
  "details": "/en/data/evm/avalanche-testnet",
  "legacyUrl": "v2.archive.subsquid.io/network/avalanche-testnet",
  "retiring": null
}, {
  "name": "B3",
  "logo": "https://cdn.subsquid.io/img/networks/b3.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "8333",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "b3-mainnet",
  "details": "/en/data/evm/b3-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/b3-mainnet",
  "retiring": null
}, {
  "name": "B3 Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/b3.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "1993",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "b3-sepolia",
  "details": "/en/data/evm/b3-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/b3-sepolia",
  "retiring": null
}, {
  "name": "Base",
  "logo": "https://cdn.subsquid.io/img/networks/base.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "8453",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "base-mainnet",
  "details": "/en/data/evm/base-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/base-mainnet",
  "retiring": null
}, {
  "name": "Base Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/baseTestnet.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "84532",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "base-sepolia",
  "details": "/en/data/evm/base-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/base-sepolia",
  "retiring": null
}, {
  "name": "Beam",
  "logo": "https://cdn.subsquid.io/img/networks/beam.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "4337",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "beam-mainnet",
  "details": "/en/data/evm/beam-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/beam-mainnet",
  "retiring": null
}, {
  "name": "Berachain",
  "logo": "https://cdn.subsquid.io/img/networks/berachain.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "80094",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "berachain-mainnet",
  "details": "/en/data/evm/berachain-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Bittensor",
  "logo": "https://cdn.subsquid.io/img/networks/bittensor.svg",
  "logoBg": "white",
  "type": "mainnet",
  "tooltip": "First available block for Bittensor Mainnet is 4,400,000.",
  "chainId": "964",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "bittensor-mainnet-evm",
  "details": "/en/data/evm/bittensor-mainnet-evm",
  "legacyUrl": "v2.archive.subsquid.io/network/bittensor-mainnet-evm",
  "retiring": null
}, {
  "name": "Bittensor Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/bittensor.svg",
  "logoBg": "white",
  "type": "testnet",
  "tooltip": "First available block for Bittensor Testnet is 3,300,000.",
  "chainId": "945",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "bittensor-testnet-evm",
  "details": "/en/data/evm/bittensor-testnet-evm",
  "legacyUrl": "v2.archive.subsquid.io/network/bittensor-testnet-evm",
  "retiring": null
}, {
  "name": "Blast",
  "logo": "https://cdn.subsquid.io/img/networks/blast.png",
  "type": "mainnet",
  "tooltip": "Blast is shutting down. The Blast dataset will be retired on October 20, 2026.",
  "chainId": "81457",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "blast-l2-mainnet",
  "details": "/en/data/evm/blast-l2-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/blast-l2-mainnet",
  "retiring": {
    "label": "Oct 20",
    "at": "October 20, 2026",
    "href": "/announcements/dataset-retirements-october-2026"
  }
}, {
  "name": "BNB Smart Chain",
  "logo": "https://cdn.subsquid.io/img/networks/binance.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "56",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "binance-mainnet",
  "details": "/en/data/evm/binance-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/binance-mainnet",
  "retiring": null
}, {
  "name": "BNB Smart Chain Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/binance.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "97",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "binance-testnet",
  "details": "/en/data/evm/binance-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "BOB",
  "logo": "https://cdn.subsquid.io/img/networks/bob.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "60808",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "bob-mainnet",
  "details": "/en/data/evm/bob-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/bob-mainnet",
  "retiring": null
}, {
  "name": "BOB Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/bob.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "808813",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "bob-sepolia",
  "details": "/en/data/evm/bob-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/bob-sepolia",
  "retiring": null
}, {
  "name": "Celo",
  "logo": "https://cdn.subsquid.io/img/networks/celo.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "42220",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "celo-mainnet",
  "details": "/en/data/evm/celo-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Core Blockchain",
  "logo": "https://cdn.subsquid.io/img/networks/core.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "1116",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "core-mainnet",
  "details": "/en/data/evm/core-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/core-mainnet",
  "retiring": null
}, {
  "slug": "cronos-mainnet",
  "name": "Cronos",
  "logo": "https://cdn.subsquid.io/img/networks/cronos.svg",
  "logoBg": "white",
  "type": "mainnet",
  "chainId": "25",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/cronos-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Ethereum",
  "logo": "https://cdn.subsquid.io/img/networks/ethereum.svg",
  "type": "mainnet",
  "tooltip": "The Portal also serves ethereum-mainnet-tb, an Ethereum Mainnet dataset built from the Parity-style trace_block RPC method instead of Geth's debug_traceBlockByNumber. Its top-level traces report execution gas only, without intrinsic gas and refunds, and it has no state diffs. Use ethereum-mainnet unless your pipeline expects trace_block output.",
  "chainId": "1",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "ethereum-mainnet",
  "details": "/en/data/evm/ethereum-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/ethereum-mainnet",
  "retiring": null
}, {
  "name": "Ethereum Hoodi",
  "logo": "https://cdn.subsquid.io/img/networks/ethereum.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "560048",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "ethereum-hoodi",
  "details": "/en/data/evm/ethereum-hoodi",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Ethereum Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/ethereum.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "11155111",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "ethereum-sepolia",
  "details": "/en/data/evm/ethereum-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/ethereum-sepolia",
  "retiring": null
}, {
  "name": "Etherlink",
  "logo": "https://cdn.subsquid.io/img/networks/etherlink.png",
  "logoBg": "dark",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "42793",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Partner",
  "slug": "etherlink-mainnet",
  "details": "/en/data/evm/etherlink-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Etherlink Shadownet",
  "logo": "https://cdn.subsquid.io/img/networks/etherlink.png",
  "logoBg": "dark",
  "type": "testnet",
  "tooltip": null,
  "chainId": "127823",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Partner",
  "slug": "etherlink-shadownet",
  "details": "/en/data/evm/etherlink-shadownet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Flare",
  "logo": "https://cdn.subsquid.io/img/networks/flare.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "14",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "flare-mainnet",
  "details": "/en/data/evm/flare-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/flare-mainnet",
  "retiring": null
}, {
  "name": "Gnosis",
  "logo": "https://cdn.subsquid.io/img/networks/gnosis.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "100",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "gnosis-mainnet",
  "details": "/en/data/evm/gnosis-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/gnosis-mainnet",
  "retiring": null
}, {
  "name": "Gravity Alpha",
  "logo": "https://cdn.subsquid.io/img/networks/gravity.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "1625",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "galxe-gravity",
  "details": "/en/data/evm/galxe-gravity",
  "legacyUrl": "v2.archive.subsquid.io/network/galxe-gravity",
  "retiring": null
}, {
  "name": "HashKey Chain",
  "logo": "https://cdn.subsquid.io/img/networks/hashkey.jpg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "177",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "hashkey-mainnet",
  "details": "/en/data/evm/hashkey-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Hedera",
  "logo": "https://cdn.subsquid.io/img/networks/hedera.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "295",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Partner",
  "slug": "hedera-mainnet",
  "details": "/en/data/evm/hedera-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Hemi",
  "logo": "https://cdn.subsquid.io/img/networks/hemi.jpg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "43111",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Partner",
  "slug": "hemi-mainnet",
  "details": "/en/data/evm/hemi-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Hemi Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/hemi.jpg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "743111",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Partner",
  "slug": "hemi-testnet",
  "details": "/en/data/evm/hemi-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "HyperEVM",
  "logo": "https://cdn.subsquid.io/img/networks/hyperliquid.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "999",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "hyperliquid-mainnet",
  "details": "/en/data/evm/hyperevm-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "HyperEVM Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/hyperliquid.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "998",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "hyperliquid-testnet",
  "details": "/en/data/evm/hyperevm-testnet",
  "legacyUrl": "v2.archive.subsquid.io/network/hyperliquid-testnet",
  "retiring": null
}, {
  "name": "Ink",
  "logo": "https://cdn.subsquid.io/img/networks/ink.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "57073",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "ink-mainnet",
  "details": "/en/data/evm/ink-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/ink-mainnet",
  "retiring": null
}, {
  "name": "Ink Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/ink.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "763373",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "ink-sepolia",
  "details": "/en/data/evm/ink-sepolia",
  "legacyUrl": null,
  "retiring": null
}, {
  "slug": "katana-mainnet",
  "name": "Katana",
  "logo": "https://cdn.subsquid.io/img/networks/katana.png",
  "type": "mainnet",
  "chainId": "747474",
  "tooltip": "Katana offers historical and real-time data through the public Portal API.",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "details": "/en/data/evm/katana-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Linea",
  "logo": "https://cdn.subsquid.io/img/networks/linea.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "59144",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "linea-mainnet",
  "details": "/en/data/evm/linea-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "LUKSO",
  "logo": "https://cdn.subsquid.io/img/networks/lukso.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "42",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "lukso-mainnet",
  "details": "/en/data/evm/lukso-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/lukso-mainnet",
  "retiring": null
}, {
  "name": "Manta Pacific",
  "logo": "https://cdn.subsquid.io/img/networks/manta.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "169",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "manta-pacific",
  "details": "/en/data/evm/manta-pacific",
  "legacyUrl": "v2.archive.subsquid.io/network/manta-pacific",
  "retiring": null
}, {
  "name": "Manta Pacific Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/manta.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "3441006",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "manta-pacific-sepolia",
  "details": "/en/data/evm/manta-pacific-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/manta-pacific-sepolia",
  "retiring": null
}, {
  "name": "Mantle",
  "logo": "https://cdn.subsquid.io/img/networks/mantle.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "5000",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "mantle-mainnet",
  "details": "/en/data/evm/mantle-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/mantle-mainnet",
  "retiring": null
}, {
  "name": "Mantle Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/mantle.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "5003",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "mantle-sepolia",
  "details": "/en/data/evm/mantle-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/mantle-sepolia",
  "retiring": null
}, {
  "name": "MegaETH",
  "logo": "https://cdn.subsquid.io/img/networks/mega.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "4326",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "megaeth-mainnet",
  "details": "/en/data/evm/megaeth-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/megaeth-mainnet",
  "retiring": null
}, {
  "name": "MegaETH Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/mega.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "6343",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "megaeth-testnet",
  "details": "/en/data/evm/megaeth-testnet",
  "legacyUrl": "v2.archive.subsquid.io/network/megaeth-testnet",
  "retiring": null
}, {
  "name": "Metis Andromeda",
  "logo": "https://cdn.subsquid.io/img/networks/metis.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "1088",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "metis-mainnet",
  "details": "/en/data/evm/metis-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/metis-mainnet",
  "retiring": null
}, {
  "name": "Mode",
  "logo": "https://cdn.subsquid.io/img/networks/mode.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "34443",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "mode-mainnet",
  "details": "/en/data/evm/mode-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/mode-mainnet",
  "retiring": null
}, {
  "name": "Monad",
  "logo": "https://cdn.subsquid.io/img/networks/monad.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "143",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "monad-mainnet",
  "details": "/en/data/evm/monad-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/monad-mainnet",
  "retiring": null
}, {
  "name": "Monad Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/monad.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "10143",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "monad-testnet",
  "details": "/en/data/evm/monad-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "opBNB",
  "logo": "https://cdn.subsquid.io/img/networks/opbnb.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "204",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "opbnb-mainnet",
  "details": "/en/data/evm/opbnb-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/opbnb-mainnet",
  "retiring": null
}, {
  "name": "opBNB Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/opbnb.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "5611",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "opbnb-testnet",
  "details": "/en/data/evm/opbnb-testnet",
  "legacyUrl": "v2.archive.subsquid.io/network/opbnb-testnet",
  "retiring": null
}, {
  "name": "Optimism",
  "logo": "https://cdn.subsquid.io/img/networks/optimism.svg",
  "type": "mainnet",
  "tooltip": "Traces and state diffs available from block 105235063 (Bedrock upgrade). Blocks 0 to 105235062 are not covered.",
  "chainId": "10",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Core",
  "slug": "optimism-mainnet",
  "details": "/en/data/evm/optimism-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/optimism-mainnet",
  "retiring": null
}, {
  "name": "Optimism Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/optimism.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "11155420",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "optimism-sepolia",
  "details": "/en/data/evm/optimism-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/optimism-sepolia",
  "retiring": null
}, {
  "name": "Peaq",
  "logo": "https://cdn.subsquid.io/img/networks/peaq.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "3338",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Partner",
  "slug": "peaq-mainnet",
  "details": "/en/data/evm/peaq-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/peaq-mainnet",
  "retiring": null
}, {
  "name": "Plasma",
  "logo": "https://cdn.subsquid.io/img/networks/plasma.svg",
  "logoBg": "white",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "9745",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "plasma-mainnet",
  "details": "/en/data/evm/plasma-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Plasma Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/plasma.svg",
  "logoBg": "white",
  "type": "testnet",
  "tooltip": null,
  "chainId": "9746",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "plasma-testnet",
  "details": "/en/data/evm/plasma-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Plume",
  "logo": "https://cdn.subsquid.io/img/networks/plume.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "98866",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "plume-mainnet",
  "details": "/en/data/evm/plume-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Polygon",
  "logo": "https://cdn.subsquid.io/img/networks/polygon.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "137",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "polygon-mainnet",
  "details": "/en/data/evm/polygon-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/polygon-mainnet",
  "retiring": null
}, {
  "name": "Polygon Amoy Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/polygon.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "80002",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Core",
  "slug": "polygon-amoy-testnet",
  "details": "/en/data/evm/polygon-amoy-testnet",
  "legacyUrl": "v2.archive.subsquid.io/network/polygon-amoy-testnet",
  "retiring": null
}, {
  "name": "Prom",
  "logo": "https://cdn.subsquid.io/img/networks/prom.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "227",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Partner",
  "slug": "prom-mainnet",
  "details": "/en/data/evm/prom-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/prom-mainnet",
  "retiring": null
}, {
  "slug": "robinhood-mainnet",
  "name": "Robinhood Chain",
  "logo": "https://cdn.subsquid.io/img/networks/robinhood.png",
  "type": "mainnet",
  "chainId": "4663",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/robinhood-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "slug": "robinhood-testnet",
  "name": "Robinhood Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/robinhood.png",
  "type": "testnet",
  "chainId": "46630",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": true,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/robinhood-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Scroll",
  "logo": "https://cdn.subsquid.io/img/networks/scroll.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "534352",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "scroll-mainnet",
  "details": "/en/data/evm/scroll-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Scroll Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/scroll.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "534351",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "scroll-sepolia",
  "details": "/en/data/evm/scroll-sepolia",
  "legacyUrl": null,
  "retiring": null
}, {
  "slug": "sei-mainnet",
  "name": "Sei",
  "logo": "https://cdn.subsquid.io/img/networks/sei.png",
  "type": "mainnet",
  "chainId": "1329",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/sei-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Soneium",
  "logo": "https://cdn.subsquid.io/img/networks/soneium.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "1868",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "soneium-mainnet",
  "details": "/en/data/evm/soneium-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/soneium-mainnet",
  "retiring": null
}, {
  "name": "Soneium Minato Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/soneium.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "1946",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "soneium-minato-testnet",
  "details": "/en/data/evm/soneium-minato-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Sonic",
  "logo": "https://cdn.subsquid.io/img/networks/sonic.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "146",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "sonic-mainnet",
  "details": "/en/data/evm/sonic-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/sonic-mainnet",
  "retiring": null
}, {
  "name": "Sonic Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/sonic.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "14601",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "sonic-testnet",
  "details": "/en/data/evm/sonic-testnet",
  "legacyUrl": "v2.archive.subsquid.io/network/sonic-testnet",
  "retiring": null
}, {
  "slug": "stable-mainnet",
  "name": "Stable",
  "logo": "https://cdn.subsquid.io/img/networks/stable.png",
  "type": "mainnet",
  "chainId": "988",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/stable-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "slug": "stable-testnet",
  "name": "Stable Testnet",
  "logo": "https://cdn.subsquid.io/img/networks/stable.png",
  "type": "testnet",
  "chainId": "2201",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/stable-testnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "TAC",
  "logo": "https://cdn.subsquid.io/img/networks/tac.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "239",
  "portal": true,
  "realtime": true,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "tac-mainnet",
  "details": "/en/data/evm/tac-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "slug": "tempo-mainnet",
  "name": "Tempo",
  "logo": "https://cdn.subsquid.io/img/networks/tempo.png",
  "type": "mainnet",
  "chainId": "4217",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/tempo-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Unichain",
  "logo": "https://cdn.subsquid.io/img/networks/unichain.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "130",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "unichain-mainnet",
  "details": "/en/data/evm/unichain-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Unichain Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/unichain.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "1301",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "unichain-sepolia",
  "details": "/en/data/evm/unichain-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/unichain-sepolia",
  "retiring": null
}, {
  "slug": "worldchain-mainnet",
  "name": "Worldchain",
  "logo": "https://cdn.subsquid.io/img/networks/world.png",
  "logoBg": "white",
  "type": "mainnet",
  "chainId": "480",
  "tooltip": "Private network. Contact SQD for access.",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "private": true,
  "details": "/en/data/evm/worldchain-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "X Layer",
  "logo": "https://cdn.subsquid.io/img/networks/xlayer.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "196",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "xlayer-mainnet",
  "details": "/en/data/evm/xlayer-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/xlayer-mainnet",
  "retiring": null
}, {
  "name": "zkLink Nova",
  "logo": "https://cdn.subsquid.io/img/networks/zklink-nova.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "810180",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "zklink-nova-mainnet",
  "details": "/en/data/evm/zklink-nova-mainnet",
  "legacyUrl": "v2.archive.subsquid.io/network/zklink-nova-mainnet",
  "retiring": null
}, {
  "name": "zkSync",
  "logo": "https://cdn.subsquid.io/img/networks/zksync-era.svg",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "324",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "zksync-mainnet",
  "details": "/en/data/evm/zksync-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "zkSync Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/zksync-era.svg",
  "type": "testnet",
  "tooltip": null,
  "chainId": "300",
  "portal": true,
  "realtime": false,
  "traces": true,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "zksync-sepolia",
  "details": "/en/data/evm/zksync-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/zksync-sepolia",
  "retiring": null
}, {
  "name": "Zora",
  "logo": "https://cdn.subsquid.io/img/networks/zora.png",
  "type": "mainnet",
  "tooltip": null,
  "chainId": "7777777",
  "portal": true,
  "realtime": true,
  "traces": true,
  "stateDiffs": true,
  "tier": "Frontier",
  "slug": "zora-mainnet",
  "details": "/en/data/evm/zora-mainnet",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Zora Sepolia",
  "logo": "https://cdn.subsquid.io/img/networks/zora-sepolia-testnet.png",
  "type": "testnet",
  "tooltip": null,
  "chainId": "999999999",
  "portal": true,
  "realtime": false,
  "traces": false,
  "stateDiffs": false,
  "tier": "Frontier",
  "slug": "zora-sepolia",
  "details": "/en/data/evm/zora-sepolia",
  "legacyUrl": "v2.archive.subsquid.io/network/zora-sepolia",
  "retiring": null
}];

export const hyperliquidNetworks = [{
  "name": "Hyperliquid",
  "logo": "https://cdn.subsquid.io/img/networks/hyperliquid.svg",
  "type": "mainnet",
  "tooltip": "HyperCore Fills: trade execution data from Hyperliquid's perpetual futures exchange. Includes position changes (closing-trade PnL), builder routing, and per-user activity.",
  "portal": true,
  "realtime": true,
  "tier": "Frontier",
  "slug": "hyperliquid-fills",
  "details": "/en/data/hyperliquid/hyperliquid-fills",
  "legacyUrl": null,
  "retiring": null
}, {
  "name": "Hyperliquid Replica Commands",
  "logo": "https://cdn.subsquid.io/img/networks/hyperliquid.svg",
  "type": "mainnet",
  "tooltip": "HyperCore replica command stream — used for advanced infrastructure monitoring and replay.",
  "portal": true,
  "realtime": false,
  "tier": "Frontier",
  "slug": "hyperliquid-replica-cmds",
  "details": "/en/data/hyperliquid/hyperliquid-replica-cmds",
  "legacyUrl": null,
  "retiring": null
}];

Portal is an HTTP API for Hyperliquid data. It streams every HyperCore perpetual futures fill, with trader address, asset, price, size, side, direction, signed fee and realized PnL on closing trades, and it streams HyperEVM blocks, transactions, logs and traces, over the same request format and with arbitrary block ranges in a single request.

Portal serves historical and real-time trade data. It is not a trading API: you cannot place or cancel orders through it, it does not expose the live order book, and it is not an RPC endpoint for HyperEVM. Use it to read what has already executed.

## Supported Networks

<Tip>
  Want the full list of every dataset we support? See [All Networks](/en/data/all-networks).
</Tip>

{(() => {
const { useState } = React;
return (
<NetworksTable
networks={[
  ...hyperliquidNetworks,
  ...evmNetworks.filter(
    (n) => n.slug === "hyperliquid-mainnet" || n.slug === "hyperliquid-testnet"
  ),
]}
columns={{ showType: true }}
hideTestnetToggle={true}
/>
); })()}

## HyperCore and HyperEVM

Hyperliquid has two halves, and they are separate datasets with separate query types.

**HyperCore** is the order book exchange. Fills come from the `hyperliquid-fills` dataset, queried with `"type": "hyperliquidFills"`, documented at [Hyperliquid fills](/en/data/hyperliquid/hyperliquid-fills). The raw command stream is `hyperliquid-replica-cmds`, queried with `"type": "hyperliquidReplicaCmds"`, documented at [Hyperliquid replica commands](/en/data/hyperliquid/hyperliquid-replica-cmds).

**HyperEVM** is the EVM chain. It uses the standard `"type": "evm"` query format. Mainnet is chain ID `999` and carries traces and state diffs, documented at [HyperEVM](/en/data/evm/hyperevm-mainnet). Testnet is chain ID `998`, documented at [HyperEVM Testnet](/en/data/evm/hyperevm-testnet).

<Warning>
  **The page paths and the dataset IDs deliberately differ.** The HyperEVM docs live under `hyperevm-mainnet` and `hyperevm-testnet`, but the IDs you put in the request URL are `hyperliquid-mainnet` and `hyperliquid-testnet`. The endpoint always takes the dataset ID:

  ```
  https://portal.sqd.dev/datasets/hyperliquid-fills
  https://portal.sqd.dev/datasets/hyperliquid-replica-cmds
  https://portal.sqd.dev/datasets/hyperliquid-mainnet
  https://portal.sqd.dev/datasets/hyperliquid-testnet
  ```
</Warning>

## Querying fills

Fill requests take exact-match list filters on `user`, `coin`, `dir`, `cloid`, `feeToken` and `builder`. Values inside one filter are ORed, and different filters in one request are ANDed. To select every fill in the range, pass one empty filter object: `"fills": [{}]`. An empty `"fills": []` array matches nothing and returns blocks only.

Fields are opt-in: a field appears in the response only if you list it under `fields.fill`. The available fill fields are `fillIndex`, `user`, `coin`, `px`, `sz`, `side`, `time`, `startPosition`, `dir`, `closedPnl`, `hash`, `oid`, `crossed`, `fee`, `builderFee`, `tid`, `cloid`, `feeToken`, `builder` and `twapId`.

The `hyperliquid-fills` dataset starts at block 750,000,000. Requests with a `fromBlock` below that are rejected with HTTP 400 rather than returning an empty stream.

For a runnable request and the full block and fill schema, see [Hyperliquid fills](/en/data/hyperliquid/hyperliquid-fills). For field semantics, including how `tid` pairs the maker and taker sides of one execution and how to net `closedPnl` against signed `fee` and `builderFee`, see the [HyperCore Fills reference](/en/portal/hyperliquid/networks/hypercore-fills).

## Indexing HyperEVM

HyperEVM is queried like any other EVM network, so the [EVM quickstart](/en/sdk/pipes-sdk/evm/quickstart) applies unchanged once you point it at `hyperliquid-mainnet`. For HyperCore fills, the Pipes SDK has a dedicated source: see the [Hyperliquid quickstart](/en/sdk/pipes-sdk/hyperliquid/quickstart) and the [fills query builder](/en/sdk/pipes-sdk/hyperliquid/reference/basic-components/query-builder).

If you are moving an existing HyperEVM indexer off `https://v2.archive.subsquid.io/network/hyperliquid-mainnet`, the replacement is `https://portal.sqd.dev/datasets/hyperliquid-mainnet`. See [Portal migration](/en/portal/migration).

## Next Steps

<CardGroup cols={3}>
  <Card title="Interactive Examples" icon="play" href="/en/portal/hyperliquid/examples/track-trader-fills">
    Try live queries with our interactive examples
  </Card>

  <Card title="API Reference" icon="book" href="/en/portal/hyperliquid/networks/hypercore-fills">
    Complete API reference with all fields and filters
  </Card>

  <Card title="OpenAPI Schema" icon="file-code" href="https://docs.sqd.dev/en/api/catalog/hyperliquid/openapi-fills.yaml">
    Download the full OpenAPI specification
  </Card>
</CardGroup>

<Info>
  **Enterprise Custom Development**

  For enterprise clients requiring custom indexer development, please contact our team to discuss your specific requirements. [Schedule a Consultation →](https://calendly.com/t-tyrie-subsquid/30min)
</Info>

Questions about the datasets? Ask in the [SquidDevs Telegram chat](https://t.me/HydraDevs).


## Related topics

- [Hyperliquid](/en/data/hyperliquid/hyperliquid-fills.md)
- [Track Trader Fills](/en/portal/hyperliquid/examples/track-trader-fills.md)
- [Handling Hyperliquid fills](/en/sdk/pipes-sdk/hyperliquid/guides/basic-development/handling-fills.md)
- [Hyperliquid fills quickstart](/en/sdk/pipes-sdk/hyperliquid/quickstart.md)
- [Analyze Closing Trades](/en/portal/hyperliquid/examples/analyze-closing-trades.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.