Skip to content

Get Data

Before Starting

In this tutorial, you might see different ways to fetch data for Morpho Vaults:

  • API: Using the Morpho public API (see endpoint below). This is the easiest and most direct way for most applications. Note that only a subset of chains are supported.
  • Typescript: Using Typescript snippet. For Developers expecting to perform offchain computation.
  • Smart Contract: Fetching data directly onchain. This is best for real-time or trustless data.
  • SDK: [Examples Incoming] Using the Morpho SDKs for pre-built abstractions and faster development.

For each topic below, you'll find short guides for each method (where possible). This avoids redundancy and helps you choose the best approach for your use case.

Discovery and Listing

Vaults List

Morpho Vaults V2

API
query {
  vaultV2s(first: 1000, where: { chainId_in: [1, 8453] }) {
    items {
      address
      symbol
      name
      whitelisted
      asset {
        id
        address
        decimals
      }
      chain {
        id
        network
      }
    }
  }
}

Morpho Vaults V1

API
query {
  vaults(first: 1000, where: { chainId_in: [1, 8453] }) {
    items {
      address
      symbol
      name
      whitelisted
      asset {
        id
        address
        decimals
      }
      chain {
        id
        network
      }
    }
  }
}

Vault Metrics

Total Deposits & Assets

Morpho Vaults V2

Unique Vault
query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    address
     totalAssets
      totalAssetsUsd
      totalSupply
      liquidity
      liquidityUsd
      idleAssetsUsd
  }
}

On Morpho Vaults V1

Unique Vault
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      totalAssets
      totalAssetsUsd
      totalSupply
      liquidity
    }
  }
}

APY (Native + Rewards)

Morpho Vaults V2

Unique Vault
query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    address
    asset {
      yield {
        apr
      }
    }
    avgApy
    avgNetApy
    performanceFee
    managementFee
    maxRate
    rewards {
      asset {
        address
        chain {
          id
        }
      }
      supplyApr
      yearlySupplyTokens
    }
  }
}

Morpho Vaults V1

Unique Vault
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    asset {
      yield {
        apr
      }
    }
    state {
      apy
      netApy
      netApyWithoutRewards
      avgApy
      avgNetApy
      dailyApy
      dailyNetApy
      weeklyApy
      weeklyNetApy
      monthlyApy
      monthlyNetApy
      rewards {
        asset {
          address
          chain {
            id
          }
        }
        supplyApr
        yearlySupplyTokens
      }
      allocation {
        supplyAssets
        supplyAssetsUsd
        market {
          uniqueKey
          state {
            rewards {
              asset {
                address
                chain {
                  id
                }
              }
              supplyApr
              borrowApr
            }
          }
        }
      }
    }
  }
}

Share Price (Token Value)

Morpho Vaults V2

Unique Vault
query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    totalAssets
    totalSupply
  }
}

Morpho Vaults V1

Unique Vault
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      sharePrice
      sharePriceUsd
    }
  }
}

Allocation & Strategy

Current Allocations

Morpho Vaults V2

Unique Vault
query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    totalAssetsUsd
    totalAssets
    totalSupply
    adapters {
      items {
        address
        assets
        assetsUsd
        type
      }
    }
  }
}

Morpho Vaults V1

Unique Vault
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      allocation {
        market {
          uniqueKey
          loanAsset {
            name
          }
          collateralAsset {
            name
          }
          oracleAddress
          irmAddress
          lltv
        }
        supplyCap
        supplyAssets
        supplyAssetsUsd
      }
    }
  }
}

Vault Queues

Unique Vault
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      totalAssets
      lastTotalAssets
      allocation {
        supplyQueueIndex
        withdrawQueueIndex
        market {
          uniqueKey
        }
      }
    }
  }
}

Configuration & Governance

Vault Parameters

Morpho Vaults V2

Unique Vault
query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    address
    name
    whitelisted
    metadata {
      description
      forumLink
      image
    }
    allocators {
      allocator {
        address
      }
    }
    owner {
      address
    }
    curators {
      items {
        addresses {
          address
        }
      }
    }
    sentinels {
      sentinel {
        address
      }
    }
    timelocks {
      duration
      selector
      functionName
    }
  }
}

Morpho Vaults V1

Unique Vault
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    name
    whitelisted
    metadata {
      description
      forumLink
      image
    }
    allocators {
      address
    }
    state {
      owner
      curator
      guardian
      timelock
    }
  }
}

Risk Indicators

Morpho Vault Warnings

API
query {
  vaultV2s(first: 5) {
    items {
      name
      warnings {
        type
        level
      }
    }
  }
}

Position Tracking

User All Vaults Position

Morpho Vaults V2 & V1

query GetUserVaultPositions($address: String!, $chainId: Int!) {
  userByAddress(address: $address, chainId: $chainId) {
    id
    vaultV2Positions {
      state {
        shares
      }
      vault {
        address
        symbol
      }
    }
    vaultPositions {
      state {
        shares
      }
      vault {
        address
        symbol
      }
    }
  }
}

Vault Depositors

Morpho Vaults V2

Unique Vault
query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    positions(first: 10, skip:0) {
      items {
        user {
          address
        }
        assets
        assetsUsd
        shares
      }
    }
    totalSupply
    asset {
      address
      symbol
    }
  }
}

Morpho Vaults V1

Unique Vault
query {
  vaultPositions(
    first: 10
    orderBy: Shares
    orderDirection: Desc
    where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
  ) {
    items {
      user {
        address
      }
      state {
        shares
        assets
        assetsUsd
      }
    }
  }
}

Transaction History

Morpho Vaults V2

Unique Vault
query {
  vaultV2transactions(
    first: 10
    skip: 0
    where: { vaultAddress_in: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145" }
  ) {
    items {
      vault {
        address
      }
      type
      shares
      blockNumber
      timestamp
      txHash
      txIndex
    }
  }
}

Morpho Vaults V1

Unique Vault
query {
  transactions(
    first: 10
    orderBy: Timestamp
    orderDirection: Desc
    where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
  ) {
    items {
      blockNumber
      hash
      type
      user {
        address
      }
    }
  }
}

Historical Data

APY Historical State

Morpho Vaults v2

Coming soon.

Morpho Vaults V1

Unique Vault
query VaultApys($options: TimeseriesOptions) {
  vaultByAddress(address: "0x73e65DBD630f90604062f6E02fAb9138e713edD9") {
    address
    historicalState {
      apy(options: $options) {
        x
        y
      }
      netApy(options: $options) {
        x
        y
      }
    }
  }
}

With those variables:

{
  "options": {
    "startTimestamp": 1740000000,
    "endTimestamp": 1742564817,
    "interval": "DAY"
  }
}