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;}

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

Reserve Incentives

Aave reserves may offer additional incentives beyond base lending rates. These incentives come from two main sources:

Merit Programs

Third-party programs that provide extra APR rewards for specific lending activities. These require separate claiming through external platforms.

Aave Governance Rewards

Incentives set by Aave governance through the RewardsController, typically distributed in AAVE tokens or other approved reward tokens.

Incentive Types

  • Supply Incentives: Extra APR for supplying assets to reserves

  • Borrow Incentives: APR discounts for borrowing from reserves

  • Conditional Incentives: Bonus rewards requiring specific supply + borrow combinations

Each reserve's incentives array contains all active incentive programs. The incentive data includes:

  • APR bonuses/discounts with formatted percentages

  • Reward token information (for Aave governance incentives)

  • Claim links (for Merit programs)

  • Conditional requirements (for complex incentives)

Note: Merit programs are third-party initiatives. Aave Labs does not guarantee these programs and accepts no liability for third-party rewards.

Example Usage

Use incentive data to:

  • Calculate total effective APR (base + incentive rates)

  • Display available reward programs to users

  • Direct users to appropriate claiming mechanisms

  • Show conditional incentive requirements