← Back to list
💰

defillama-api Checked

Free DeFi analytics across all chains — TVL, token prices, DEX volumes, fees/revenue, stablecoins…
💰 Finance & Trading skills By agiprolabs Version v1.0.0 Added 2026-09-20 Updated 2026-09-20 Source ↗ Part of Finance & Trading →
9.0Overall rating
1Views
13Downloads
366Stars

Installation

🤖 Install via AI

Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.

Install the "defillama-api" skill by following the instructions at https://skill123.me/install/defillama-api.
⌨️ Command line install

Run in your terminal — downloads and installs to ~/.claude/skills/.

curl -fsSL https://skill123.me/install/defillama-api.sh | bash
📦 Download ZIP

Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.

⬇ Download v1.0.0 · 14 KB
📊 Static rating
9.0/10
Trigger
8.0
Structure
9.3
Workflow
8.0
Content
10.0
Engineering
10.0
Security
10.0

Six-dimension rubric with reviewer rationale.

View scorecard ↓
🛡 Dynamic test
—

Not live-tested yet — this skill is rated on static analysis only.

About this skill

Free DeFi analytics across all chains — TVL, token prices, DEX volumes, fees/revenue, stablecoins, and bridges

DeFiLlama API — DeFi Macro Analytics

DeFiLlama is the largest DeFi TVL aggregator. Its API is **free with no authentication** for most endpoints — covering TVL, token prices, DEX volumes, fees/revenue, stablecoins, and bridges across all chains.

Documentation

Free DeFi analytics across all chains — TVL, token prices, DEX volumes, fees/revenue, stablecoins, and bridges

DeFiLlama API — DeFi Macro Analytics

DeFiLlama is the largest DeFi TVL aggregator. Its API is **free with no authentication** for most endpoints — covering TVL, token prices, DEX volumes, fees/revenue, stablecoins, and bridges across all chains.

Quick Start


import httpx

# No auth required for free endpoints
BASE = "https://api.llama.fi"
COINS = "https://coins.llama.fi"

# Current TVL for a protocol
tvl = httpx.get(f"{BASE}/tvl/raydium").json()
print(f"Raydium TVL: ${tvl:,.0f}")

# Token prices (multi-chain)
resp = httpx.get(f"{COINS}/prices/current/solana:So11111111111111111111111111111111111111112")
sol_price = resp.json()["coins"]["solana:So11111111111111111111111111111111111111112"]["price"]

Base URLs

| Service | Base URL | Auth |

|---------|----------|------|

| TVL / Protocols | https://api.llama.fi | Free |

| Coin Prices | https://coins.llama.fi | Free |

| Stablecoins | https://stablecoins.llama.fi | Free |

| Yields | https://yields.llama.fi | Pro ($300/mo) |

| Bridges | https://bridges.llama.fi | Free (list) / Pro (detail) |

| Pro API | https://pro-api.llama.fi/{KEY}/api/... | Pro key in URL path |

**Rate limits**: ~500 requests per 5 minutes (free). Pro: 1,000 req/min, 1M calls/mo.

TVL & Protocol Data


# List all protocols with TVL
GET /protocols
# Returns: [{name, slug, tvl, chainTvls, change_1h, change_1d, change_7d, category, chains, ...}]

# Detailed protocol data with historical TVL
GET /protocol/{slug}
# Returns: Full object with tvl[], tokensInUsd{}, currentChainTvls{}, ...

# Simple current TVL number
GET /tvl/{slug}
# Returns: plain number (e.g., 150977324562.40)

# TVL for all chains
GET /v2/chains
# Returns: [{name, tvl, tokenSymbol, chainId, gecko_id}]

# Historical chain TVL
GET /v2/historicalChainTvl/{chain}
# chain: "Ethereum", "Solana", "Arbitrum", etc.
# Returns: [{date, tvl}] — date is unix timestamp (seconds)

Token Prices

Coin identifiers use {chain}:{address} format:

  • solana:So11111111111111111111111111111111111111112 (SOL)
  • ethereum:0xdac17f958d2ee523a2206206994597c13d831ec7 (USDT)
  • coingecko:bitcoin (non-chain lookups)

# Current prices (batch)
GET /prices/current/{coins}
# coins: comma-separated identifiers
# Optional: searchWidth (default 4h)
# Returns: {coins: {id: {price, decimals, symbol, timestamp, confidence}}}

# Historical price at timestamp
GET /prices/historical/{timestamp}/{coins}
# timestamp: unix seconds

# Price chart
GET /chart/{coins}?period=1d&span=30
# period: 1d, 4h, 1h
# Returns: {coins: {id: {prices: [{timestamp, price}]}}}

# Price change percentage
GET /percentage/{coins}

# First recorded price
GET /prices/first/{coins}

# Block number at timestamp
GET /block/{chain}/{timestamp}

### Batch Historical Prices

View full documentation

# POST for multiple timestamps per coin
POST /batchHistorical
Body: {"coins": {"solana:So11...": [1709251200, 1709337600]}}

DEX Volumes


# All DEXes aggregated
GET /overview/dexs
# Optional: excludeTotalDataChart=true, dataType=dailyVolume

# Chain-specific
GET /overview/dexs/{chain}
# chain: "Solana", "Ethereum", etc.

# Specific DEX
GET /summary/dexs/{protocol}
# Returns: {total24h, total7d, total30d, totalAllTime, totalDataChart, ...}

Fees & Revenue


# All protocols
GET /overview/fees
# Optional: dataType=dailyFees|dailyRevenue|dailyUserFees

# Chain-specific
GET /overview/fees/{chain}

# Specific protocol
GET /summary/fees/{protocol}
# Returns: {total24h, total7d, methodology{}, totalDataChart[], ...}

Stablecoins


# All stablecoins with supply data
GET https://stablecoins.llama.fi/stablecoins
# Returns: [{name, symbol, pegType, circulating, chainCirculating, price}]

# Historical market cap
GET https://stablecoins.llama.fi/stablecoincharts/all

# Chain-specific stablecoin data
GET https://stablecoins.llama.fi/stablecoincharts/{chain}

# Stablecoin prices (deviation tracking)
GET https://stablecoins.llama.fi/stablecoinprices

Bridges


# List all bridges
GET https://bridges.llama.fi/bridges
# Optional: includeChains=true
# Returns: {bridges: [{name, volume stats, chains, ...}]}

Common Patterns

### Protocol TVL Comparison


def compare_protocol_tvl(slugs: list[str]) -> list[dict]:
    """Compare TVL across protocols."""
    results = []
    for slug in slugs:
        resp = httpx.get(f"https://api.llama.fi/tvl/{slug}", timeout=15.0)
        if resp.status_code == 200:
            results.append({"protocol": slug, "tvl": resp.json()})
    return sorted(results, key=lambda x: x["tvl"], reverse=True)

### Multi-Token Price Lookup


def get_solana_prices(mints: list[str]) -> dict[str, float]:
    """Get USD prices for Solana tokens via DeFiLlama."""
    coins = ",".join(f"solana:{m}" for m in mints)
    resp = httpx.get(f"https://coins.llama.fi/prices/current/{coins}")
    data = resp.json().get("coins", {})
    return {
        mint: data[f"solana:{mint}"]["price"]
        for mint in mints
        if f"solana:{mint}" in data
    }

### Solana DeFi Overview


def solana_defi_snapshot() -> dict:
    """Get a snapshot of Solana DeFi activity."""
    chain_tvl = httpx.get("https://api.llama.fi/v2/chains").json()
    sol_tvl = next((c["tvl"] for c in chain_tvl if c["name"] == "Solana"), 0)

    dex_vol = httpx.get("https://api.llama.fi/overview/dexs/Solana").json()
    fees = httpx.get("https://api.llama.fi/overview/fees/Solana").json()

    return {
        "tvl": sol_tvl,
        "dex_volume_24h": dex_vol.get("total24h", 0),
        "fees_24h": fees.get("total24h", 0),
    }

### Historical Price Analysis


def price_at_date(coin: str, date_str: str) -> float:
    """Get token price at a specific date.

    Args:
        coin: DeFiLlama coin ID (e.g., 'solana:So11...')
        date_str: Date string 'YYYY-MM-DD'
    """
    from datetime import datetime, timezone
    dt = datetime.strptime(date_str, "%Y-%m-%d").replace(tzinfo=timezone.utc)
    ts = int(dt.timestamp())
    resp = httpx.get(f"https://coins.llama.fi/prices/historical/{ts}/{coin}")
    data = resp.json().get("coins", {})
    return data.get(coin, {}).get("price", 0)

Free vs Pro Endpoints

| Category | Free | Pro ($300/mo) |

|----------|------|---------------|

| TVL / Protocols | Yes | Yes |

| Coin Prices | Yes | Yes |

| DEX Volumes (overview) | Yes | Yes |

| Fees/Revenue (overview) | Yes | Yes |

| Stablecoins | Yes | Yes |

| Bridges (list) | Yes | Yes |

| Yields / Pools | No | Yes |

| Bridge detail | No | Yes |

| Derivatives | No | Yes |

| Emissions/Unlocks | No | Yes |

| Treasuries | No | Yes |

| Hacks database | No | Yes |

When to Use DeFiLlama vs Alternatives

| Need | Use |

|------|-----|

| Protocol TVL comparison | **DeFiLlama** |

| Multi-chain token prices | **DeFiLlama** (free batch) |

| Historical prices at specific timestamps | **DeFiLlama** |

| DeFi macro analysis | **DeFiLlama** |

| Solana token OHLCV | Birdeye or SolanaTracker |

| Real-time token data | DexScreener or Birdeye |

| Wallet PnL | SolanaTracker |

| On-chain transaction data | Helius |

Files

### References

  • references/endpoints.md — Complete endpoint listing with parameters and response schemas
  • references/coin_identifiers.md — Chain prefixes, address formats, and batch lookup patterns
  • references/error_handling.md — Rate limits, error codes, retry strategies, large response handling

### Scripts

  • scripts/defi_snapshot.py — Solana DeFi overview: TVL, volumes, fees, top protocols
  • scripts/price_lookup.py — Multi-token price lookup with historical comparison

Score breakdown

Trigger
8.0
Description states What (free DeFi analytics: TVL, prices, volumes, fees, stablecoins, bridges) and free/no-auth positioning; body adds a when-to-use-vs-alternatives table routing to Birdeye/DexScreener/Helius/SolanaTracker; good keyword coverage.
Structure
9.3
269-line SKILL.md, three references (endpoints, coin identifiers, error handling), two scripts; Files section maps roles; no redundant files.
Workflow
8.0
Quick start with runnable code, per-service endpoint documentation, reusable patterns (protocol comparison, batch prices, Solana snapshot), free/Pro gating awareness, and error-handling reference; no explicit verification loop.
Content
10.0
Imperative and concrete throughout; response-shape comments (e.g., plain-number /tvl response) are exactly what an agent needs; zero filler.
Engineering
10.0
Valid frontmatter; scripts have shebangs, dependency docs, timeouts; all referenced paths exist.
Security
10.0
6.0 manifest: data reads none beyond CLI args; side effects none; network only to official DeFiLlama hosts; credentials none (keyless API, Pro key format documented but not required); persistence none. Capabilities match declared scope. No injection, no destructive commands.
Clean tool-wrapper for DeFiLlama: base-URL/auth table per service, endpoint docs with response shapes, coin-identifier reference, free-vs-Pro endpoint matrix, and a when-to-use-vs-alternatives routing table. Scripts call only official *.llama.fi hosts (keyless). 6.0 manifest: network destinations api.llama.fi / coins.llama.fi / stablecoins.llama.fi / bridges.llama.fi only (all official DeFiLlama, matching declared purpose); no credentials, no file writes, no persistence; capabilities match declared scope. Read-only macro-analytics skill, no execution or advice risk.