Markets Data

Learn how to discover available markets and access detailed market information in Aave.

Market Structure

Aave market data provides comprehensive information about lending pools across different chains, including:

  • Market identification (name, chain, address)

  • The reserves in the market

  • Efficiency mode (eMode) categories and configurations

  • Market metrics (total size, available liquidity)

When you provide a user account address, the data also includes user-specific information such as net worth, health factor, and current positions.

The following TypeScript interfaces illustrate the core Market type and its related types:

interface Market {  name: string;  chain: Chain;  address: EvmAddress;  icon: string;  totalMarketSize: BigDecimal;  totalAvailableLiquidity: BigDecimal;  eModeCategories: EmodeMarketCategory[];  userState?: MarketUserState;  borrowReserves: Reserve[];  supplyReserves: Reserve[];}

Reserve Structure

Each reserve within an Aave market provides comprehensive lending and borrowing data for a specific asset, including:

  • Token information (underlying, aToken, vToken addresses and metadata)

  • Supply information (APY, liquidity, caps, collateral configuration)

  • Borrow information (APY, available liquidity, utilization rates, caps)

  • Reserve incentives (Merit programs, Aave governance rewards)

  • Market mechanics (flash loans, permits, pause/freeze states)

  • Efficiency mode (eMode) configurations for the asset

  • Isolation mode settings (if applicable)

  • User-specific state (balances, borrowable amounts, collateral usage)

When you provide a user account address, the reserve data also includes user-specific information such as current balances, borrowing capacity, and collateral status.

The following TypeScript interfaces illustrate the core Reserve type and its related types:

interface Reserve {  market: MarketInfo;  underlyingToken: Currency;  aToken: Currency;  vToken: Currency;  acceptsNative?: NativeCurrency;  size: TokenAmount;  usdExchangeRate: BigDecimal;  usdOracleAddress: EvmAddress;  isFrozen: boolean;  isPaused: boolean;  flashLoanEnabled: boolean;  permitSupported: boolean;  supplyInfo: ReserveSupplyInfo;  borrowInfo?: ReserveBorrowInfo;  isolationModeConfig?: ReserveIsolationModeConfig;  eModeInfo: EmodeReserveInfo[];  incentives: ReserveIncentive[];  userState?: ReserveUserState;}

See the Incentive Programs page for more information on incentives.

Listing Available Markets

Discover all available Aave markets across supported blockchain networks.

Use the useAaveMarkets hook to fetch a list of Aave markets.

const { data, loading, error } = useAaveMarkets({  chainIds: ChainId[],  user: EvmAddress | undefined,  borrowsOrderBy: MarketReservesRequestOrderBy | undefined,  suppliesOrderBy: MarketReservesRequestOrderBy | undefined,});

Specify one or more chains to retrieve markets for.

Ethereum Markets
import { useAaveMarkets, chainId } from "@aave/react";
// …
const { data, loading, error } = useAaveMarkets({  chainIds: [chainId(1)],});
if (loading) {  return <p>Loading…</p>;}
if (error) {  return <p>{error.message}</p>;}
// data: Market[]

Use a user address to include account-level data for each market and reserve.

With User State
import { useAaveMarket, evmAddress, chainId } from "@aave/react";
const { data, loading, error } = useAaveMarket({  chainId: chainId(1),  user: evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234"),});

Single Market

Retrieve detailed information about a specific market including reserves and user state.

Use the useAaveMarket hook to fetch detailed information about a specific market.

const { data, loading, error } = useAaveMarket({  address: EvmAddress,  chainId: ChainId,  user: EvmAddress | undefined,  borrowsOrderBy: MarketReservesRequestOrderBy | undefined,  suppliesOrderBy: MarketReservesRequestOrderBy | undefined,});

Fetch a specific market by address and chain.

Ethereum Market
import { useAaveMarket, evmAddress, chainId } from "@aave/react";
// …
const { data, loading, error } = useAaveMarket({  address: evmAddress("0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2"),  chainId: chainId(1),});
if (loading) {  return <p>Loading market...</p>;}
if (error) {  return <p>Error: {error.message}</p>;}
if (!data) {  return <p>Market not found</p>;}
// data: Market

Use a user address to include account-level data for the market and its reserves.

With User State
import { useAaveMarket, evmAddress, chainId } from "@aave/react";
// …
const { data, loading, error } = useAaveMarket({  address: evmAddress("0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2"),  chainId: chainId(1),  user: evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234"),});

APY History

Retrieve historical APY data for reserves to analyze interest rate trends over time.

Use the useBorrowAPYHistory and useSupplyAPYHistory hooks to fetch historical APY data for specific reserves.

const { data, loading, error } = useBorrowAPYHistory({  chainId: ChainId,  underlyingToken: EvmAddress,  market: EvmAddress,  window: TimeWindow,});
const { data, loading, error } = useSupplyAPYHistory({  chainId: ChainId,  underlyingToken: EvmAddress,  market: EvmAddress,  window: TimeWindow,});

Fetch borrow/supply APY history for a specific reserve over the last week.

import {  useBorrowAPYHistory,  evmAddress,  chainId,  TimeWindow,} from "@aave/react";
// …
const { data, loading, error } = useBorrowAPYHistory({  chainId: chainId(1),  underlyingToken: evmAddress("0xa0b86a33e6441c8c5f0bb9b7e5e1f8bbf5b78b5c"), // USDC  market: evmAddress("0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2"),  window: TimeWindow.LastWeek,});
if (loading) {  return <p>Loading APY history...</p>;}
if (error) {  return <p>Error: {error.message}</p>;}
// data: APYSample[]

Available time windows include:

  • TimeWindow.LastDay

  • TimeWindow.LastWeek

  • TimeWindow.LastMonth

  • TimeWindow.LastSixMonths

  • TimeWindow.LastYear