# DefiLlama Scraper (`solidcode/defillama-scraper`) Actor

\[💰 $40.25 / 1K] Extract DeFi market data from DefiLlama — 7,900+ protocols with TVL, 450+ chains, 16,000+ yield pools with APY, 400+ stablecoins, plus DEX volumes, fees and revenue. Filter by chain, category, TVL or APY, with optional daily history.

- **URL**: https://apify.com/solidcode/defillama-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $40.25 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## DefiLlama Scraper

Pull live DeFi market data from DefiLlama at scale — 7,900+ protocols with total value locked, 459 blockchains, 16,000+ yield pools with full APY breakdowns, 400+ stablecoins, plus DEX volumes, protocol fees and protocol revenue. Every row arrives typed, filtered and ranked exactly the way you asked for it. Built for DeFi analysts, crypto funds, treasury and risk teams, and yield researchers who need a clean, filterable market dataset without stitching a dozen dashboards together by hand.

### Why This Scraper?

- **Nine DefiLlama datasets in a single run** — protocols & TVL, blockchains & TVL, yield pools & APY, stablecoins, DEX trading volumes, protocol fees, protocol revenue, options volumes and DEX aggregator volumes. Tick the ones you want; they all land in one table.
- **16,000+ yield pools with the full APY breakdown** — base APY versus reward APY, 30-day mean APY, 1/7/30-day APY movement, impermanent-loss risk, exposure type, stablecoin flag, and DefiLlama's own outlook class with its confidence score.
- **Fees and revenue kept apart** — 2,400+ protocols with gross fees and 2,100+ with the revenue actually retained, across 24h / 7d / 30d / 1y / all-time windows plus an annualised figure. Compute a real take rate instead of estimating one.
- **The complete universe, not a truncated leaderboard** — 7,910 protocols and 459 chains are available uncapped, and a nine-dataset pull returns over 30,000 rows in a single run. The default settings finish in seconds.
- **Daily history back to 2017** — up to ~3,200 dated points per protocol, blockchain or yield pool, capped by a days setting you control. Pool history carries APY, base APY and reward APY per day, not just pool size.
- **Per-blockchain TVL breakdown for every protocol** — one row per chain a protocol is deployed on, with the dollar amount and its share of the protocol's total. The largest multi-chain protocols expand into 117 rows.
- **Blockchain name aliases resolved both ways** — `BSC` and `Binance`, `Optimism` and `OP Mainnet`, `Gnosis` and `xDai`, `ZKsync Era` and `zkSync` all return identical results (verified: 1,109 rows either way). No more empty runs from a spelling mismatch.
- **Five filters × eight ranking options** — name search, blockchains, 101 DefiLlama categories, minimum value locked and minimum APY, combined with rankings such as highest APY, biggest 24-hour gainers, or A-to-Z. "Top 50 lending protocols on Arbitrum above $1M" is one input.
- **A `recordType` on every row** — protocol, chain, pool, stablecoin, dexVolume, fee, revenue, optionsVolume, dexAggregator, protocolChainTvl or history. One export splits cleanly into separate tables with no guesswork.

### Use Cases

**Yield Research & Farming**
- Rank the highest-APY pools above a minimum size on Base, Arbitrum or Solana
- Separate genuine base yield from token-emission rewards before committing capital
- Filter to stablecoin-only pools with no impermanent-loss exposure
- Track a pool's APY day by day to see whether a headline rate is sustainable

**Protocol & Market Intelligence**
- Build a live league table of every lending, DEX, restaking or RWA protocol by TVL
- Watch capital rotate between chains using 24-hour and 7-day change columns
- Measure a protocol's take rate by pairing its fee and revenue rows
- Spot new entrants by ranking the whole universe A-to-Z or by listing date

**Risk, Treasury & Portfolio Monitoring**
- Monitor concentration risk with a per-chain split of every protocol's TVL
- Flag protocols whose market cap has decoupled from their TVL
- Set a minimum value-locked floor to strip out dormant and micro-cap projects
- Keep an audit trail of daily TVL for the protocols your treasury is exposed to

**Trading & Exchange Analytics**
- Compare 24h, 7d, 30d and all-time volume across 1,200+ decentralised exchanges
- Track options venues and DEX aggregators as their own separate datasets
- Benchmark a venue's volume growth with the 30-day-over-30-day change column

**Stablecoin & Peg Monitoring**
- Watch circulating supply shift across 400+ stablecoins day by day, week by week
- Detect depegs early by tracking price against peg type and backing mechanism
- See which blockchains hold the largest share of a given stablecoin's supply

**Data Products, Dashboards & Content**
- Power a DeFi dashboard or newsletter with a scheduled refresh
- Back research notes and market reports with reproducible, dated numbers
- Feed a quant model with multi-year daily TVL and APY series

### Getting Started

#### Basic Market Snapshot

The simplest run — the top 250 protocols and the top 250 blockchains by value locked:

```json
{
    "dataTypes": ["protocols", "chains"],
    "maxResultsPerDataset": 250
}
````

#### High-Yield Pool Hunt

Pools paying 10%+ on Arbitrum or Base, at least $1M deep, ranked by APY:

```json
{
    "dataTypes": ["yields"],
    "chains": ["Arbitrum", "Base"],
    "minApy": 10,
    "minTvlUsd": 1000000,
    "sortBy": "apy",
    "maxResultsPerDataset": 100
}
```

#### Lending Sector Deep Dive

Lending protocols with a per-chain TVL split, plus their fee and revenue rows. You get the top 50 lending protocols by value locked, and their per-chain rows arrive on top of that:

```json
{
    "dataTypes": ["protocols", "fees", "revenue"],
    "categories": ["Lending"],
    "minTvlUsd": 10000000,
    "sortBy": "tvl",
    "maxResultsPerDataset": 50,
    "includeChainBreakdown": true
}
```

#### Full Market Pull With History

Every dataset, capped tight, with six months of daily history on the entries that support it:

```json
{
    "dataTypes": [
        "protocols", "chains", "yields", "stablecoins", "dexVolumes",
        "fees", "revenue", "optionsVolumes", "dexAggregators"
    ],
    "sortBy": "default",
    "maxResultsPerDataset": 25,
    "includeHistory": true,
    "historyDays": 180,
    "includeChainBreakdown": true
}
```

### Input Reference

#### What to Collect

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `dataTypes` | array | `["protocols", "chains"]` | Pick one or more DefiLlama datasets. Each one is collected separately and the results are merged into a single table, with every row tagged by its type. |

Available `dataTypes` values:

| Value | Shown in the editor as |
|-------|------------------------|
| `protocols` | Protocols & TVL (7,900+ DeFi protocols) |
| `chains` | Blockchains & TVL (450+ chains) |
| `yields` | Yield pools & APY (16,000+ pools) |
| `stablecoins` | Stablecoins (400+ coins, supply & peg) |
| `dexVolumes` | DEX trading volumes (1,200+ exchanges) |
| `fees` | Protocol fees (2,400+ protocols) |
| `revenue` | Protocol revenue (2,100+ protocols) |
| `optionsVolumes` | Options trading volumes |
| `dexAggregators` | DEX aggregator volumes |

#### Filters (optional)

All filters are optional and combine with each other. Because each dataset arrives as one complete snapshot, filtering here reduces the number of results you are charged for — it does not slow the run down.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerm` | string | *(empty)* | Keep only entries whose name, ticker symbol or project matches this text. Not case sensitive, and partial words work — `aave` matches `Aave V3`. |
| `chains` | array | `[]` | Keep only entries on these blockchains, e.g. `Ethereum`, `Base`, `Solana`, `Arbitrum`, `BSC`, `Polygon`. Capitalisation does not matter and common alternative names are understood. |
| `categories` | array | `[]` | Keep only entries in these DefiLlama categories, e.g. `Lending`, `Dexs`, `Liquid Staking`, `Restaking`, `CDP`, `Bridge`, `RWA`, `Yield`, `Derivatives`. 101 categories exist in total. |
| `minTvlUsd` | integer | *(none)* | Only include entries holding at least this much value, in US dollars. Try `1000000` for $1M. Applies to protocol and blockchain value locked, yield pool size, and stablecoin circulating supply converted to US dollars. |
| `minApy` | number | *(none)* | Only include yield pools paying at least this annual percentage yield — enter `5` for 5%. Applies to the Yield pools dataset only. |

Scope notes: `categories` is skipped for blockchains, stablecoins and yield pools, which carry no category. `minTvlUsd` is skipped for the DEX volume, fee, revenue, options and aggregator datasets — they measure turnover rather than a balance, so they have no value-locked figure and come back unfiltered. `minApy` affects yield pools only.

#### Results

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sortBy` | string | `"default"` | How results are ranked before the per-dataset limit is applied — this decides which entries make it into your "top N". Entries missing the metric you chose rank last rather than being mixed in. |
| `maxResultsPerDataset` | integer | `250` | The most **entries** to return from each dataset you selected. Two datasets at 250 gives you up to 500 entries. Set to `0` for no limit. This limit counts entries only — the two optional add-ons, `includeChainBreakdown` and `includeHistory`, add extra rows on top of it rather than taking room away from it, and every extra row is charged. The run reports the exact number of extra rows before collecting them. |

Available `sortBy` values:

| Value | Shown in the editor as |
|-------|------------------------|
| `default` | Headline metric, highest first (recommended) |
| `tvl` | Value locked, highest first |
| `apy` | APY, highest first (yield pools) |
| `volume24h` | 24-hour volume, highest first |
| `fees24h` | 24-hour fees, highest first |
| `change24h` | 24-hour change, biggest gainers first |
| `change7d` | 7-day change, biggest gainers first |
| `name` | Name, A to Z |

#### Historical Data (optional)

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeHistory` | boolean | `false` | Add daily historical rows for everything you collect: value-locked history for protocols and blockchains, APY plus value-locked history for yield pools. Not available for stablecoins, volumes, fees, revenue, options or aggregators. These dated rows are extras on top of `maxResultsPerDataset` — you still get every entry you asked for — and each is charged as a history point rather than a result. The row total is roughly your entry count × `historyDays`, so set both deliberately. |
| `historyDays` | integer | `90` | How many of the most recent days of history to include per entry. Together with your entry limit this decides how many extra rows you get, and each is charged. DefiLlama holds up to about 3,200 days, going back to 2017. Keep this modest: 250 protocols × 365 days is over 91,000 extra rows on top of the 250 protocol rows; at 90 days the same 250 protocols add about 22,500. |

#### Extra Detail (optional)

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeChainBreakdown` | boolean | `false` | For protocols, add one extra row for every blockchain the protocol runs on, showing how much of its value sits on that chain and what share of the total it represents. These rows are extras on top of `maxResultsPerDataset` — you still get every protocol you asked for — and each is charged as a result. Most protocols run on one chain; the widest run on over 100. The run reports the exact extra-row count before collecting them. If you filled in the Blockchains filter, only those blockchains get a breakdown row, which keeps the extra count down. Each protocol is listed first and its breakdown follows it, largest chain first. |

### Output

One flat dataset. Every row carries a `recordType` telling you which shape it is.

#### Fields On Every Row

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | `protocol`, `chain`, `pool`, `stablecoin`, `dexVolume`, `fee`, `revenue`, `optionsVolume`, `dexAggregator`, `protocolChainTvl` or `history` |
| `name` | string | Human-readable name of the entry |
| `url` | string | The DefiLlama page for this entry |
| `scrapedAt` | string | ISO-8601 UTC timestamp of collection |

#### `protocol`

```json
{
    "recordType": "protocol",
    "name": "AAVE V3",
    "slug": "aave-v3",
    "symbol": "AAVE",
    "category": "Lending",
    "chain": "Ethereum",
    "chains": ["Ethereum", "Arbitrum", "Base", "Polygon", "Avalanche"],
    "tvlUsd": 24817430512.44,
    "change1h": 0.11,
    "change1d": -1.42,
    "change7d": 3.86,
    "mcapUsd": 3921004488.0,
    "mcapToTvlRatio": 0.158,
    "description": "Aave is an open source and non-custodial liquidity protocol.",
    "website": "https://aave.com",
    "twitter": "https://twitter.com/aave",
    "logo": "https://icons.llama.fi/aave-v3.png",
    "audits": "2",
    "listedAt": "2022-03-16T00:00:00Z",
    "defillamaId": "1599",
    "url": "https://defillama.com/protocol/aave-v3",
    "scrapedAt": "2026-07-24T09:15:02Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `slug` | string | DefiLlama identifier used in the page URL |
| `symbol` | string | Governance or protocol token ticker |
| `category` | string | DefiLlama category, e.g. Lending, Dexs, Liquid Staking |
| `chain` | string | Primary blockchain |
| `chains` | array | Every blockchain the protocol is deployed on |
| `tvlUsd` | number | Total value locked, in US dollars |
| `change1h` | number | 1-hour change in value locked, percent |
| `change1d` | number | 24-hour change in value locked, percent |
| `change7d` | number | 7-day change in value locked, percent |
| `mcapUsd` | number | Token market capitalisation, in US dollars |
| `mcapToTvlRatio` | number | Market cap divided by value locked |
| `description` | string | Protocol description |
| `website` | string | Official website |
| `twitter` | string | Twitter/X profile link |
| `logo` | string | Protocol logo image |
| `audits` | string | Number of audits recorded by DefiLlama |
| `listedAt` | string | ISO-8601 date the protocol was listed |
| `defillamaId` | string | DefiLlama internal id |

#### `chain`

```json
{
    "recordType": "chain",
    "name": "Ethereum",
    "tvlUsd": 61204889301.77,
    "chainId": 1,
    "tokenSymbol": "ETH",
    "geckoId": "ethereum",
    "cmcId": "1027",
    "protocolCount": 1284,
    "url": "https://defillama.com/chain/Ethereum",
    "scrapedAt": "2026-07-24T09:15:02Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `tvlUsd` | number | Total value locked on the blockchain, in US dollars |
| `chainId` | integer | EVM chain id where one exists |
| `tokenSymbol` | string | Native token ticker |
| `geckoId` | string | CoinGecko identifier |
| `cmcId` | string | CoinMarketCap identifier |
| `protocolCount` | integer | How many protocols DefiLlama tracks on this blockchain — the full count, not just the protocols returned by this run |

#### `pool` (yields)

```json
{
    "recordType": "pool",
    "name": "lido STETH",
    "poolId": "747c1d2a-c668-4682-b9f9-296708a3dd90",
    "project": "lido",
    "chain": "Ethereum",
    "symbol": "STETH",
    "poolMeta": null,
    "tvlUsd": 24518772416.0,
    "apy": 2.714,
    "apyBase": 2.714,
    "apyReward": null,
    "apyMean30d": 2.8461,
    "apyBase7d": 2.69,
    "apyPct1d": -0.011,
    "apyPct7d": 0.043,
    "apyPct30d": -0.216,
    "rewardTokens": [],
    "underlyingTokens": ["0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"],
    "isStablecoin": false,
    "ilRisk": "no",
    "il7d": null,
    "exposure": "single",
    "volumeUsd1d": null,
    "volumeUsd7d": null,
    "sigma": 0.0142,
    "mu": 3.8891,
    "dataPointCount": 1513,
    "isOutlier": false,
    "predictedClass": "Stable/Up",
    "predictedProbability": 71.0,
    "url": "https://defillama.com/yields/pool/747c1d2a-c668-4682-b9f9-296708a3dd90",
    "scrapedAt": "2026-07-24T09:15:02Z"
}
```

**Pool identity & size**

| Field | Type | Description |
|-------|------|-------------|
| `poolId` | string | Unique pool identifier used in the pool page URL |
| `project` | string | Protocol operating the pool, e.g. `lido`, `aave-v3` |
| `chain` | string | Blockchain the pool lives on |
| `symbol` | string | Pool asset symbol, e.g. `STETH`, `USDC-WETH` |
| `poolMeta` | string | Extra pool label where the project provides one |
| `tvlUsd` | number | Pool size, in US dollars |
| `volumeUsd1d` | number | 24-hour trading volume, where applicable |
| `volumeUsd7d` | number | 7-day trading volume, where applicable |

**Yield & risk**

| Field | Type | Description |
|-------|------|-------------|
| `apy` | number | Total annual percentage yield |
| `apyBase` | number | Yield from the underlying activity alone |
| `apyReward` | number | Yield from token incentives alone |
| `apyMean30d` | number | Mean APY over the last 30 days |
| `apyBase7d` | number | Base APY over the last 7 days |
| `apyPct1d` | number | APY change over 24 hours |
| `apyPct7d` | number | APY change over 7 days |
| `apyPct30d` | number | APY change over 30 days |
| `rewardTokens` | array | Token addresses paid out as incentives |
| `underlyingTokens` | array | Token addresses held by the pool |
| `isStablecoin` | boolean | Whether the pool is stablecoin-denominated |
| `ilRisk` | string | Impermanent-loss risk assessment, `yes` or `no` |
| `il7d` | number | Impermanent loss over the last 7 days |
| `exposure` | string | `single` or `multi` asset exposure |
| `sigma` | number | Volatility of the pool's APY |
| `mu` | number | Mean historical APY |
| `dataPointCount` | integer | How many daily observations DefiLlama holds |
| `isOutlier` | boolean | Whether DefiLlama flags the APY as an outlier |
| `predictedClass` | string | DefiLlama's outlook, e.g. `Stable/Up`, `Down` |
| `predictedProbability` | number | Confidence in that outlook, percent |

#### `stablecoin`

```json
{
    "recordType": "stablecoin",
    "name": "Tether",
    "symbol": "USDT",
    "geckoId": "tether",
    "pegType": "peggedUSD",
    "pegMechanism": "fiat-backed",
    "priceUsd": 1.0,
    "priceSource": "defillama",
    "circulating": 183034068469.48,
    "circulatingUsd": 183034068469.48,
    "circulatingPrevDay": 182740221105.3,
    "circulatingPrevWeek": 181902447718.02,
    "circulatingPrevMonth": 178330415922.71,
    "change1d": 0.16,
    "change7d": 0.62,
    "change30d": 2.64,
    "chains": ["Tron", "Ethereum", "BSC", "Solana", "Arbitrum"],
    "topChainCirculating": [
        { "chain": "Tron", "circulating": 81204338811.02 },
        { "chain": "Ethereum", "circulating": 74119440287.55 }
    ],
    "url": "https://defillama.com/stablecoin/tether",
    "scrapedAt": "2026-07-24T09:15:02Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `symbol` | string | Stablecoin ticker |
| `geckoId` | string | CoinGecko identifier |
| `pegType` | string | What the coin is pegged to, e.g. `peggedUSD`, `peggedEUR` |
| `pegMechanism` | string | How the peg is maintained, e.g. `fiat-backed`, `crypto-backed`, `algorithmic` |
| `priceUsd` | number | Current price in US dollars |
| `priceSource` | string | Where the price came from |
| `circulating` | number | Circulating supply in peg units |
| `circulatingUsd` | number | Circulating supply converted to US dollars. Empty for a coin pegged to another currency when DefiLlama publishes no price for it, so a dollar figure is never guessed. |
| `circulatingPrevDay` | number | Circulating supply 24 hours ago |
| `circulatingPrevWeek` | number | Circulating supply 7 days ago |
| `circulatingPrevMonth` | number | Circulating supply 30 days ago |
| `change1d` | number | 24-hour supply change, percent |
| `change7d` | number | 7-day supply change, percent |
| `change30d` | number | 30-day supply change, percent |
| `chains` | array | Blockchains the coin is issued on |
| `topChainCirculating` | array | The top 10 blockchains by supply, each with `chain` and `circulating`. The complete list of chains the coin is issued on is in `chains`. |

#### `dexVolume`, `optionsVolume`, `dexAggregator`, `fee`, `revenue`

These five share one shape. The volume types carry volume columns; `fee` and `revenue` carry fee columns and come from the same protocol universe, so pairing them gives you a take rate.

```json
{
    "recordType": "dexVolume",
    "name": "Uniswap",
    "displayName": "Uniswap",
    "slug": "uniswap",
    "category": "Dexs",
    "chains": ["Ethereum", "Arbitrum", "Base", "Polygon"],
    "volume24hUsd": 2841003117.0,
    "volume7dUsd": 19773442810.0,
    "volume30dUsd": 84120558903.0,
    "volume1yUsd": 921884550117.0,
    "volumeAllTimeUsd": 3011884550117.0,
    "change1d": -4.12,
    "change7d": 8.44,
    "change1m": -2.71,
    "change30dOver30d": 6.02,
    "defillamaId": "2196",
    "url": "https://defillama.com/protocol/uniswap",
    "scrapedAt": "2026-07-24T09:15:02Z"
}
```

**Shared fields**

| Field | Type | Description |
|-------|------|-------------|
| `displayName` | string | Protocol name as DefiLlama displays it |
| `slug` | string | DefiLlama identifier used in the page URL |
| `category` | string | DefiLlama category |
| `chains` | array | Blockchains the protocol operates on |
| `change1d` | number | 24-hour change, percent |
| `change7d` | number | 7-day change, percent |
| `change1m` | number | 30-day change, percent |
| `defillamaId` | string | DefiLlama internal id |

**Volume datasets** (`dexVolume`, `optionsVolume`, `dexAggregator`)

| Field | Type | Description |
|-------|------|-------------|
| `volume24hUsd` | number | Trading volume over 24 hours |
| `volume7dUsd` | number | Trading volume over 7 days |
| `volume30dUsd` | number | Trading volume over 30 days |
| `volume1yUsd` | number | Trading volume over 1 year |
| `volumeAllTimeUsd` | number | Trading volume since launch |
| `change30dOver30d` | number | Last 30 days versus the 30 days before, percent |

**Fee and revenue datasets** (`fee`, `revenue`)

| Field | Type | Description |
|-------|------|-------------|
| `fees24hUsd` | number | Fees or revenue over 24 hours |
| `fees7dUsd` | number | Fees or revenue over 7 days |
| `fees30dUsd` | number | Fees or revenue over 30 days |
| `fees1yUsd` | number | Fees or revenue over 1 year |
| `feesAllTimeUsd` | number | Fees or revenue since launch |
| `annualized1yUsd` | number | Annualised run rate based on the last year |

#### `protocolChainTvl`

One row per blockchain a protocol runs on, added when `includeChainBreakdown` is on.

```json
{
    "recordType": "protocolChainTvl",
    "name": "AAVE V3 on Arbitrum",
    "parentSlug": "aave-v3",
    "parentName": "AAVE V3",
    "chain": "Arbitrum",
    "tvlUsd": 1088417220.31,
    "shareOfProtocolTvl": 0.043855,
    "url": "https://defillama.com/protocol/aave-v3",
    "scrapedAt": "2026-07-24T09:15:02Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `parentSlug` | string | Slug of the protocol this row belongs to |
| `parentName` | string | Name of the protocol this row belongs to |
| `chain` | string | Blockchain this slice of value sits on |
| `tvlUsd` | number | Value locked on that blockchain, in US dollars |
| `shareOfProtocolTvl` | number | Fraction of the protocol's total on that chain |

#### `history`

One dated row per day, added when `includeHistory` is on. Pool history additionally carries APY columns.

```json
{
    "recordType": "history",
    "parentType": "pool",
    "name": "lido STETH",
    "parentName": "lido STETH",
    "parentSlug": "747c1d2a-c668-4682-b9f9-296708a3dd90",
    "date": "2026-07-23T00:00:00Z",
    "tvlUsd": 24401882330.0,
    "apy": 2.731,
    "apyBase": 2.731,
    "apyReward": null,
    "url": "https://defillama.com/yields/pool/747c1d2a-c668-4682-b9f9-296708a3dd90",
    "scrapedAt": "2026-07-24T09:15:02Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `parentType` | string | `protocol`, `chain` or `pool` |
| `parentName` | string | Name of the entry this day belongs to |
| `parentSlug` | string | Slug or pool id of that entry |
| `date` | string | ISO-8601 date of the observation |
| `tvlUsd` | number | Value locked on that day, in US dollars |
| `apy` | number | Total APY on that day (pool history only) |
| `apyBase` | number | Base APY on that day (pool history only) |
| `apyReward` | number | Reward APY on that day (pool history only) |

### Tips for Best Results

- **Rank first, then cap.** `sortBy` is applied before `maxResultsPerDataset`, so "top 100 by value locked" costs you 100 rows rather than the full 7,900. Leave `sortBy` on the recommended headline metric unless you specifically want gainers or A-to-Z.
- **The limit counts entries; the two add-ons bill on top.** Ask for 40 protocols and you get 40 protocols — `includeChainBreakdown` and `includeHistory` add their rows alongside, never instead. Both announce their exact extra-row count before collecting, so you see the bill coming.
- **Filters lower your bill.** Each dataset arrives as one complete snapshot, so narrowing to lending protocols on Base means you pay for the 40 rows you keep — not the whole universe. Filter aggressively.
- **Power tip — cap entries before you raise the day count.** History multiplies rows per entry, so pair `includeHistory` with a small `maxResultsPerDataset`. 25 protocols at 180 days is 4,500 history rows; 250 protocols at 365 days is over 91,000. Get the entry list right first, then extend `historyDays`.
- **Don't fuss over blockchain spelling.** `BSC`/`Binance`, `Optimism`/`OP Mainnet`, `Gnosis`/`xDai` and `ZKsync Era`/`zkSync` are treated as the same chain, and capitalisation is ignored.
- **Use `chains` and `minApy` for pools, `categories` for protocols.** Blockchains, stablecoins and yield pools carry no DefiLlama category, so `categories` is skipped for them — narrow pools with a chain list and a yield floor instead.
- **Select `fees` and `revenue` together.** They cover the same protocols but measure different money: gross fees paid by users versus what the protocol keeps. Dividing one by the other gives you a take rate no single dataset shows.
- **Pool history is the slow part.** DefiLlama serves per-pool charts a few seconds at a time, so keep pool counts modest when history is on. Your snapshot rows are saved first either way, and the run tells you if history came back incomplete.

### Pricing

**From $40.25 per 1,000 results** — with daily history points billed separately at a fraction of that price, because they are far cheaper to collect than the entries themselves. Bronze, Silver and Gold subscribers pay progressively less; the tables below show total cost at each discount tier.

**No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.**

#### Results

A result is one DeFi entry: a protocol, blockchain, yield pool, stablecoin, DEX volume, options volume, aggregator volume, fee, revenue, or per-blockchain TVL breakdown row.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $4.83 | $4.55 | $4.28 | $4.03 |
| 1,000 | $48.30 | $45.50 | $42.75 | $40.25 |
| 10,000 | $483.00 | $455.00 | $427.50 | $402.50 |
| 100,000 | $4,830.00 | $4,550.00 | $4,275.00 | $4,025.00 |

#### Daily history points

A history point is one dated row of daily history for a protocol, blockchain or yield pool. These are only produced when `includeHistory` is turned on.

| History points | No discount | Bronze | Silver | Gold |
|----------------|-------------|--------|--------|------|
| 100 | $0.30 | $0.28 | $0.27 | $0.25 |
| 1,000 | $3.00 | $2.80 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.00 | $26.50 | $25.00 |
| 100,000 | $300.00 | $280.00 | $265.00 | $250.00 |

Every run also carries a fixed **$0.005 start fee**.

#### Worked example

250 protocols with 90 days of daily history each, at the Gold tier:

| Item | Quantity | Cost |
|------|----------|------|
| Results | 250 protocol rows | $10.06 |
| Daily history points | 22,500 rows | $56.25 |
| Run start fee | 1 run | $0.005 |
| **Total** | **22,750 rows** | **$66.32** |

Those same 22,500 history rows would cost $905.63 if they were priced as results — the split is what makes multi-year history affordable. The prices above are the full cost of a run: there is nothing extra to pay for how long it took or how much data it moved.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available DeFi market data from DefiLlama. No personal data is collected, and no login or private information is involved. You are responsible for using the collected data in line with DefiLlama's terms of use and any laws that apply where you operate.

Nothing here is financial advice. DeFi yields, token prices and value-locked figures move constantly and can be revised — always verify against the source before making an investment, allocation or risk decision.

# Actor input Schema

## `dataTypes` (type: `array`):

Pick one or more DefiLlama datasets. Each one is collected separately and the results are merged into a single table, with every row tagged by its type so you can filter or split them afterwards.

## `searchTerm` (type: `string`):

Keep only entries whose name, ticker symbol or project matches this text. Not case sensitive, and partial words work — 'aave' matches 'Aave V3'. Leave empty to keep everything.

## `chains` (type: `array`):

Keep only entries on these blockchains, for example Ethereum, Base, Solana, Arbitrum, BSC, Polygon. Capitalisation does not matter, and common alternative names are understood — BSC also matches Binance, Gnosis also matches xDai, and Optimism also matches OP Mainnet. Leave empty to include every chain. Applies to protocols, yield pools, stablecoins, volumes, fees and revenue — and picks out those chains themselves in the Blockchains dataset.

## `categories` (type: `array`):

Keep only entries in these DefiLlama categories, for example Lending, Dexs, Liquid Staking, Restaking, CDP, Bridge, RWA, Yield, Derivatives. DefiLlama uses 101 categories in total. Leave empty to include every category. Applies to protocols, DEX volumes, fees, revenue, options and aggregators. Blockchains, stablecoins and yield pools have no category attached to them, so this filter is skipped for those three datasets and they come back unfiltered.

## `minTvlUsd` (type: `integer`):

Only include entries holding at least this much value, in US dollars. A good way to cut out dead or tiny projects — try 1000000 for $1M. Applies to protocol value locked, blockchain value locked, yield pool size and stablecoin circulating supply (converted to US dollars for coins pegged to other currencies, using DefiLlama's price; a coin pegged to another currency with no published price has no dollar figure to test, so it is left out when you set a minimum). DEX volume, fee, revenue, options and aggregator datasets measure turnover rather than a balance, so they have no value-locked figure and this filter is skipped for them — those datasets come back unfiltered. Leave empty for no minimum.

## `minApy` (type: `number`):

Only include yield pools paying at least this annual percentage yield — enter 5 for 5%. Applies to the Yield pools dataset only; other datasets are unaffected. Leave empty for no minimum.

## `sortBy` (type: `string`):

How results are ranked before the per-dataset limit below is applied — this is what decides which entries make it into your 'top N'. 'Headline metric' uses value locked for protocols, blockchains, yield pools and stablecoins, and 24-hour totals for volume, fee and revenue datasets. If a dataset does not have the metric you pick, it falls back to its headline metric — blockchains, for example, only carry value locked, so every other choice ranks them by that. Entries that are missing the metric you chose are ranked last rather than mixed in. Yield pools have no single name, so A to Z sorts them by project and pool symbol.

## `maxResultsPerDataset` (type: `integer`):

The most entries to return from each dataset you selected. Picking two datasets with a limit of 250 gives you up to 500 entries. Set to 0 for no limit — be aware the full yield pool list alone is over 16,000 entries. This limit counts entries only. The two optional add-ons below — the blockchain breakdown and the daily history — add extra rows on top of it rather than taking room away from it, and every extra row is charged. Before it collects them, the run tells you exactly how many extra rows each add-on will produce.

## `includeHistory` (type: `boolean`):

Add daily historical rows for everything you collect: value-locked history for protocols and blockchains, and APY plus value-locked history for yield pools. Each entry gets its own set of dated rows. Not available for stablecoins, volumes, fees, revenue, options or aggregators. These dated rows are extras added on top of 'Maximum results per dataset' — you still get the full number of entries you asked for — and every one of them is charged, as a daily history row rather than as a result, which is much cheaper. There can be a great many of them: the total is roughly your entry count multiplied by the days setting below, the run announces the exact worst case before it starts collecting them, and the run's own maximum cost setting is what caps the spend. History for yield pools is served slowly by DefiLlama (a few seconds per pool), so the history stage stops after 30 minutes and finishes with whatever it has — every main result is already saved by then, and the run reports if history came back incomplete.

## `historyDays` (type: `integer`):

How many of the most recent days of history to include for each entry, when history is turned on. Together with your entry limit this is what decides how many extra rows you get, and every extra row is charged as a daily history row. DefiLlama holds up to about 3,200 days, going back to 2017. Please keep this modest: 250 protocols with 365 days each produces over 91,000 extra rows on top of the 250 protocol rows. At the default of 90 days, the same 250 protocols add about 22,500 rows.

## `includeChainBreakdown` (type: `boolean`):

For protocols, add one extra row for every blockchain the protocol runs on, showing how much of its value sits on that chain and what share of the total it represents. These rows are extras added on top of 'Maximum results per dataset' — you still get the full number of protocols you asked for — and each one is charged as a result, so turning this on adds to your bill rather than replacing protocols. Most protocols run on a single chain, so this usually adds few rows, but the largest multi-chain protocols run on over 100. The run announces the exact number of extra rows before it collects them. If you filled in the Blockchains filter above, only those blockchains get a breakdown row, which keeps the extra count down. Each protocol is listed first and its breakdown follows it, largest chain first.

## Actor input object example

```json
{
  "dataTypes": [
    "protocols",
    "chains"
  ],
  "chains": [],
  "categories": [],
  "sortBy": "default",
  "maxResultsPerDataset": 250,
  "historyDays": 90
}
```

# Actor output Schema

## `overview` (type: `string`):

Every row collected in this run, with the fields common to all types.

## `protocols` (type: `string`):

Protocol columns — total value locked, category, chains, market cap and price changes. Rows of other types appear with these columns empty.

## `chains` (type: `string`):

Blockchain columns — total value locked, native token and protocol count. Rows of other types appear with these columns empty.

## `pools` (type: `string`):

Yield pool columns — APY with its base and reward split, pool size and risk indicators. Rows of other types appear with these columns empty.

## `stablecoins` (type: `string`):

Stablecoin columns — circulating supply, peg type and mechanism, current price and supply changes. Rows of other types appear with these columns empty.

## `volumesAndFees` (type: `string`):

DEX, options and aggregator volume columns plus protocol fee and revenue columns across 24h, 7d and 30d windows. Rows of other types appear with these columns empty.

## `chainBreakdown` (type: `string`):

Columns for the per-blockchain TVL breakdown rows — the chain, its value locked and its share of the protocol total. Rows of other types appear with these columns empty.

## `history` (type: `string`):

Columns for the dated history rows — value locked over time for protocols and blockchains, APY and pool size over time for yield pools. Rows of other types appear with these columns empty.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "dataTypes": [
        "protocols",
        "chains"
    ],
    "chains": [],
    "categories": [],
    "sortBy": "default",
    "maxResultsPerDataset": 250,
    "includeHistory": false,
    "historyDays": 90,
    "includeChainBreakdown": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/defillama-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "dataTypes": [
        "protocols",
        "chains",
    ],
    "chains": [],
    "categories": [],
    "sortBy": "default",
    "maxResultsPerDataset": 250,
    "includeHistory": False,
    "historyDays": 90,
    "includeChainBreakdown": False,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/defillama-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "dataTypes": [
    "protocols",
    "chains"
  ],
  "chains": [],
  "categories": [],
  "sortBy": "default",
  "maxResultsPerDataset": 250,
  "includeHistory": false,
  "historyDays": 90,
  "includeChainBreakdown": false
}' |
apify call solidcode/defillama-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/defillama-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "DefiLlama Scraper",
        "description": "[💰 $40.25 / 1K] Extract DeFi market data from DefiLlama — 7,900+ protocols with TVL, 450+ chains, 16,000+ yield pools with APY, 400+ stablecoins, plus DEX volumes, fees and revenue. Filter by chain, category, TVL or APY, with optional daily history.",
        "version": "1.0",
        "x-build-id": "npeYOPTRAKBjqMDM3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~defillama-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-defillama-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~defillama-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-defillama-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~defillama-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-defillama-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "dataTypes": {
                        "title": "Datasets to collect",
                        "type": "array",
                        "description": "Pick one or more DefiLlama datasets. Each one is collected separately and the results are merged into a single table, with every row tagged by its type so you can filter or split them afterwards.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "protocols",
                                "chains",
                                "yields",
                                "stablecoins",
                                "dexVolumes",
                                "fees",
                                "revenue",
                                "optionsVolumes",
                                "dexAggregators"
                            ],
                            "enumTitles": [
                                "Protocols & TVL (7,900+ DeFi protocols)",
                                "Blockchains & TVL (450+ chains)",
                                "Yield pools & APY (16,000+ pools)",
                                "Stablecoins (400+ coins, supply & peg)",
                                "DEX trading volumes (1,200+ exchanges)",
                                "Protocol fees (2,400+ protocols)",
                                "Protocol revenue (2,100+ protocols)",
                                "Options trading volumes",
                                "DEX aggregator volumes"
                            ]
                        }
                    },
                    "searchTerm": {
                        "title": "Search by name",
                        "type": "string",
                        "description": "Keep only entries whose name, ticker symbol or project matches this text. Not case sensitive, and partial words work — 'aave' matches 'Aave V3'. Leave empty to keep everything."
                    },
                    "chains": {
                        "title": "Blockchains",
                        "type": "array",
                        "description": "Keep only entries on these blockchains, for example Ethereum, Base, Solana, Arbitrum, BSC, Polygon. Capitalisation does not matter, and common alternative names are understood — BSC also matches Binance, Gnosis also matches xDai, and Optimism also matches OP Mainnet. Leave empty to include every chain. Applies to protocols, yield pools, stablecoins, volumes, fees and revenue — and picks out those chains themselves in the Blockchains dataset.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categories": {
                        "title": "Categories",
                        "type": "array",
                        "description": "Keep only entries in these DefiLlama categories, for example Lending, Dexs, Liquid Staking, Restaking, CDP, Bridge, RWA, Yield, Derivatives. DefiLlama uses 101 categories in total. Leave empty to include every category. Applies to protocols, DEX volumes, fees, revenue, options and aggregators. Blockchains, stablecoins and yield pools have no category attached to them, so this filter is skipped for those three datasets and they come back unfiltered.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minTvlUsd": {
                        "title": "Minimum value locked (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include entries holding at least this much value, in US dollars. A good way to cut out dead or tiny projects — try 1000000 for $1M. Applies to protocol value locked, blockchain value locked, yield pool size and stablecoin circulating supply (converted to US dollars for coins pegged to other currencies, using DefiLlama's price; a coin pegged to another currency with no published price has no dollar figure to test, so it is left out when you set a minimum). DEX volume, fee, revenue, options and aggregator datasets measure turnover rather than a balance, so they have no value-locked figure and this filter is skipped for them — those datasets come back unfiltered. Leave empty for no minimum."
                    },
                    "minApy": {
                        "title": "Minimum APY (%)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Only include yield pools paying at least this annual percentage yield — enter 5 for 5%. Applies to the Yield pools dataset only; other datasets are unaffected. Leave empty for no minimum."
                    },
                    "sortBy": {
                        "title": "Rank results by",
                        "enum": [
                            "default",
                            "tvl",
                            "apy",
                            "volume24h",
                            "fees24h",
                            "change24h",
                            "change7d",
                            "name"
                        ],
                        "type": "string",
                        "description": "How results are ranked before the per-dataset limit below is applied — this is what decides which entries make it into your 'top N'. 'Headline metric' uses value locked for protocols, blockchains, yield pools and stablecoins, and 24-hour totals for volume, fee and revenue datasets. If a dataset does not have the metric you pick, it falls back to its headline metric — blockchains, for example, only carry value locked, so every other choice ranks them by that. Entries that are missing the metric you chose are ranked last rather than mixed in. Yield pools have no single name, so A to Z sorts them by project and pool symbol."
                    },
                    "maxResultsPerDataset": {
                        "title": "Maximum results per dataset",
                        "minimum": 0,
                        "type": "integer",
                        "description": "The most entries to return from each dataset you selected. Picking two datasets with a limit of 250 gives you up to 500 entries. Set to 0 for no limit — be aware the full yield pool list alone is over 16,000 entries. This limit counts entries only. The two optional add-ons below — the blockchain breakdown and the daily history — add extra rows on top of it rather than taking room away from it, and every extra row is charged. Before it collects them, the run tells you exactly how many extra rows each add-on will produce."
                    },
                    "includeHistory": {
                        "title": "Include daily history",
                        "type": "boolean",
                        "description": "Add daily historical rows for everything you collect: value-locked history for protocols and blockchains, and APY plus value-locked history for yield pools. Each entry gets its own set of dated rows. Not available for stablecoins, volumes, fees, revenue, options or aggregators. These dated rows are extras added on top of 'Maximum results per dataset' — you still get the full number of entries you asked for — and every one of them is charged, as a daily history row rather than as a result, which is much cheaper. There can be a great many of them: the total is roughly your entry count multiplied by the days setting below, the run announces the exact worst case before it starts collecting them, and the run's own maximum cost setting is what caps the spend. History for yield pools is served slowly by DefiLlama (a few seconds per pool), so the history stage stops after 30 minutes and finishes with whatever it has — every main result is already saved by then, and the run reports if history came back incomplete."
                    },
                    "historyDays": {
                        "title": "Days of history",
                        "minimum": 1,
                        "maximum": 3650,
                        "type": "integer",
                        "description": "How many of the most recent days of history to include for each entry, when history is turned on. Together with your entry limit this is what decides how many extra rows you get, and every extra row is charged as a daily history row. DefiLlama holds up to about 3,200 days, going back to 2017. Please keep this modest: 250 protocols with 365 days each produces over 91,000 extra rows on top of the 250 protocol rows. At the default of 90 days, the same 250 protocols add about 22,500 rows."
                    },
                    "includeChainBreakdown": {
                        "title": "Break protocol TVL down by blockchain",
                        "type": "boolean",
                        "description": "For protocols, add one extra row for every blockchain the protocol runs on, showing how much of its value sits on that chain and what share of the total it represents. These rows are extras added on top of 'Maximum results per dataset' — you still get the full number of protocols you asked for — and each one is charged as a result, so turning this on adds to your bill rather than replacing protocols. Most protocols run on a single chain, so this usually adds few rows, but the largest multi-chain protocols run on over 100. The run announces the exact number of extra rows before it collects them. If you filled in the Blockchains filter above, only those blockchains get a breakdown row, which keeps the extra count down. Each protocol is listed first and its breakdown follows it, largest chain first."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
