Welcome to DePIN Pulse API!
We turn the raw onchain and offchain data produced by Decentralized Physical Infrastructure Networks (DePINs) into transparent, standardized metrics enabling developers and researchers to track and benchmark DePIN projects and power their own custom dashboards and analyses.
The DePIN Pulse API is a free, public tool built by EV3 Labs:
- For a production API key, reach out to founders@ev3.xyz.
- To add a new project, see the add project section.
- To report a data error, reach out to us on telegram.
We are currently focused on providing verified onchain revenue data for DePINs. See our data in action at DePIN Pulse or on Chakra. Onchain revenue data is refreshed every 24 hours.
- Get an API key by emailing us at pulse@ev3.xyz.
- Call
GET /external-access/revenue(see examples below). - Receive JSON with project‑level revenue snapshots you can drop into Excel, Grafana, or your own app.
Every request must include your API key. Keys are rate‑limited to 60 requests per minute.
DePINs are decentralized marketplaces for providing useful real-world services such as energy, bandwidth and compute, coordinated by smart contracts. Onchain revenues aims to measure the amount of paid demand for the core service offered by each protocol. For more a more in-depth discussion on the nature of DePIN onchain revenues, see EV3's Q1'2025 Investor Letter.
The DePIN Pulse API tracks three types of revenue metrics. By default, the API returns gross revenues:
| Type | Description |
|---|---|
| Recurring revenue | The amount paid by customers to use the network’s core service, e.g. wireless data transfer, data storage, data sales, renewable energy, or compute. |
| One-time revenue | Represents any source of revenue which is not related to the network’s core service, e.g. staking or unstaking fees, onboarding or relocation fees, and slashing penalties. |
| Total Annualized revenue (TAR) | Represents the sum of the last thirty days' onchain revenues, both recurring and one-time, multiplied by twelve. |
| Annualized Recurring revenue (ARR) | Represents the sum of the last thirty days’ onchain revenues, weighted at 100% for recurring revenues and 50% for one-time revenues, multiplied by twelve. |
There is often ambiguity as to the source and amount of onchain revenues. Some DePINs claim to dedicate a fixed percentage of offchain company revenues to token buybacks, however this percentage cannot be verified onchain. Other DePINs use pre-mined tokens to pay for network services on behalf of B2B clients, effectively allowing the company to exit their token position indirectly rather than conduct open-market purchases that benefit all tokenholders.
To increase transparency we've added two fields to the standard API response, revenueSource and warning-text, which provides a link to the underlying datasource as well as notable shortcomings in data transparency or verification for the specific project.
Retrieve live and historical revenue data with GET /external-access/revenue.
curl -H "x-api-key: $YOUR_API_KEY" "https://api.depin.ninja/external-access/revenue"
This will return a JSON with the following columns:
| Field | Type | Description |
|---|---|---|
projectId |
string | Unique six-digit alphanumeric identifier. |
projectName |
string | Project name, case-insensitive fuzzy match. |
category |
enum | Compute, energy, wireless, bandwidth, logistics, sensors, or human capital. |
chain |
enum | The blockchain where a project's smart contracts are deployed. |
revenueType |
enum | Gross, net or unverified revenues (gross by default). |
mrr |
integer | Represents trailing 30-day revenues in USD terms. |
arr |
integer | Represents annualized revenues, i.e. mrr multiplied by 12 months. |
revenueData |
array | Array with daily revenue data for the requested time period. |
revenueSource |
string | URL of the underlying data source (e.g., Dune query). |
warning-text |
string | Warnings around revenue data transparency or verification concerns. |
updatedAt |
date | Revenue data is refreshed daily at 00:05 UTC. |
The following parameters can be passed to refine the output:
| Parameter | Type | Default | Description |
|---|---|---|---|
page |
integer | 1 |
Pagination index. |
limit |
integer | 10 |
Items per page; capped at 100. |
sortField |
string | mrr |
Rank by projectName, projectId, or mrr. |
sortOrder |
string | desc |
Rank by asc vs desc order. |
revenueType |
string | gross |
Toggle gross vs net vs unverified revenue. |
requestType |
string | byProject |
Stratify revenues byProject vs byCategory vs byChain. |
projectId |
string | — | Only return one project; useful for cron jobs. |
projectName |
string | — | Case‑insensitive fuzzy match. |
getRevenueHistoricalData |
boolean | false |
true adds chart‑ready array for 90-day revenues. |
To pull the most recently-updated revenue data for all projects:
curl -H "x-api-key: $API_KEY" \
"https://api.depin.ninja/external-access/revenue/latest"
To pull revenues for a certain date, pass in the date field in yyyy-mm-dd format. For example, to pull revenues for the entire DePIN sector on April 19, 2025:
curl -H "x-api-key: $API_KEY" \
"https://api.depin.ninja/external-access/revenue/2025-04-19"Example 200 Response
To pull net revenues for Helium the last 90 days in chart-friendly format:
curl -H "x-api-key: $API_KEY" \
"https://api.depin.ninja/external-access/revenue?projectName=helium&revenueType=net&getRevenueHistoricalData=true"
To pull revenues for projects with unverified (offchain) revenues, ranked from low to high:
curl -H "x-api-key: $API_KEY" \
"https://api.depin.ninja/external-access/revenue?revenueType=unverified&sortField=mrr&sortOrder=asc"
To compare the net revenues of the DePIN ecosystem across different blockchains on April 19, 2025:
curl -H "x-api-key: $API_KEY" \
"https://api.depin.ninja/external-access/revenue/2025-04-19?revenueType=net&requestType=byChain"
To pull warning text for a specific project:
curl -X 'GET' \
'apiURL/projects/:id/warning-text' \
-H 'accept: application/json'
To pull warning text for all projects:
curl -X 'GET' \
'apiURL/projects/with-warning-text' \
-H 'accept: application/json'To add a new project to DePIN.Ninja, please email us at pulse@ev3.xyz with the following information:
- Link to a public Dune query tracking the protocol's daily recurring revenues.
- Link to a public Dune query tracking the protocol's daily one-time revenues.
We will inspect the queries and follow-up with questions if necessary. Project data typically goes live on the API within 1-2 weeks.
| HTTP | Code string | When it happens | Tip |
|---|---|---|---|
| 400 | http-400 |
Missing or invalid parameters. | Check spelling & types. |
| 401 | http-401 |
Missing or bad API key. | Verify the x-api-key header. |
| 404 | http-404 |
Unknown project or date. | Confirm projectId or date exists. |
| 500 | http-500 |
Something went wrong server‑side. | Wait a moment & retry. |
Example Error response
{
"status": "error",
"code": "http-401",
"message": "Invalid API key."
}| Date | Change |
|---|---|
| 2025‑04‑18 | First public release. |
See MIT LICENSE. Commercial usage is permitted, but please attribute DePIN.Ninja whenever you display our data.
Need help, spot a bug, or want a higher rate limit? Ping us at ninja@ev3.xyz or reach out on Telegram.
{"totalRevenue":92645.79955488985, "breakDown":[{ "name":"Althea","revenue":365.6336856858585},{ "name":"Arkreen","revenue":0.34560796491746637},{ "name":"Filecoin","revenue":39063.3857344671},{ "name":"Helium","revenue":4683.05896},{ "name":"Hivemapper","revenue":0.0022781750156353553},{ "name":"IO.Net","revenue":40122.647946221274},{ "name":"Livepeer","revenue":185.8753423756818},{ "name":"NodeOps","revenue":7922.6},{ "name":"PAAL AI","revenue":0},{ "name":"Puffpaw","revenue":302.25},{ }