DefiLlama Scraper - DeFi TVL & Protocol Revenue avatar

DefiLlama Scraper - DeFi TVL & Protocol Revenue

Pricing

from $2.00 / 1,000 protocol rows

Go to Apify Store
DefiLlama Scraper - DeFi TVL & Protocol Revenue

DefiLlama Scraper - DeFi TVL & Protocol Revenue

Scrape DefiLlama DeFi protocol data, one row per protocol and chain: TVL, fees and revenue joined from a separate endpoint, period-over-period changes, and valuation multiples the source never calculates. Filter by category and minimum TVL. No API key.

Pricing

from $2.00 / 1,000 protocol rows

Rating

0.0

(0)

Developer

Tom Awake

Tom Awake

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

19 hours ago

Last modified

Share

What does DefiLlama Scraper do?

DeFi protocols as one row per chain, with revenue sitting next to the value locked, and the valuation multiples worked out.

DefiLlama publishes two things that do not talk to each other. /protocols gives value locked, but hides the per-chain split inside a nested object. /overview/fees gives fees and revenue, in a separate call, with no value locked. Putting them side by side takes a join nobody makes.

No API key. No account.


The four things this does that the source does not

1. It explodes the per-chain breakdown.

Gate is deployed on 128 chains. LayerZero V2 on 53. Uniswap V3 on 43. The source stacks all of it into one chainTvls object.

Unfolded, 8,271 protocols become 17,749 protocol-chain rows — and on the larger protocols the expansion runs 6.3×. Each row carries how much that chain holds and what share of the protocol it represents, down to four decimals where the share is marginal.

2. It throws out the chains that are not chains.

chainTvls mixes real chains with accounting aggregates. Across 644 distinct keys, 273 carry a hyphenEthereum-borrowed, Ethereum-staking, Ethereum-pool2 — and others are bare aggregates named staking or borrowed.

Treating those as chains double-counts value that is already in the per-chain figures. They are filtered out.

3. It joins revenue to value locked.

2,697 protocols report fees. Matched to the TVL dataset by slug: 93% join cleanly. From that join come the multiples analysts otherwise compute by hand:

ProtocolTVLAnnualised feesTVL / fees
PumpSwap$0.33B$650M×0.5
Meteora DLMM$0.19B$231M×0.8
Uniswap V4$1.14B$385M×3.0
Fraxtal$0.17B~$0M×101,252

Half a dollar of locked value per dollar of annual fees at one end; a hundred thousand at the other. That spread is the whole question, and no endpoint answers it.

4. It computes the changes.

The source returns total24h and total48hto24h side by side, total7d next to total14dto7d, and never subtracts them. feesChange24hPct, feesChange7dPct and feesChange30dPct do.


Field coverage

Measured on a 1,500-row run filtered to protocols reporting revenue.

FieldCoverage
protocol, category, chain, tvlTotal100%
tvlOnChain99.4%
tvlToAnnualFees99.3%
twitter99.9%
chainSharePct94.0%
feesChange7dPct93.3%
fees24h86.6%
ageYears83.4%
marketCap, mcapToTvl~24%

That last row matters: market cap is only present on 14.8% of all protocols, so mcapToAnnualFees is available on a minority. It is left empty rather than estimated. tvlToAnnualFees is the multiple that is actually available at scale.


What it is for

  • Protocol valuation. Sort by tvlToAnnualFees within a category. Comparable protocols with very different multiples is where the work starts.
  • Chain ecosystem analysis. Filter by chain and you get every protocol present, how much it holds there, and what share of itself that represents. Base and Solana look very different once you see who is actually deployed on them.
  • Concentration risk. A protocol at 93% on one chain (LayerZero V2 on Ethereum) and one spread across 33 (Beefy) are not the same asset.
  • Revenue momentum. feesChange7dPct across a category shows which business is actually growing, not which token is.
  • Due diligence. Age, audit count, parent protocol and token symbol, alongside the numbers.

Three dataset views ship with the Actor: Protocols by chain, Revenue & multiples and Protocol profile.


Limits

Stated plainly, because they affect what you can conclude.

  • TVL is not revenue, and neither is a valuation. These are the figures protocols report to DefiLlama through community-maintained adapters. Methodologies differ between protocols and change over time.
  • Market cap is mostly missing. 14.8% of protocols. Any ratio built on it covers a minority, and a selected one — protocols with a listed token.
  • Revenue is per protocol, not per chain. The fee figures repeat on every chain row of the same protocol. Summing fees24h across rows double-counts; only tvlOnChain is additive.
  • Categories are DefiLlama's own. 102 of them, some overlapping, and a CEX sitting in the same dataset as a DEX is a deliberate choice of theirs, not a classification we impose.
  • "Annualised" is arithmetic, not a forecast. Where the source does not provide annualized1y, it is 30-day fees × 365/30. For a protocol that launched last week, that number is meaningless — check ageYears.
  • Zero-TVL rows are off by default. A protocol deployed on a chain but holding nothing is a real signal, but it triples the row count.
  • This is not investment advice, and nothing here is a recommendation. It is public data, reshaped.

How much does it cost?

You pay per protocol row returned: $0.003 each, that is $3.00 per 1,000. There is no start fee, and subscription plans pay less per protocol row.

The example input below asks for up to 2,000 protocol rows, so it costs $6.00 at most.

If a run reaches the spending limit you set, the output stops at that limit and never goes past it. You are never charged for rows that were not delivered.

Use DefiLlama Scraper as an API

Call it from your own code with the Apify client, here in Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("DataIO/defillama-protocol-revenue-tvl").call(run_input={
'minTvlUsd': 100000000,
'withRevenueOnly': True,
'maxItems': 2000,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

It also works from JavaScript, Make, Zapier, n8n, and from AI agents through the Apify MCP server.

Other actors you might like

FAQ

The actor reads public data from its official source, without logging in and without bypassing any access control. What you do with the data, for example contacting people listed in it, is your responsibility under the laws that apply to you, such as GDPR in Europe.

Can I run it on a schedule?

Yes. Create a schedule in Apify Console, daily or weekly for example, and each run delivers a fresh dataset, which you can send by email, webhook or integration.

Can AI agents use it?

Yes. It is available through the Apify MCP server, and every input field is described in its input schema, so an agent can call it directly.

Source

DefiLlama's public API (/protocols, /overview/fees). No authentication. This Actor is not affiliated with DefiLlama; please credit them if you republish the data.