# Solana DeFi Scraper: TVL, Fees, Revenue & Yields (`confidential_marina/defillama-solana-protocols-scraper`) Actor

Export every Solana DeFi protocol from DefiLlama: Solana TVL, 1d/7d change, fees, revenue, DEX volume, top yield pools, category, links. Also Ethereum, Base, BSC & more. Free public API, no key.

- **URL**: https://apify.com/confidential_marina/defillama-solana-protocols-scraper.md
- **Developed by:** [Kaleb Holley](https://apify.com/confidential_marina) (community)
- **Categories:** Business, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Solana DeFi Scraper: TVL, Fees, Revenue & Yields (DefiLlama)

Export **every Solana DeFi protocol** tracked by [DefiLlama](https://defillama.com/chain/Solana) as clean, flat rows: **Solana TVL**, 1h / 1d / 7d TVL change, **fees and revenue** (24h / 7d / 30d / 1y / all-time), **DEX volume**, category, parent protocol, token symbol, website, X/Twitter, audits, and optionally the protocol's **top yield pools** with APY.

One run returns the full Solana DeFi landscape (~600 protocols, incl. fee-only apps like pump.fun and Axiom) in a few seconds. Ethereum, Base, BSC, Arbitrum, Hyperliquid L1, Sui, Tron, Avalanche, Polygon, Sonic and Aptos are supported too.

Data comes only from DefiLlama's **free, keyless public API** (`api.llama.fi`, `yields.llama.fi`). No login, no API key, no browser, no proxy.

### Why use it

- **One table instead of four dashboards.** DefiLlama splits TVL, fees, revenue, DEX volume and yields across separate pages and endpoints. This actor joins them per protocol by DefiLlama ID.
- **Chain-specific numbers.** TVL, fees, revenue and volume are the figures *on the chain you pick*, not the protocol's global total. `totalTvl` and `chainTvlSharePct` show how much of a multi-chain protocol lives on Solana.
- **Fee-only protocols included.** Launchpads, trading bots, wallets and MEV (pump.fun, Axiom, Jito MEV Tips …) earn fees with no TVL. They are included by default, so sorting by fees gives the real revenue leaderboard.
- **DeFi only by default.** CEX reserve wallets (Binance, OKX …) are excluded unless you turn that off.
- **Agent- and pipeline-friendly.** Stable field names, numbers rounded to cents, ISO timestamps. Schedule it hourly or daily for time series, or call it from an AI agent / MCP client to answer "what are the top Solana protocols by revenue right now?".

### Use cases

- Crypto research, investment memos and token due diligence
- Daily/hourly **Solana DeFi leaderboards** (TVL, fees, revenue) for newsletters, dashboards, Telegram/Discord bots
- **Yield farming scouts**: top pools per protocol with APY, base vs reward APY, IL risk and stablecoin flag
- Trading-agent and LLM/RAG context about the Solana ecosystem
- BD / partnership lead lists: every protocol with website, X handle, category and size

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `chain` | select | `Solana` | Solana, Ethereum, Base, Arbitrum, BSC, Hyperliquid L1, Tron, Sui, Avalanche, Polygon, Sonic, Aptos |
| `sort` | select | `tvl` | `tvl`, `fees24h`, `fees30d`, `revenue24h`, `revenue30d`, `dexVolume24h`, `tvlChange1d`, `tvlChange7d` (descending) |
| `maxItems` | integer | `100` | Max protocols to output |
| `categories` | string\[] | all | e.g. `Dexs`, `Lending`, `Liquid Staking`, `Derivatives`, `Yield`, `Launchpad`, `RWA` |
| `excludeCex` | boolean | `true` | Skip centralized-exchange reserve wallets |
| `search` | string | — | Name/slug contains, e.g. `jupiter` |
| `minTvlUsd` | integer | `0` | Minimum TVL on the chain |
| `includeFees` | boolean | `true` | Fees + revenue (24h/7d/30d/1y/all-time, % change) |
| `includeDexVolume` | boolean | `true` | DEX volume (24h/7d/30d, % change) |
| `includeFeeOnlyProtocols` | boolean | `true` | Add protocols with fees/volume but no TVL listing |
| `includeYields` | boolean | `false` | Attach yield pools from DefiLlama Yields |
| `maxYieldPoolsPerProtocol` | integer | `5` | Top pools (by TVL) per protocol in `topYieldPools` |

Top 50 Solana protocols by TVL with yields:

```json
{ "chain": "Solana", "sort": "tvl", "maxItems": 50, "includeYields": true }
```

Solana revenue leaderboard (24h):

```json
{ "chain": "Solana", "sort": "revenue24h", "maxItems": 25 }
```

Solana lending markets above $1M TVL:

```json
{ "chain": "Solana", "categories": ["Lending"], "minTvlUsd": 1000000, "maxItems": 50 }
```

### Sample: Solana by 24h fees (real run, 2026-10-15)

| # | Protocol | Category | Solana TVL | Fees 24h | Revenue 24h |
|---|---|---|---|---|---|
| 1 | PumpSwap | Dexs | $347.0M | $3,291,650 | $440,931 |
| 2 | pump.fun | Launchpad | — | $1,914,943 | $1,376,733 |
| 3 | Axiom | Trading App | — | $745,557 | $365,993 |
| 4 | Meteora DLMM | Dexs | $165.8M | $503,414 | $50,904 |
| 5 | Collector Crypt | Physical TCG | — | $457,160 | $457,160 |
| 6 | pump.fun Mobile App | Interface | — | $324,713 | $159,817 |
| 7 | Raydium AMM | Dexs | $1180.7M | $318,795 | $48,226 |
| 8 | GMX Solana | Derivatives | $26.7M | $274,961 | $272,211 |

### Output

One dataset item per protocol. Fields that don't apply are `null` (e.g. DEX volume for a lending market), so every row has the same columns.

```json
{
  "rank": 2,
  "name": "Kamino Lend",
  "slug": "kamino-lend",
  "defillamaId": "3770",
  "chain": "Solana",
  "category": "Lending",
  "parentProtocol": "parent#kamino-finance",
  "symbol": "KMNO",
  "url": "https://kamino.com/",
  "defillamaUrl": "https://defillama.com/protocol/kamino-lend",
  "twitter": "https://x.com/Kamino",
  "logo": "https://icons.llamao.fi/icons/protocols/kamino-lend",
  "description": "Kamino Lend (K-Lend) is a novel peer-to-pool borrowing primitive designed as foundational infrastructure to power comple…",
  "chains": [
    "Solana"
  ],
  "chainCount": 1,
  "chainTvl": 1312320209.77,
  "chainTvlStaking": null,
  "chainTvlBorrowed": 906046819.74,
  "chainTvlPool2": null,
  "totalTvl": 1312320209.77,
  "chainTvlSharePct": 100.0,
  "tvlChange1hPct": -0.42,
  "tvlChange1dPct": 0.17,
  "tvlChange7dPct": -3.52,
  "mcap": null,
  "audits": 2,
  "forkedFrom": [],
  "geckoId": null,
  "listedAt": "2023-11-10T11:25:28+00:00",
  "tvlMethodology": "TVL consists of deposits made to the protocol, and borrowed tokens are counted.…",
  "fees24h": 155408.0,
  "fees7d": 904911.0,
  "fees30d": 4738378.0,
  "fees1y": 61410653.0,
  "feesAllTime": 215748034.0,
  "feesChange1dPct": 0.0,
  "feesChange7dPct": 3.5,
  "feesChange1mPct": 10.33,
  "revenue24h": 20046.0,
  "revenue7d": 116951.0,
  "revenue30d": 612792.0,
  "revenue1y": 8788113.0,
  "revenueAllTime": 44224249.0,
  "revenueChange1dPct": 0.0,
  "revenueChange7dPct": 2.12,
  "revenueChange1mPct": 9.79,
  "feesMethodology": "Includes interest fees, liquidation fees and origination fees. All fees are aggregated by Allez Labs using the Kamino API",
  "dexVolume24h": null,
  "dexVolume7d": null,
  "dexVolume30d": null,
  "dexVolumeChange1dPct": null,
  "dexVolumeChange7dPct": null,
  "dexVolumeChange1mPct": null,
  "yieldPoolCount": 161,
  "yieldTvlUsd": 1425024316.0,
  "yieldMaxApy": 32.03,
  "topYieldPools": [
    {
      "pool": "1accaa9f-f4fa-4063-9502-1733ed8e4832",
      "symbol": "DSOL",
      "poolMeta": "SOL/BTC Market",
      "tvlUsd": 207470264.0,
      "apy": 0.0,
      "apyBase": 0.0,
      "apyReward": null,
      "apyMean30d": 0.0,
      "stablecoin": false,
      "ilRisk": "no",
      "exposure": "single",
      "outlier": false,
      "url": "https://defillama.com/yields/pool/1accaa9f-f4fa-4063-9502-1733ed8e4832"
    }
  ],
  "sortedBy": "tvl",
  "source": "DefiLlama",
  "fetchedAt": "2026-10-15T04:05:13.582965+00:00"
}
```

#### Field notes

- `chainTvl`, `chainTvlStaking`, `chainTvlBorrowed`, `chainTvlPool2`: TVL on the selected chain (DefiLlama's default TVL plus its separate staking / borrowed / pool2 buckets).
- `tvlChange1hPct` / `tvlChange1dPct` / `tvlChange7dPct`: DefiLlama's protocol-level TVL change (all chains).
- `fees*`, `revenue*`, `dexVolume*`: chain-specific totals in USD from DefiLlama's fees and DEX dashboards. `null` = not tracked by DefiLlama.
- `yield*` / `topYieldPools`: only when `includeYields` is on. `yieldMaxApy` ignores pools DefiLlama flags as outliers.
- `source: "DefiLlama"`: please credit DefiLlama when you publish this data.

### Pricing

Pay per event: a small flat fee per run plus a per-protocol fee. The full Solana list (~600 rows) costs about $1.

### Notes

- Only DefiLlama's documented free endpoints are used: `/protocols`, `/overview/fees/{chain}`, `/overview/dexs/{chain}` and `yields.llama.fi/pools`. That is 3–4 requests per run regardless of `maxItems`. Retries back off and honour `Retry-After`.
- Numbers are as reported by DefiLlama at run time. This actor does not compute or adjust them. Not financial advice.
- Not affiliated with DefiLlama.

# Actor input Schema

## `chain` (type: `string`):

Blockchain to export. TVL, fees, revenue, DEX volume and yields are all reported for this chain only.

## `sort` (type: `string`):

Ranking of the output (descending). Fee/revenue sorts automatically enable fees; the DEX sort enables DEX volume.

## `maxItems` (type: `integer`):

Maximum protocols to output (after filters and sorting). Solana has ~550 tracked protocols.

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

Only include these DefiLlama categories (case-insensitive), e.g. Dexs, Lending, Liquid Staking, Derivatives, Yield, Launchpad, RWA, Bridge, CDP, Prediction Market. Empty = all.

## `excludeCex` (type: `boolean`):

Skip CEX wallets (Binance, OKX, Bybit …) that DefiLlama tracks as reserves, so the list is DeFi only.

## `search` (type: `string`):

Only protocols whose name or slug contains this text, e.g. jupiter, raydium, kamino.

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

Drop protocols with less TVL on the selected chain. Note: fee-only protocols (no TVL) are removed when this is above 0.

## `includeFees` (type: `boolean`):

Add chain-level fees and revenue (24h / 7d / 30d / 1y / all-time, with % change) from DefiLlama's fees dashboard.

## `includeDexVolume` (type: `boolean`):

Add DEX trading volume (24h / 7d / 30d, with % change) for DEX protocols on the selected chain.

## `includeFeeOnlyProtocols` (type: `boolean`):

Also output protocols that earn fees or volume on the chain but have no TVL listing there (e.g. pump.fun, Axiom, trading bots, wallets).

## `includeYields` (type: `boolean`):

Attach each protocol's yield pools on the chain from DefiLlama Yields: pool count, pooled TVL, max APY and the top pools by TVL (APY, base/reward APY, IL risk, stablecoin flag).

## `maxYieldPoolsPerProtocol` (type: `integer`):

How many of each protocol's largest pools to list in topYieldPools (only when yield pools are included).

## Actor input object example

```json
{
  "chain": "Solana",
  "sort": "tvl",
  "maxItems": 50,
  "categories": [],
  "excludeCex": true,
  "minTvlUsd": 0,
  "includeFees": true,
  "includeDexVolume": true,
  "includeFeeOnlyProtocols": true,
  "includeYields": false,
  "maxYieldPoolsPerProtocol": 5
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "chain": "Solana",
    "sort": "tvl",
    "maxItems": 50,
    "categories": [],
    "search": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_marina/defillama-solana-protocols-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 = {
    "chain": "Solana",
    "sort": "tvl",
    "maxItems": 50,
    "categories": [],
    "search": "",
}

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

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

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

```

## CLI example

```bash
echo '{
  "chain": "Solana",
  "sort": "tvl",
  "maxItems": 50,
  "categories": [],
  "search": ""
}' |
apify call confidential_marina/defillama-solana-protocols-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_marina/defillama-solana-protocols-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2MzHsOZQymIkfgCBR/builds/l293bhzzOAWDkGWuh/openapi.json
