List lending markets
curl --request GET \
--url https://api.messari.io/metrics/v2/protocols/lending-markets \
--header 'X-Messari-API-Key: <api-key>'import requests
url = "https://api.messari.io/metrics/v2/protocols/lending-markets"
headers = {"X-Messari-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Messari-API-Key': '<api-key>'}};
fetch('https://api.messari.io/metrics/v2/protocols/lending-markets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.messari.io/metrics/v2/protocols/lending-markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Messari-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.messari.io/metrics/v2/protocols/lending-markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Messari-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.messari.io/metrics/v2/protocols/lending-markets")
.header("X-Messari-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/metrics/v2/protocols/lending-markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Messari-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"error": null,
"data": {
"data": [
{
"marketId": "aave_aave-v3_arbitrum_0x794a61358d6845594f94dc1db02a252b5b4814ad",
"marketName": "arbitrum-core",
"productSlug": "aave-v3",
"chain": "arbitrum",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v3_avalanche_c_0x794a61358d6845594f94dc1db02a252b5b4814ad",
"marketName": "avalanche_c-core",
"productSlug": "aave-v3",
"chain": "avalanche_c",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v2_avalanche_c_avalanche_c-v2",
"marketName": "avalanche_c-v2",
"productSlug": "aave-v2",
"chain": "avalanche_c",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v3_base_0xa238dd80c259a72e81d7e4664a9801593f98d1c5",
"marketName": "base-core",
"productSlug": "aave-v3",
"chain": "base",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v3_bnb_0x6807dc923806fe8fd134338eabca509979a7e0cb",
"marketName": "bnb-core",
"productSlug": "aave-v3",
"chain": "bnb",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
}
],
"metadata": {
"pageSize": 10,
"page": 1,
"totalRows": 23,
"totalPages": 3
}
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}Lending
List Lending Markets
Returns a paginated list of Blockworks Research lending markets, one row per individual pool, filterable by protocol, product and chain. The protocol object is the parent protocol, so its slug passes straight back as the protocol filter; the specific product (aave-v3 rather than aave) is the sibling productSlug field, which the product filter matches. Each marketId is a composite of parent slug, product slug, chain and market key, keyed on the pool address rather than the market name so that it survives an upstream rename.
GET
/
metrics
/
v2
/
protocols
/
lending-markets
List lending markets
curl --request GET \
--url https://api.messari.io/metrics/v2/protocols/lending-markets \
--header 'X-Messari-API-Key: <api-key>'import requests
url = "https://api.messari.io/metrics/v2/protocols/lending-markets"
headers = {"X-Messari-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Messari-API-Key': '<api-key>'}};
fetch('https://api.messari.io/metrics/v2/protocols/lending-markets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.messari.io/metrics/v2/protocols/lending-markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Messari-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.messari.io/metrics/v2/protocols/lending-markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Messari-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.messari.io/metrics/v2/protocols/lending-markets")
.header("X-Messari-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/metrics/v2/protocols/lending-markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Messari-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"error": null,
"data": {
"data": [
{
"marketId": "aave_aave-v3_arbitrum_0x794a61358d6845594f94dc1db02a252b5b4814ad",
"marketName": "arbitrum-core",
"productSlug": "aave-v3",
"chain": "arbitrum",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v3_avalanche_c_0x794a61358d6845594f94dc1db02a252b5b4814ad",
"marketName": "avalanche_c-core",
"productSlug": "aave-v3",
"chain": "avalanche_c",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v2_avalanche_c_avalanche_c-v2",
"marketName": "avalanche_c-v2",
"productSlug": "aave-v2",
"chain": "avalanche_c",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v3_base_0xa238dd80c259a72e81d7e4664a9801593f98d1c5",
"marketName": "base-core",
"productSlug": "aave-v3",
"chain": "base",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
},
{
"marketId": "aave_aave-v3_bnb_0x6807dc923806fe8fd134338eabca509979a7e0cb",
"marketName": "bnb-core",
"productSlug": "aave-v3",
"chain": "bnb",
"protocol": {
"id": "675b85dc-85a1-4096-9600-212e90a56e9a",
"name": "Aave",
"slug": "aave"
}
}
],
"metadata": {
"pageSize": 10,
"page": 1,
"totalRows": 23,
"totalPages": 3
}
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}Authorizations
Query Parameters
Page number (1-indexed)
Example:
1
Page size limit
Example:
10
Filter to a parent protocol slug
Example:
"aave"
Filter to a Blockworks Research product slug
Example:
"aave-v3"
Filter to a Blockworks Research chain slug
Example:
"ethereum"
⌘I

