Get All ETF Providers Time Series
curl --request GET \
--url https://api.messari.io/metrics/v2/protocols/etfs/time-series/{granularity} \
--header 'X-Messari-API-Key: <api-key>'import requests
url = "https://api.messari.io/metrics/v2/protocols/etfs/time-series/{granularity}"
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/etfs/time-series/{granularity}', 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/etfs/time-series/{granularity}",
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/etfs/time-series/{granularity}"
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/etfs/time-series/{granularity}")
.header("X-Messari-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/metrics/v2/protocols/etfs/time-series/{granularity}")
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": [
{
"provider": {
"id": "21shares",
"slug": "21shares",
"name": "21Shares"
},
"points": [
[
1779926400,
5491070284,
-12857858,
73,
0.009332801646798224,
0.6306379701768173,
0.997662783877053,
-211637056,
0.1819180546015759
],
[
1780012800,
5506995524,
3472147,
73,
0.009353502862189724,
0.6287018236915495,
0.9971358727401791,
-250988687,
0.185345861514685
],
[
1780272000,
5417290721,
2771058,
73,
0.009414303984406748,
0.6218617830386881,
0.9967329680256235,
-212646014.00000003,
0.1660374715712688
],
[
1780358400,
5157471208,
-10209643,
73,
0.00958178253339461,
0.612891285189701,
0.9969369364630682,
-222855657,
0.1101129691573621
],
[
1780444800,
5027090390.000001,
-25002386,
73,
0.009566590484361672,
0.6130858967904892,
0.9972746575181434,
-338050858,
0.0820493249499768
]
]
},
{
"provider": {
"id": "3iq",
"slug": "3iq",
"name": "3iQ"
},
"points": [
[
1779926400,
373371547,
-196560,
4,
0.010337842760417949,
0.45736786954470315,
1,
-176699,
0.10909221637156744
],
[
1780012800,
372640482,
148564,
4,
0.010350164030756058,
0.4583574202225297,
1,
135945,
0.10692060338263853
],
[
1780272000,
366230108,
654594,
4,
0.01031106170741156,
0.4538086912286305,
1,
803290,
0.08787872414851823
],
[
1780358400,
343595392,
-338296,
4,
0.010334192010933605,
0.45361944202092214,
1,
464994,
0.020642783067606193
],
[
1780444800,
334761249.00000006,
0,
4,
0.01034556726247607,
0.456467352348778,
1,
464994,
-0.005598850282171709
]
]
},
{
"provider": {
"id": "amina-bank",
"slug": "amina-bank",
"name": "AMINA Bank"
},
"points": [
[
1779926400,
55753590,
0,
5,
0.009884328928415193,
0.7041589250127211,
1,
-3866196,
0.2422877005193409
],
[
1780012800,
53149864,
0,
5,
0.009939446223230222,
0.6987467362098989,
1,
-3866196,
0.1842721218754827
],
[
1780272000,
52039936,
0,
5,
0.009937248865947875,
0.6973355040252164,
1,
-3855600,
0.1595409807442654
],
[
1780358400,
50435994,
0,
5,
0.009948766400836672,
0.6911840579567046,
1,
-3855600,
0.1238023418701338
],
[
1780444800,
48782519,
0,
5,
0.009950856525059722,
0.6922561133015702,
1,
-3855600,
0.0869600209430649
]
]
},
{
"provider": {
"id": "alphabit-investments",
"slug": "alphabit-investments",
"name": "AlphaBit Investments"
},
"points": [
[
1779926400,
9762075,
0,
1,
0.0104,
0,
1,
0,
0.0870066292196762
],
[
1780012800,
9714015,
0,
1,
0.0104,
0,
1,
0,
0.0816551502973879
],
[
1780272000,
9791370,
0,
1,
0.0104,
0,
1,
0,
0.0902686262032059
],
[
1780358400,
9677205,
0,
1,
0.0104,
0,
1,
0,
0.0775563583887439
],
[
1780444800,
9591030,
0,
1,
0.0104,
0,
1,
0,
0.0679607758642288
]
]
},
{
"provider": {
"id": "amplify-etfs",
"slug": "amplify-etfs",
"name": "Amplify ETFs"
},
"points": [
[
1779926400,
47199126.00000001,
0,
6,
0.006923609623618878,
0.576390376381122,
0,
5549098,
0.156692144263159
],
[
1780012800,
47797622,
492150,
6,
0.006929741797614953,
0.5702582023850475,
0,
6041248,
0.1713592722428789
],
[
1780272000,
46748428,
0,
6,
0.006935531500652813,
0.5644684993471866,
0,
5625970,
0.14564704914773
],
[
1780358400,
44707842,
838653,
6,
0.006927521641505309,
0.572478358494691,
0,
6464623,
0.0956391359526132
],
[
1780444800,
43498305,
174080,
6,
0.0069277007345458635,
0.5722992654541367,
0,
6638703,
0.0659974441531585
]
]
}
],
"metadata": {
"pointSchemas": [
{
"name": "Timestamp",
"slug": "time",
"description": "Timestamp of the data point.",
"is_timestamp": true
},
{
"name": "AUM (USD)",
"slug": "aum-usd",
"description": "Assets under management across the provider's crypto ETF products in USD. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Flow (USD)",
"slug": "flow-usd",
"description": "Daily net flow across the provider's crypto ETF products in USD. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Product Count",
"slug": "num-products",
"description": "Number of active products with positive AUM. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Weighted Expense Ratio",
"slug": "weighted-aum-expense-ratio",
"description": "AUM-weighted average expense ratio. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Bitcoin AUM Share",
"slug": "bitcoin-aum-perc",
"description": "Share of AUM in bitcoin products (0-1). Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Spot AUM Share",
"slug": "spot-aum-perc",
"description": "Share of AUM in delta-one (spot) products (0-1). Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Rolling 30d Flow (USD)",
"slug": "rolling-30d-flow-usd",
"description": "Rolling 30-day net flow in USD. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "AUM 30d Change",
"slug": "aum-30d-change-perc",
"description": "AUM change versus 30 days ago as a ratio. Sourced from Blockworks Research.",
"is_timestamp": false
}
],
"granularity": "1d"
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}ETFs
Get All ETF Providers Time Series
Returns one time series per ETF issuer, for every issuer the provider listing serves, in a single response. Use this instead of calling the per-issuer endpoint once for each issuer. Every provider metric and the full history are returned by default; narrow start and end to limit the response size. An issuer with no data in the window is still present, with an empty points array.
GET
/
metrics
/
v2
/
protocols
/
etfs
/
time-series
/
{granularity}
Get All ETF Providers Time Series
curl --request GET \
--url https://api.messari.io/metrics/v2/protocols/etfs/time-series/{granularity} \
--header 'X-Messari-API-Key: <api-key>'import requests
url = "https://api.messari.io/metrics/v2/protocols/etfs/time-series/{granularity}"
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/etfs/time-series/{granularity}', 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/etfs/time-series/{granularity}",
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/etfs/time-series/{granularity}"
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/etfs/time-series/{granularity}")
.header("X-Messari-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/metrics/v2/protocols/etfs/time-series/{granularity}")
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": [
{
"provider": {
"id": "21shares",
"slug": "21shares",
"name": "21Shares"
},
"points": [
[
1779926400,
5491070284,
-12857858,
73,
0.009332801646798224,
0.6306379701768173,
0.997662783877053,
-211637056,
0.1819180546015759
],
[
1780012800,
5506995524,
3472147,
73,
0.009353502862189724,
0.6287018236915495,
0.9971358727401791,
-250988687,
0.185345861514685
],
[
1780272000,
5417290721,
2771058,
73,
0.009414303984406748,
0.6218617830386881,
0.9967329680256235,
-212646014.00000003,
0.1660374715712688
],
[
1780358400,
5157471208,
-10209643,
73,
0.00958178253339461,
0.612891285189701,
0.9969369364630682,
-222855657,
0.1101129691573621
],
[
1780444800,
5027090390.000001,
-25002386,
73,
0.009566590484361672,
0.6130858967904892,
0.9972746575181434,
-338050858,
0.0820493249499768
]
]
},
{
"provider": {
"id": "3iq",
"slug": "3iq",
"name": "3iQ"
},
"points": [
[
1779926400,
373371547,
-196560,
4,
0.010337842760417949,
0.45736786954470315,
1,
-176699,
0.10909221637156744
],
[
1780012800,
372640482,
148564,
4,
0.010350164030756058,
0.4583574202225297,
1,
135945,
0.10692060338263853
],
[
1780272000,
366230108,
654594,
4,
0.01031106170741156,
0.4538086912286305,
1,
803290,
0.08787872414851823
],
[
1780358400,
343595392,
-338296,
4,
0.010334192010933605,
0.45361944202092214,
1,
464994,
0.020642783067606193
],
[
1780444800,
334761249.00000006,
0,
4,
0.01034556726247607,
0.456467352348778,
1,
464994,
-0.005598850282171709
]
]
},
{
"provider": {
"id": "amina-bank",
"slug": "amina-bank",
"name": "AMINA Bank"
},
"points": [
[
1779926400,
55753590,
0,
5,
0.009884328928415193,
0.7041589250127211,
1,
-3866196,
0.2422877005193409
],
[
1780012800,
53149864,
0,
5,
0.009939446223230222,
0.6987467362098989,
1,
-3866196,
0.1842721218754827
],
[
1780272000,
52039936,
0,
5,
0.009937248865947875,
0.6973355040252164,
1,
-3855600,
0.1595409807442654
],
[
1780358400,
50435994,
0,
5,
0.009948766400836672,
0.6911840579567046,
1,
-3855600,
0.1238023418701338
],
[
1780444800,
48782519,
0,
5,
0.009950856525059722,
0.6922561133015702,
1,
-3855600,
0.0869600209430649
]
]
},
{
"provider": {
"id": "alphabit-investments",
"slug": "alphabit-investments",
"name": "AlphaBit Investments"
},
"points": [
[
1779926400,
9762075,
0,
1,
0.0104,
0,
1,
0,
0.0870066292196762
],
[
1780012800,
9714015,
0,
1,
0.0104,
0,
1,
0,
0.0816551502973879
],
[
1780272000,
9791370,
0,
1,
0.0104,
0,
1,
0,
0.0902686262032059
],
[
1780358400,
9677205,
0,
1,
0.0104,
0,
1,
0,
0.0775563583887439
],
[
1780444800,
9591030,
0,
1,
0.0104,
0,
1,
0,
0.0679607758642288
]
]
},
{
"provider": {
"id": "amplify-etfs",
"slug": "amplify-etfs",
"name": "Amplify ETFs"
},
"points": [
[
1779926400,
47199126.00000001,
0,
6,
0.006923609623618878,
0.576390376381122,
0,
5549098,
0.156692144263159
],
[
1780012800,
47797622,
492150,
6,
0.006929741797614953,
0.5702582023850475,
0,
6041248,
0.1713592722428789
],
[
1780272000,
46748428,
0,
6,
0.006935531500652813,
0.5644684993471866,
0,
5625970,
0.14564704914773
],
[
1780358400,
44707842,
838653,
6,
0.006927521641505309,
0.572478358494691,
0,
6464623,
0.0956391359526132
],
[
1780444800,
43498305,
174080,
6,
0.0069277007345458635,
0.5722992654541367,
0,
6638703,
0.0659974441531585
]
]
}
],
"metadata": {
"pointSchemas": [
{
"name": "Timestamp",
"slug": "time",
"description": "Timestamp of the data point.",
"is_timestamp": true
},
{
"name": "AUM (USD)",
"slug": "aum-usd",
"description": "Assets under management across the provider's crypto ETF products in USD. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Flow (USD)",
"slug": "flow-usd",
"description": "Daily net flow across the provider's crypto ETF products in USD. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Product Count",
"slug": "num-products",
"description": "Number of active products with positive AUM. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Weighted Expense Ratio",
"slug": "weighted-aum-expense-ratio",
"description": "AUM-weighted average expense ratio. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Bitcoin AUM Share",
"slug": "bitcoin-aum-perc",
"description": "Share of AUM in bitcoin products (0-1). Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Spot AUM Share",
"slug": "spot-aum-perc",
"description": "Share of AUM in delta-one (spot) products (0-1). Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "Rolling 30d Flow (USD)",
"slug": "rolling-30d-flow-usd",
"description": "Rolling 30-day net flow in USD. Sourced from Blockworks Research.",
"is_timestamp": false
},
{
"name": "AUM 30d Change",
"slug": "aum-30d-change-perc",
"description": "AUM change versus 30 days ago as a ratio. Sourced from Blockworks Research.",
"is_timestamp": false
}
],
"granularity": "1d"
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}Authorizations
Path Parameters
Granularity
Available options:
1d Example:
"1d"
Query Parameters
Time range start
Example:
"2026-08-01T00:00:00Z"
Time range end
Example:
"2026-08-21T00:00:00Z"
⌘I

