Python SDK for DefiLlama API
Project description
DefiLlama Python SDK
Official Python SDK for the DefiLlama API. Access DeFi protocol data including TVL, prices, yields, volumes, fees, bridges, and more.
Installation
pip install defillama-sdk
uv pip install defillama-sdk
Quick Start
from defillama_sdk import DefiLlama
# Free tier
client = DefiLlama()
# Pro tier (required for premium endpoints)
pro_client = DefiLlama({"api_key": "your-api-key"})
# Get all protocols
protocols = client.tvl.getProtocols()
# Get current token prices
prices = client.prices.getCurrentPrices(
[
"ethereum:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"coingecko:bitcoin",
]
)
Configuration
config = {
"api_key": "your-api-key",
"timeout": 30000,
}
client = DefiLlama(config)
Modules
- TVL
- Prices
- Stablecoins
- Yields (Pro)
- Volumes
- Fees
- Emissions (Pro)
- Bridges (Pro)
- Ecosystem (Pro)
- ETFs (Pro)
- DAT (Pro)
- Account (Pro)
๐ = Requires Pro API key
TVL
Total Value Locked data for protocols and chains.
getProtocols
Get all protocols with current TVL.
protocols = client.tvl.getProtocols()
getProtocol
Get detailed protocol information including historical TVL.
aave = client.tvl.getProtocol("aave")
getTvl
Get only current TVL for a protocol.
tvl = client.tvl.getTvl("uniswap")
getChains
Get current TVL for all chains.
chains = client.tvl.getChains()
getHistoricalChainTvl
Get historical TVL data.
all_history = client.tvl.getHistoricalChainTvl()
eth_history = client.tvl.getHistoricalChainTvl("Ethereum")
getTokenProtocols ๐
Get protocols holding a specific token.
holders = pro_client.tvl.getTokenProtocols("ETH")
getInflows ๐
Get token inflows/outflows between timestamps.
inflows = pro_client.tvl.getInflows(
"lido",
1704067200,
1704153600,
"ETH,USDC",
)
getChainAssets ๐
Get asset breakdown for all chains.
assets = pro_client.tvl.getChainAssets()
Prices
Token price data and historical charts.
getCurrentPrices
prices = client.prices.getCurrentPrices(
[
"ethereum:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"coingecko:bitcoin",
"solana:So11111111111111111111111111111111111111112",
]
)
getHistoricalPrices
prices = client.prices.getHistoricalPrices(
1704067200,
["ethereum:0xdac17f958d2ee523a2206206994597c13d831ec7"],
)
getBatchHistoricalPrices
prices = client.prices.getBatchHistoricalPrices(
{
"ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": [
1704067200,
1704153600,
1704240000,
]
}
)
getChart
chart = client.prices.getChart(
["coingecko:ethereum"],
{"start": 1704067200, "period": "1d", "span": 30},
)
getPercentageChange
change = client.prices.getPercentageChange(
["coingecko:bitcoin"],
{"period": "24h"},
)
getFirstPrices
first = client.prices.getFirstPrices(
["ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"]
)
getBlockAtTimestamp
block = client.prices.getBlockAtTimestamp("ethereum", 1704067200)
Stablecoins
Stablecoin market cap and dominance data.
getStablecoins
stables = client.stablecoins.getStablecoins(True)
getAllCharts
charts = client.stablecoins.getAllCharts()
getChartsByChain
eth_charts = client.stablecoins.getChartsByChain("Ethereum")
getStablecoin
usdt = client.stablecoins.getStablecoin("1")
getChains
chains = client.stablecoins.getChains()
getPrices
prices = client.stablecoins.getPrices()
getDominance ๐
dominance = pro_client.stablecoins.getDominance("ethereum", 1)
Yields ๐
Yield farming, lending, staking, and perpetual funding rates.
getPools
pools = pro_client.yields.getPools()
getPoolsOld
pools = pro_client.yields.getPoolsOld()
getPoolChart
chart = pro_client.yields.getPoolChart("pool-uuid-here")
getBorrowPools
borrow_pools = pro_client.yields.getBorrowPools()
getLendBorrowChart
chart = pro_client.yields.getLendBorrowChart("pool-uuid-here")
getPerps
perps = pro_client.yields.getPerps()
getLsdRates
lsd_rates = pro_client.yields.getLsdRates()
Volumes
DEX, options, and derivatives trading volume data.
getDexOverview
overview = client.volumes.getDexOverview()
overview = client.volumes.getDexOverview(
{"excludeTotalDataChart": True, "dataType": "dailyVolume"}
)
getDexOverviewByChain
eth_volume = client.volumes.getDexOverviewByChain("Ethereum")
getDexSummary
uniswap = client.volumes.getDexSummary("uniswap")
getOptionsOverview
options = client.volumes.getOptionsOverview()
getOptionsOverviewByChain
eth_options = client.volumes.getOptionsOverviewByChain("Ethereum")
getOptionsSummary
derive = client.volumes.getOptionsSummary("derive")
getDerivativesOverview ๐
derivatives = pro_client.volumes.getDerivativesOverview()
getDerivativesSummary ๐
gmx = pro_client.volumes.getDerivativesSummary("gmx")
getDexMetrics ๐
Get summary of DEX metrics with protocol list (no charts).
metrics = pro_client.volumes.getDexMetrics()
# With data type
metrics = pro_client.volumes.getDexMetrics({"dataType": "dailyVolume"})
getDexMetricsByProtocol ๐
Get DEX metrics for a specific protocol.
uniswap = pro_client.volumes.getDexMetricsByProtocol("uniswap")
getDerivativesMetrics ๐
Get summary of derivatives metrics with protocol list (no charts).
metrics = pro_client.volumes.getDerivativesMetrics()
getDerivativesMetricsByProtocol ๐
Get derivatives metrics for a specific protocol.
hyperliquid = pro_client.volumes.getDerivativesMetricsByProtocol("hyperliquid")
getOptionsMetrics ๐
Get summary of options metrics with protocol list (no charts).
metrics = pro_client.volumes.getOptionsMetrics()
getOptionsMetricsByProtocol ๐
Get options metrics for a specific protocol.
hegic = pro_client.volumes.getOptionsMetricsByProtocol("hegic")
Fees
Protocol fees and revenue data.
Fee Data Types
from defillama_sdk import FeeDataType
FeeDataType.DAILY_FEES
FeeDataType.DAILY_REVENUE
FeeDataType.DAILY_HOLDERS_REVENUE
FeeDataType.DAILY_SUPPLY_SIDE_REVENUE
FeeDataType.DAILY_BRIBES_REVENUE
FeeDataType.DAILY_TOKEN_TAXES
FeeDataType.DAILY_APP_FEES
FeeDataType.DAILY_APP_REVENUE
FeeDataType.DAILY_EARNINGS
getOverview
fees = client.fees.getOverview()
revenue = client.fees.getOverview({"dataType": FeeDataType.DAILY_REVENUE})
getOverviewByChain
eth_fees = client.fees.getOverviewByChain("Ethereum")
getSummary
uniswap_fees = client.fees.getSummary("uniswap")
getChart ๐
chart = pro_client.fees.getChart()
eth_chart = pro_client.fees.getChartByChain("Ethereum")
protocol_chart = pro_client.fees.getChartByProtocol("aave")
getChartByProtocolChainBreakdown ๐
breakdown = pro_client.fees.getChartByProtocolChainBreakdown("aave")
getChartByProtocolVersionBreakdown ๐
breakdown = pro_client.fees.getChartByProtocolVersionBreakdown("uniswap")
getChartByChainProtocolBreakdown ๐
breakdown = pro_client.fees.getChartByChainProtocolBreakdown("Ethereum")
getChartChainBreakdown ๐
breakdown = pro_client.fees.getChartChainBreakdown()
getMetrics ๐
metrics = pro_client.fees.getMetrics()
chain_metrics = pro_client.fees.getMetricsByChain("Ethereum")
protocol_metrics = pro_client.fees.getMetricsByProtocol("aave")
Emissions ๐
Token unlock schedules and vesting data.
getAll
emissions = pro_client.emissions.getAll()
getByProtocol
arbitrum = pro_client.emissions.getByProtocol("arbitrum")
Bridges ๐
Cross-chain bridge volume and transaction data.
getAll
bridges = pro_client.bridges.getAll()
bridges = pro_client.bridges.getAll({"includeChains": True})
getById
bridge = pro_client.bridges.getById(1)
getVolumeByChain
volume = pro_client.bridges.getVolumeByChain("Ethereum")
getDayStats
stats = pro_client.bridges.getDayStats(1704067200, "Ethereum")
getTransactions
txs = pro_client.bridges.getTransactions(
1,
{
"limit": 100,
"startTimestamp": 1704067200,
"endTimestamp": 1704153600,
"sourceChain": "Ethereum",
"address": "0x...",
},
)
Ecosystem ๐
Ecosystem-level data.
getCategories
categories = pro_client.ecosystem.getCategories()
getForks
forks = pro_client.ecosystem.getForks()
getOracles
oracles = pro_client.ecosystem.getOracles()
getEntities
entities = pro_client.ecosystem.getEntities()
getTreasuries
treasuries = pro_client.ecosystem.getTreasuries()
getHacks
hacks = pro_client.ecosystem.getHacks()
getRaises
raises = pro_client.ecosystem.getRaises()
ETFs ๐
Bitcoin and Ethereum ETF data.
getOverview
btc_etfs = pro_client.etfs.getOverview()
getOverviewEth
eth_etfs = pro_client.etfs.getOverviewEth()
getHistory
history = pro_client.etfs.getHistory()
getHistoryEth
history_eth = pro_client.etfs.getHistoryEth()
getFdvPerformance
perf = pro_client.etfs.getFdvPerformance("30")
DAT ๐
Digital Asset Treasury data and institutional holdings.
getInstitutions
data = pro_client.dat.getInstitutions()
getInstitution
mstr = pro_client.dat.getInstitution("MSTR")
Account ๐
API usage management.
getUsage
usage = pro_client.account.getUsage()
Error Handling
from defillama_sdk import ApiKeyRequiredError, RateLimitError, NotFoundError, ApiError
try:
data = pro_client.yields.getPools()
except ApiKeyRequiredError:
print("Pro API key required for this endpoint")
except RateLimitError as exc:
print(f"Rate limited. Retry after {exc.retry_after} seconds")
except NotFoundError:
print("Resource not found")
except ApiError as exc:
print(f"API error: {exc.status_code}")
Type Exports
All types are available from defillama_sdk.types, and are re-exported at the top level:
from defillama_sdk import Protocol, CoinPricesResponse, Stablecoin, YieldPool
Constants
from defillama_sdk import AdapterType, FeeDataType, VolumeDataType
AdapterType.DEXS
VolumeDataType.DAILY_VOLUME
FeeDataType.DAILY_FEES
Requirements
- Python >= 3.9
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file defillama_sdk-0.1.3.tar.gz.
File metadata
- Download URL: defillama_sdk-0.1.3.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94420ac6bc996f5ac78f79ba3688638af5088b9ca95d20e7087747688a9995d6
|
|
| MD5 |
f5ba25022e3700276497f21bad1322a6
|
|
| BLAKE2b-256 |
0f0bf9a6229946f36e7e44d50965efa2c82e196ff0b53a7e2cf7441f298829a5
|
File details
Details for the file defillama_sdk-0.1.3-py3-none-any.whl.
File metadata
- Download URL: defillama_sdk-0.1.3-py3-none-any.whl
- Upload date:
- Size: 30.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a8df009626326e339a3c6187c0adb776eefeeb00d9d77ec82996e8788ef1f99
|
|
| MD5 |
06c6fb70e6a3974e9312414eb40e0c44
|
|
| BLAKE2b-256 |
581a9b50d6d15a6134764b22664a5dd7dd71bea8f798f7e235b73ed369d65c34
|