All pages
Powered by GitBook
1 of 11

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Kaiko Market Explorer

Explore market dynamics of assets and exchanges, including trading volumes, market depth, token metrics, and both on-chain and off-chain transaction data.

Assets

  • Market Explorer [Assets + Exchanges]

  • Market Explorer [Full Coverage]

What is this endpoint for?

This endpoint receives information on the trades involving a particular asset. Information includes volumes, trade counts, liquidity, and supply. All information is broken down by exchange. Trade data is aggregated across all instruments that include the specified token as a base or quote asset, whereas liquidity data is aggregated for the base asset only.

Endpoint

https://us.market-api.kaiko.io/v2/data/analytics.v2/asset_metrics

Parameters

Parameter
Required
Description
Example

asset

Field
Category
Description
Example

Information from this endpoint can be accessed through Google BigQuery. To get started, read our .

Yes

The desired asset code. See

agix

start_time

Yes

Starting time in ISO 8601 (inclusive).

2023-01-25T00:00:00.000Z

end_time

Yes

Ending time in ISO 8601 (exclusive).

2023-01-26T00:00:00.000Z

interval

Yes

The interval parameter is suffixed with h or d to specify hours or days, respectively. Any arbitrary value between one second and one day can be used, as long as it sums up to a maximum of 1 day. The suffixes are h (hour) and d (day). Default: 1h.

1h

sources

No

boolean. If true, returns trading information and market depths detailed by exchanges as well as main holders. Default: false

page_size

No

See Minimum: 1 Maximum: 100

Default: 10

100

timestamp

Trading activity

Timestamp at which the interval begins.

2023-01-25T00:00:00.000Z

curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/analytics.v2/asset_metrics?interval=1d&asset=agix&start_time=2023-01-25T00:00:00.000Z&end_time=2023-01-26T00:00:00.000Z&page_size=100&sources=true'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/analytics.v2/asset_metrics"
# Start of mandatory parameter configuration
mandatory_params = {
    "asset": "agix",
    "start_time": "2024-08-27T13:13:53.441Z",
    "end_time" : "2024-09-27T13:27:53.441Z",
    "interval" : "1d",
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    "sources": "false",
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
{
    "data": [
        {
            "timestamp": "2023-01-25T00:00:00.000Z",
            "price": 0.1699233217119519,
            "total_volume_usd": 30508181.43789653,
            "total_volume_asset": 179540872.49784896,
            "total_trade_count": 159684,
            "off_chain_liquidity_data": {
                "total_off_chain_volume_usd": 30038710.382665947,
                "total_off_chain_volume_asset": 176778031.87949985,
                "total_off_chain_trade_count": 159115,
                "trade_data": [
                    {
                        "exchange": "binc",
                        "volume_usd": 27539301.29722444,
                        "volume_asset": 162068991,
                        "trade_count": 125188
                    },
                    /* ... */
                ],
                "buy_market_depths": [
                    {
                        "exchange": "binc",
                        "volume_assets": {
                            /* ... */
                        },
                        "volume_usds": {
                            /* ... */
                        }
                    }, 
                    /* ... */
                ],
                "sell_market_depths": [
                    {
                        "exchange": "binc",
                        "volume_assets": {
                           /* ... */
                        },
                        "volume_usds": {
                           /* ... */
                        }
                    }, 
                    /* ... */
                ],
                "total_buy_market_depth": {
                    "volume_assets": {
                       /* ... */
                    },
                    "volume_usds": {
                       /* ... */
                    }
                },
                "total_sell_market_depth": {
                    "volume_assets": {
                       /* ... */
                    },
                    "volume_usds": {
                       /* ... */
                    }
                }
            },
            "on_chain_liquidity_data": {
                "total_on_chain_volume_usd": 2762840.6183491,
                "total_on_chain_volume_asset": 2762840.6183491,
                "total_on_chain_trade_count": 569,
                "trades_data": [
                    {
                        "exchange": "usp2",
                        "volume_usd": 327680.4492221988,
                        "volume_asset": 1928401.8575017697,
                        "trade_count": 448
                    },
                    /* ... */
                ],
                "token_information": [
                    {
                        "blockchain": "ethereum",
                        "token_address": "0x5B7533812759B45C2B44C19e320ba2cD2681b542",
                        "nb_of_holders": 38231,
                        "main_holders": [
                            {
                                "address": "0xf977814e90da44bfa03b6295a0616a897441acec",
                                "amount": 250774980,
                                "percentage": 22.61839
                            },
                            {
                                "address": "0x13e1367a455c45aa736d7ff2c5656ba2bd05ad46",
                                "amount": 112149660,
                                "percentage": 10.11522
                            }, 
                            /* ... */
                        ],
                        "total_supply": 1108721700
                    }
                ]
            }
        }
    ]
}

Fields

For any field in the "token information" category, we only cover ERC-20 tokens. Only 50 tokens have been backfilled, but we can add more on demand.

Request examples

Response example

This data is included in the following Kaiko packages:

price

Trading activity

Average price in usd. null when no trades are reported.

0.1699233217119519

total_volume_usd

Trading activity

Total volume in usd traded in the interval. 0 when no trades are reported.

30508181.43789653

total_volume_asset

Trading activity

Total volume in number of assets traded in the interval. 0 when no trades are reported.

179540872.49784896

total_trade_count

Trading activity

The total amount of trades reported during the interval. 0 when no trades are reported.

159684

total_off_chain_volume_usd

Trading activity

Total off-chain volume in usd traded in the interval. 0 when no trades are reported.

30038710.382665947

total_off_chain_volume_asset

Trading activity

Total off-chain volume in number of assets traded in the interval. 0 when no trades are reported.

176778031.87949985

total_off_chain_trade_count

Trading activity

The total amount of trades reported off-chain during the interval. 0 when no trades are reported.

159115

trades_data

Trading activity

List of volume in usd, volume in number of assets and total amount of trades by centralized exchange.

[{"exchange": "binc", "volume_usd": 27539301.29722444, "volume_asset": 162068991, "trade_count": 125188}, ...]

total_on_chain_volume_usd

Trading activity

Total on-chain volume in usd traded in the interval. 0 when no trades are reported.

1036710779.1918713

total_on_chain_volume_asset

Trading activity

Total on-chain volume in number of assets traded in the interval. 0 when no trades are reported.

1036710779.1918713

total_on_chain_trade_count

Trading activity

The total amount of trades reported on-chain during the interval. 0 when no trades are reported.

20513

trades_data

Trading activity

List of volume in usd, volume in number of assets and total amount of trades by decentralized exchange.

[{'exchange': 'blc2', 'volume_usd': 673716.6525764248, 'volume_asset': 674153.2032810001, 'trade_count': 129}, ...]

market_depth

Liquidity information

Dictionary from 0.1% to 10% market depth. Base asset aggregation only.

blockchain

Token information

Blockchain name.

ethereum

token_address

Token information

Token address.

0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

number_of_holders

Token information

Total amount of holders.

1622286

main_holders

Token information

List of addesses holding at least 1% of the total supply and the amounts of tokens.

[{'address': '0x0a59649758aa4d66e25f08dd01271e891fe52199', 'amount': 3262712000, 'percentage': 7.91745}, ...]

total_supply

Token information

Blockchain total supply.

0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

Pagination

Supply and Market Cap

Kaiko's Supply and Market Cap Data covers circulating supply metrics for crypto assets through normalized API endpoints.

Supply

  • Market Explorer [Supply and Market Cap]

  • Market Explorer [Full Coverage]

What is this endpoint for?

This endpoint receives information on the supply of each asset, including circulating supply and market capitalization.

Supply data is provided as:

  • An aggregated supply value derived from all blockchains on which the asset is deployed.

  • A blockchain-specific supply value for each chain

Data is provided at 5-minute intervals.

Read our supply and market cap methodology .

Parameter
Required
Description
Example
Field
Description
Example

Aggregated Supply

  • Market Explorer [Supply and Market Cap]

  • Market Explorer [Full Coverage]

What is this endpoint for?

This endpoint aggregates from the Supply endpoint to provide an aggregated view of supply and market capitalization.

Data can be aggregated between 5-minute and 30-day intervals; the aggregation considers each 5-minute interval from the raw supply data that falls between the start_time and end_time configured.

Read our supply and market cap methodology here.

Endpoint

https://us.market-api.kaiko.io/v2/data/supply.v2/aggregated/{asset}

Parameters

Parameter
Required
Description
Example
Field
Description
Example

Stablecoins

  • Kaiko Market Explorer [Assets & Exchanges]

What is this endpoint for?

This endpoint receives information on the trades involving a particular stablecoin. Information includes volumes, trade counts, liquidity, supply and lending rates. Trade and liquidity data are aggregated across all instruments that include the specified token as a base or quote asset.

Endpoint

https://us.market-api.kaiko.io/v2/data/analytics.v2/stablecoin_metrics

Parameters

Parameter
Required
Description
Example

asset

Yes

Field
Category
Description
Example

Yes

Starting time in ISO 8601 (inclusive).

2023-01-25T00:00:00.000Z

end_time

Yes

Ending time in ISO 8601 (exclusive).

2023-01-26T00:00:00.000Z

sources

No

boolean. If true, returns the breakdown by blockchain of the supply. Default: false

true

page_size

No

See Minimum: 1 Maximum: 100

Default: 10

100

circulating_supply

Total circulating supply

1.99478e+07

market_cap

Market capitalisation

2.09489e+12

sources

The per-blockchain breakdown of the supply

  • chain

The blockchain name

Bitcoin

  • circulating_supply

Circulating supply

19947806.25

  • excluded_supply

Excluded supply for the specific chain

0

  • total_supply

The total supply for the specific chain

19947806.25

asset

Yes

The desired asset code. See

agix

timestamp

Timestamp at which the interval begins

2023-01-25T00:00:00.000Z

asset

Asset

Endpoint

Parameters

Fields

Request examples

Response example

This data is included in the following Kaiko packages:

here

start_time

btc

interval

Informations

The aggregation interval.

1d

asset

Informations

The specified asset.

usdc

price

Trading activity

Average price in usd. null when no trades are reported.

0.9997000899730081

total_volume_usd

Trading activity

Total volume in usd traded in the interval. 0 when no trades are reported.

796218091.3924453

total_trade_count

Trading activity

The total amount of trades reported during the interval. 0 when no trades are reported.

2000097

cex_volume_usd

Trading activity

Total off-chain volume in usd traded in the interval. 0 when no trades are reported.

694548754.6376011

cex_trade_count

Trading activity

The total amount of trades reported off-chain during the interval. 0 when no trades are reported.

1910473

dex_volume_usd

Trading activity

Total on-chain volume in usd traded in the interval. 0 when no trades are reported.

101669336.75484413

dex_trade_count

Trading activity

The total amount of trades reported on-chain during the interval. 0 when no trades are reported.

89624

supply_circulating

Supply

Blockchain total supply.

70051396209.43329

market_cap

Supply

The market cap of the stablecoin across all chains.

70030387093.3053

supply_change

Supply

The change in supply since the last interval.

-317149147.036026

avg_weighted_defi_lending_yield

DeFi lending

Average of all lending yields across DeFi lending protocols, weighted by deposited liquidity.

0.030345222539145098

avg_weighted_defi_borrowing_rate

DeFi lending

Average of all borrowing rate across DeFi lending protocols, weighted by deposited liquidity.

0.03869062376513863

total_defi_deposited

DeFi lending

Total deposited liquidity across DeFi lending protocols.

2321449893.228165

total_defi_borrowed

DeFi lending

Total borrowed liquidity across DeFi lending protocols.

2030740561.2581594

aggregated_buy_market_depth_asset

Liquidity information

Dictionary from 0.1% to 10% market depth.

See example response below.

aggregated_buy_market_depth_usd

Liquidity information

Dictionary from 0.1% to 10% market depth.

See example response below.

aggregated_sell_market_depth_asset

Liquidity information

Dictionary from 0.1% to 10% market depth.

See example response below.

aggregated_sell_market_depth_usd

Liquidity information

Dictionary from 0.1% to 10% market depth.

See example response below.

The desired stablecoin asset code. See

usdc

start_time

No

Starting time in ISO 8601 (inclusive).

2023-01-25T00:00:00.000Z

end_time

No

Ending time in ISO 8601 (exclusive).

2023-01-26T00:00:00.000Z

page_size

No

See Pagination Minimum: 1 Maximum: 30

Default: 10

30

timestamp

Trading activity

Timestamp at which the interval begins.

2026-06-18T00:00:00Z

Fields

Request examples

Response example

This data is included in the following Kaiko packages:

https://us.market-api.kaiko.io/v2/data/supply.v2/assets/{asset}
curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/supply.v2/assets/btc?start_time=2025-11-12T14:00:00.000Z&page_size=100&sources=true&sort=desc'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/supply.v2/assets/btc"
# Start of mandatory parameter configuration
mandatory_params = {

}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    'start_time':'2025-11-12T14:00:00.000Z',
    'page_size':100,
    'sort':'desc',
    'sources':'true'
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
{
    "query":
    {
        "start_time": "2025-11-12T14:00:00.000Z",
        "end_time": "2025-11-12T14:00:48.317Z",
        "page_size": 100,
        "asset": "btc",
        "sort": "desc",
        "request_time": "2025-11-12T14:00:48.317Z",
        "start_timestamp": 1735689600000,
        "end_timestamp": 1762956048317
    },
    "time": "2025-11-12T14:00:48.326Z",
    "timestamp": 1762956048326,
    "data":
    [
        {
            "timestamp": 1762956005,
            "asset": "btc",
            "circulating_supply": 19947809.375,
            "market_cap": 2093053874177.4607,
            "sources":
            [
                {
                    "chain": "Bitcoin",
                    "circulating_supply": "19947809.375",
                    "excluded_supply": "0",
                    "total_supply": "19947809.375"
                }
            ]
        }
        /** Results **/
    ],
    "result": "success",
    "continuation_token": "xxx",
    "next_url": "https://us.market-api.kaiko.io/v2/data/supply.v2/assets/btc?continuation_token=xxx",
    "access":
    {
        "access_range":
        {
            "start_timestamp": 1073001600000,
            "end_timestamp": "None"
        },
        "data_range":
        {
            "start_timestamp": "None",
            "end_timestamp": "None"
        }
    }
}
curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/analytics.v2/stablecoin_metrics?asset=usdc&sort=desc'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/analytics.v2/stablecoin_metrics"
# Start of mandatory parameter configuration
mandatory_params = {
    "asset": "usdc",
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    #"start_time": "2024-08-27T13:13:53.441Z",
    #"end_time" : "2024-09-27T13:27:53.441Z",
    #"interval" : "1d",
    "sort":"desc",
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
{
    "result": "success",
    "time": "2026-06-18T08:06:26Z",
    "timestamp": 1781769986999,
    "query":
    {
        "asset": "usdc",
        "end_time": "0001-01-01T00:00:00Z",
        "interval": "1d",
        "page_size": "10",
        "request_time": "2026-06-18T08:06:26.05808401Z",
        "sort": "desc",
        "start_time": "0001-01-01T00:00:00Z"
    },
    "data":
    [
        {
            "timestamp": "2026-06-18T00:00:00Z",
            "interval": "1d",
            "asset": "usdc",
            "price": 0.9997000899730081,
            "total_volume_usd": 796218091.3924453,
            "total_trade_count": 2000097,
            "cex_volume_usd": 694548754.6376011,
            "cex_trade_count": 1910473,
            "dex_volume_usd": 101669336.75484413,
            "dex_trade_count": 89624,
            "supply_circulating": 70051396209.43329,
            "market_cap": 70030387093.3053,
            "supply_change": -317149147.036026,
            "avg_weighted_defi_lending_yield": 0.030345222539145098,
            "avg_weighted_defi_borrowing_rate": 0.03869062376513863,
            "total_defi_deposited": 2321449893.228165,
            "total_defi_borrowed": 2030740561.2581594,
            "aggregated_buy_market_depth_asset": {
              "bid_volume_0_1": 410009275.917108,
              "bid_volume_0_2": 446428495.09170324,
              "bid_volume_0_5": 470849445.02862155,
              "bid_volume_1": 510576781.129591,
              "bid_volume_2": 549239689.7563232,
              "bid_volume_5": 549239689.7563232,
              "bid_volume_10": 629913837.648892
            },
            "aggregated_buy_market_depth_usd": {
              "bid_volume_0_1": 409964211.9019009,
              "bid_volume_0_2": 446379428.24938184,
              "bid_volume_0_5": 470797694.08590573,
              "bid_volume_1": 510520663.765471,
              "bid_volume_2": 549179322.9617518,
              "bid_volume_5": 599292340.4341673,
              "bid_volume_10": 629844603.9792498
            },
            "aggregated_sell_market_depth_asset": {
              "ask_volume_0_1": 311924899.9123604,
              "ask_volume_0_2": 327273471.225558,
              "ask_volume_0_5": 354299107.9406383,
              "ask_volume_1": 386901697.77497196,
              "ask_volume_2": 407012117.6172724,
              "ask_volume_5": 447660372.5945285,
              "ask_volume_10": 470660113.3308416
            },
            "aggregated_sell_market_depth_usd": {
              "ask_volume_0_1": 311890616.3259667,
              "ask_volume_0_2": 327237500.6815961,
              "ask_volume_0_5": 354260167.01582044,
              "ask_volume_1": 386859173.5077997,
              "ask_volume_2": 406967383.0189715,
              "ask_volume_5": 447611170.35686433,
              "ask_volume_10": 470608383.197524
            }
        },
        /* ALL RESULTS HERE */
    ],
    "continuation_token": "xxx",
    "next_url": "https://us.market-api.kaiko.io/v2/data/analytics.v2/stablecoin_metrics?continuation_token=xxx",
    "links":
    {
        "next": "/v2/data/analytics.v2/stablecoin_metrics?asset=usdc&end_time=2026-06-09T00%3A00%3A00Z&sort=desc"
    },
    "access":
    {
        "access_range":
        {
            "start_timestamp": 1073001600000,
            "end_timestamp": 1861830000000
        },
        "data_range":
        {
            "start_timestamp": "None",
            "end_timestamp": 1861830000000
        }
    }
}

2023-01-26T00:00:00.000Z

interval

No

The interval parameter is suffixed with m, h or d to specify minutes, hours, or days, respectively Any arbitrary value between five minutes and 30 days can be used. Default: 1h.

4h

page_size

No

See Minimum: 1 Maximum: 100

Default: 100

100

blockchain

No

Normalized blockchain identifier. Common values: ethereum, solana, polygon, arbitrum, canton.

ethereum

circulating_supply

Circulating supply

1.99373e+07

market_cap

Market capitalisation

2.2094e+12

total_supply

Total supply

1.99373e+07

asset

Yes

The desired asset code See

btc

start_time

No

Starting time in ISO 8601 (inclusive)

2023-01-25T00:00:00.00

end_time

No

timestamp

Timestamp at which the interval begins

1760918400

asset

Asset

curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/supply.v2/aggregated/btc?start_time=2025-10-20T00:00:00.000Z&end_time=2025-10-21T00:00:00.000Z&page_size=100&interval=1d'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/supply.v2/aggregated/btc"
# Start of mandatory parameter configuration
mandatory_params = {
    'start_time':'2025-10-20T00:00:00.000Z',
    'end_time':'2025-10-21T00:00:00.000Z',
    'page_size':100,
    'interval':'1d'
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
{
    "query":
    {
        "start_time": "2025-10-20T00:00:00.000Z",
        "end_time": "2025-10-21T00:00:00.000Z",
        "page_size": 100,
        "asset": "btc",
        "interval": "1d",
        "sort": "asc",
        "request_time": "2025-11-12T14:18:27.226Z",
        "start_timestamp": 1760918400000,
        "end_timestamp": 1761004800000
    },
    "time": "2025-11-12T14:18:27.253Z",
    "timestamp": 1762957107253,
    "data":
    [
        {
            "timestamp": 1760918400,
            "asset": "btc",
            "circulating_supply": 19937318.75,
            "market_cap": 2209402368348.39,
            "total_supply": 19937318.75
        }
        /** Results **/
    ],
    "result": "success",
    "continuation_token": "xxx",
    "next_url": "https://us.market-api.kaiko.io/v2/data/supply.v2/aggregated/btc?continuation_token=xxx",
    "access":
    {
        "access_range":
        {
            "start_timestamp": 1073001600000,
            "end_timestamp": "None"
        },
        "data_range":
        {
            "start_timestamp": "None",
            "end_timestamp": "None"
        }
    }
}

Fields

Request examples

Response example

This data is included in the following Kaiko packages:

Ending time in ISO 8601 (exclusive)

btc

Exchanges

  • Kaiko Market Explorer [Assets + Exchanges]

  • Kaiko Market Explorer [Full Coverage]

What is this endpoint for?

This endpoint helps inform exchange analysis with data such as total volume in USD, trades, the number of listed assets, and volume proportions by asset. The data aggregates all instruments available on the requested exchange. Only base assets are taken into consideration.

Endpoint

https://us.market-api.kaiko.io/v2/data/analytics.v2/exchange_metrics

Parameters

Parameter
Required
Description
Example

exchange

Field
Category
Description
Example
Pagination

Yes

The desired exchange code. See

cbse

start_time

Yes

Starting time in ISO 8601 (inclusive). First time at which we want to have metrics.

2023-11-29T14:00:00.0000000Z

end_time

Yes

Ending time in ISO 8601 (exclusive). Last time at which we want to have exchange metrics.

2023-11-29T15:00:00.0000000Z

interval

Yes

The interval parameter is suffixed with h or d to specify hours or days, respectively. Any arbitrary value between one second and one day can be used, as long as it sums up to a maximum of 1 day. The suffixes are h (hour) and d (day). Default: 1h.

1h

sources

No

If true, returns trading information detailed by pair. Default: false

page_size

No

See Minimum: 1 Maximum: 100

Default: 10

100

sort

No

If asc, sort time-series in ascending. If desc, sort time-series in descending. Default: desc

asc

timestamp

Trading activity

Timestamp at which the interval begins.

2023-11-29T14:00:00.000Z

curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/analytics.v2/exchange_metrics?exchange=cbse&sort=desc&sources=true&start_time=2023-11-29T14:00:00.0000000Z&end_time=2023-11-29T15:00:00.0000000Z&interval=1h&page_size=100'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/analytics.v2/exchange_metrics"
# Start of mandatory parameter configuration
mandatory_params = {
    "exchange": "cbse",
    "start_time": "2024-08-27T13:13:53.441Z",
    "end_time" : "2024-08-27T18:27:53.441Z",
    "interval" : "1h",
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    "sources": "false",
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
{
    "data": [
        {
            "timestamp": "2023-11-29T14:00:00.000Z",
            "total_volume_usd": 139803179.89191553,
            "total_trade_count": 121748,
            "nb_listed_assets": 235,
            "nb_listed_pairs": 379,
            "assets_volumes": [
                {
                  "asset_code": "btc",
                  "asset_trade_count": 22772,
                  "asset_total_volume_usd": 61612344.01769975,
                  "asset_price_usd": 37994.62623807689,
                  "asset_contribution": 0.4407077440250888,
                  "pairs_volumes": [
                        {
                          "pair_code": "btc-usd",
                          "pair_trade_count": 19193,
                          "pair_volume_usd": 57484171.99063697,
                          "pair_contribution": 0.9329976469345679
                        },
                        {
                          "pair_code": "btc-eur",
                          "pair_trade_count": 1686,
                          "pair_volume_usd": 1722929.4947314486,
                          "pair_contribution": 0.027964030945430225
                        },
                        {
                          "pair_code": "btc-usdt",
                          "pair_trade_count": 807,
                          "pair_volume_usd": 1590807.5262940996,
                          "pair_contribution": 0.02581962351305931
                        },
                        {
                          "pair_code": "btc-gbp",
                          "pair_trade_count": 1086,
                          "pair_volume_usd": 814435.0060372388,
                          "pair_contribution": 0.013218698606942646
                        }
                    ]
                },
              /* ... */
            ]
        },
        /* ... */
    ]  
}

Fields

Request examples

Response example

This data is included in the following Kaiko packages:

total_volume_usd

Trading activity

Total volume in USD traded in the interval. 0 when no trades are reported.

139803179.89191553

total_trade_count

Trading activity

Total trade count in the interval. 0 when no trades are reported.

121748

nb_listed_assets

Trading activity

Number of listed assets in the interval. 0 when no trades are reported.

235

nb_listed_pairs

Trading activity

Number of listed pairs in the interval. 0 when no trades are reported.

379

asset_volumes

Trading activity

Trading information details by asset.

[{"asset_code": "btc", "asset_trade_count": 22772, "asset_total_volume_usd": 61612344.01769975, "asset_price_usd": 37994.62623807689, "asset_contribution": 0.4407077440250888, "pairs_volumes": []]}, ...]

asset_code

Trading activity

Asset code.

btc

asset_trade_count

Trading activity

Trade count in the interval by asset. 0 when no trades are reported.

159115

asset_total_volume_usd

Trading activity

Volume in USD traded in the interval by asset. 0 when no trades are reported.

61612344.01769975

asset_price_usd

Trading activity

Asset cross-price in USD used to compute volume in USD.

37994.62623807689

asset_contribution

Trading activity

Asset volume percentage over total volume.

0.4407077440250888

pairs_volumes

Trading activity

Trading information details by pair.

[{"pair_code": "btc-usd", "pair_trade_count": 19193, "pair_volume_usd": 57484171.99063697, "pair_contribution": 0.9329976469345679}, ...]

pair_code

Trading activity

Pair code.

btc-usd

pair_trade_count

Trading activity

Trade count in the interval by pair. 0 when no trades are reported.

1686

pair_volume_usd

Trading activity

Volume in USD traded in the interval by pair. 0 when no trades are reported.

57484171.99063697

pair_contribution

Trading activity

Pair volume percentage over asset volume.

0.9329976469345679

Supply Per Blockchain

  • Kaiko Market Explorer [Full Coverage]

  • Kaiko Market Explorer [Supply and Market Cap]

What is this endpoint for?

This endpoint receives the supply of an asset on a single blockchain, including circulating supply and market capitalization where available.

To retrieve supply across all chains for an asset, use the Aggregated Supply endpoint with the blockchain query parameter, or call this endpoint once per chain.

Endpoint

https://us.market-api.kaiko.io/v2/data/supply.v2/blockchain-level/{blockchain}/{asset}

Parameters

Parameter
Required
Description
Example
Field
Description
Example

Market cap ranking

  • Kaiko Market Explorer [Full Coverage]

  • Kaiko Market Explorer [Supply and Market Cap]

What is this endpoint for?

This endpoint aggregates from the Supply endpoint to provide an aggregated view of supply and market capitalization of the top assets at a specified time.

Data can be aggregated between 5-minute and 30-day intervals; the aggregation considers each 5-minute interval from the raw supply data.

Read our supply and market cap methodology here.

Endpoint

https://us.market-api.kaiko.io/v2/data/supply.v2/top

Parameters

Parameter
Required
Description
Example
Field
Description
Example

Total Value Locked (TVL)

This endpoint receives information on the Total Value Locked (TVL) of all DeFi protocols covered by Kaiko.

Parameter
Required
Description
Example

rank

The ranking of the asset in terms of market cap.

1

total_supply

Total supply.

1.99373e+07

circulating_supply

Circulating supply.

1.99373e+07

market_cap

Market capitalisation.

2.2094e+12

datetime

No

Time in ISO 8601. Default: Current time.

2023-01-25T00:00:00.00

interval

No

The interval parameter is suffixed with m, h or d to specify minutes, hours, or days, respectively. Any arbitrary value between five minutes and 30 days can be used. Default: 1d.

4h

count

No

Number of assets in the result. Ex: 10 to retrieve the top 10 assets. Default: 100.

10

datetime

Timestamp in seconds.

1760918400

asset

Asset.

Fields

Request examples

Response example

This data is included in the following Kaiko packages:

btc

curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/supply.v2/top?datetime=2026-01-01T00:00:00.000Z&count=10&interval=1d'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/supply.v2/top"
# Start of mandatory parameter configuration
mandatory_params = {
    'datetime':'2026-01-01T00:00:00.000Z',
    'count':10,
    'interval':'1d'
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
{
    "query":
    {
        "datetime": "2026-01-01T00:00:00.000Z",
        "count": 10,
        "interval": "1d"
    },
    "time": "2026-02-10T13:10:35.136Z",
    "timestamp": 1770729035136,
    "data":
    [
        {
            "datetime": 1767225600,
            "asset": "btc",
            "rank": 1,
            "total_supply": 19969814.0625,
            "circulating_supply": 19969814.0625,
            "market_cap": 1754840038141.7961
        },
        {
            "datetime": 1767225600,
            "asset": "eth",
            "rank": 2,
            "total_supply": 120694917.35776222,
            "circulating_supply": 120694917.35776222,
            "market_cap": 359309601750.3176
        },
        {
            "datetime": 1767225600,
            "asset": "usdt",
            "rank": 3,
            "total_supply": 191200669545.90054,
            "circulating_supply": 186408947507.7797,
            "market_cap": 186164285382.73282
        },
        /** Results **/

    ],
    "result": "success"
}

blockchain

Blockchain name

ethereum

total_supply

Total supply on this chain

28535000000.00

circulating_supply

Circulating supply on this chain. null for Canton instruments.

28535000000.00

market_cap

Market capitalization on this chain. null for Canton instruments.

28535000000.00

blockchain

Yes

Normalized blockchain identifier. Common values: ethereum, solana, polygon, arbitrum, canton.

ethereum

asset

Yes

The desired asset code. See .

usdc

start_time

No

Starting time in ISO 8601 (inclusive).

2026-04-14T00:00:00.000Z

end_time

No

Ending time in ISO 8601 (exclusive).

2026-04-16T00:00:00.000Z

sort

No

Sort direction by timestamp (asc / desc). Default: desc.

desc

page_size

No

See Pagination. Minimum: 1 Maximum: 1000 Default: 100.

100

timestamp

Timestamp at which the interval begins

1744848000

asset

Asset

curl --request GET \
  --url 'https://us.market-api.kaiko.io/v2/data/supply.v2/blockchain-level/canton/cbtc?start_time=2026-05-13T00:00:00Z&end_time=2026-05-13T23:59:59Z&page_size=10&sort=desc' \
  --header 'Accept: application/json' \
  --header 'X-Api-Key: KAIKO_API_KEY'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/supply.v2/blockchain-level/canton/cbtc"
# Start of mandatory parameter configuration
mandatory_params = {

}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    'start_time':'2026-05-13T00:00:00Z',
    'end_time':'2026-05-13T23:59:59Z',
    'page_size':10,
    'sort':'desc'
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
{
    "query": {
        "start_time": "2026-05-13T00:00:00.000Z",
        "end_time": "2026-05-13T23:59:59.000Z",
        "page_size": 10,
        "asset": "cbtc",
        "blockchain": "canton",
        "sort": "desc",
        "request_time": "2026-05-13T07:57:55.131Z",
        "start_timestamp": 1778630400000,
        "end_timestamp": 1778716799000
    },
    "time": "2026-05-13T07:57:55.136Z",
    "timestamp": 1778659075136,
    "data": [
        {
            "timestamp": 1778655600,
            "asset": "cbtc",
            "blockchain": "canton",
            "total_supply": 29.0089104357,
            "circulating_supply": null,
            "market_cap": null
        }
        /** Results **/
    ],
    "result": "success",
    "access": {
        "access_range": {
            "start_timestamp": 1578006000000,
            "end_timestamp": 1893625200000
        },
        "data_range": {
            "start_timestamp": 1578006000000,
            "end_timestamp": 1893625200000
        }
    }
}

Fields

Request examples

Response example

This data is included in the following Kaiko packages:

usdc

aave

start_date

No

Starting date in YYYYMMDD (inclusive).

20230125

end_date

No

Ending date in YYYYMMDD (exclusive).

20230126

start_time

No

Starting time in ISO 8601 (inclusive) Hours will be ignored.

2023-01-25T00:00:00.00

end_time

No

Ending time in ISO 8601 (exclusive) Hours will be ignored.

2023-01-26T00:00:00.00

page_size

No

See Minimum: 1 Maximum: 1000

Default: 1000

100

sort

No

If asc, sort time-series in ascending. If desc, sort time-series in descending. Default: desc

asc

Field
Description
Example

timestamp

Timestamp at which the interval begins.

1763856000

protocol_name

Protocol name.

curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/tvl?start_date=20251001&protocol=aave'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/tvl"
# Start of mandatory parameter configuration
mandatory_params = {

}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    'start_date':'20251001',
    'page_size':100,
    'sort':'desc',
    'protocol':'aave'
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
https://us.market-api.kaiko.io/v2/data/tvl/

protocol

No

This data is included in the following Kaiko packages:

  • Market Explorer [Total Value Locked]

  • Market Explorer [Full Coverage]

What is this endpoint for?

Endpoint

Parameters

The desired protocol code. If not specified, the endpoint will return the list of all protocol codes.

{
    "query":
    {
        "protocol": "aave",
        "start_date": "seconds:1759276800",
        "end_date": "seconds:1764028800",
        "sort": "desc",
        "page_size": "1"
    },
    "time": "2025-11-25T10:20:15.37953193Z",
    "timestamp": 1764066015,
    "data":
    [
        {
            "timestamp": 1763856000,
            "protocol_name": "Aave",
            "protocol_code": "aave",
            "tvl": 50404639283.57133
        },
        /** Results **/
    ],
    "continuation_token": "xxx",
    "next_url": "https://eu.market-api.kaiko.io/v2/data/tvl?continuation_token=xxx"
}

Fields

Request examples

Response example

Staking rates

Returns time-series staking metrics for a specified blockchain protocol. The endpoint covers protocol-level data including validator counts, and yield metrics.

Parameter
Required
Description
Example
Asset codes

Aave

protocol_code

Protocol code.

aave

tvl

Total value locked (TVL) in USD.

5.04046e+10

Pagination

solana

methodology

No

The desired methodology code.

epoch_aggregate_v1

start_time

No

Starting time in ISO 8601 (inclusive)

2023-01-25T00:00:00.00

end_time

No

Ending time in ISO 8601 (exclusive)

2023-01-25T00:00:00.00

start_date

No

Starting date in YYYYMMDD (inclusive).

20250101

end_date

No

Ending date in YYYYMMDD (exclusive).

20250102

page_size

No

See Minimum: 1 Maximum: 1000

Default: 1000

100

sort

No

If asc, sort time-series in ascending. If desc, sort time-series in descending. Default: desc

asc

Field
Description
Example

date

Date at which the interval begins.

2026-04-21

protocol

Protocol code.

curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/staking.v1/protocols/solana?start_date=20261001'
import http.client
import json

# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/staking.v1/protocols/solana"
# Start of mandatory parameter configuration
mandatory_params = {

}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
    'start_date':'20251001',
    'page_size':100,
    'sort':'desc',
    'methodology':'epoch_aggregate_v1'
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
    "X-Api-Key": api_key,
    "Accept": "application/json"
}

all_params = {**mandatory_params, **optional_params}

url_params = []
for param, value in all_params.items():
    url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)

endpoint_with_params = f"{api_base_endpoint}?{url_params}"

# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
    conn.request("GET", next_url, headers=headers)
    response = conn.getresponse()
    data = json.loads(response.read().decode("utf-8"))
    all_data.extend(data.get("data", []))
    print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
    next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
    if not next_url:
        break
conn.close()
print(f" datapoints fetched: {(all_data)}")
https://us.market-api.kaiko.io/v2/data/staking.v1/protocols/{protocol}

protocol

Yes

This data is included in the following Kaiko packages:

  • Kaiko Market Explorer [Full Coverage]

  • Kaiko Market Explorer [Supply and Market Cap]

What is this endpoint for?

Endpoint

Parameters

The desired protocol code. If not specified, the endpoint will return the list of all protocol codes and methodologies.

{
    "query":
    {
        "start_date": "20260101",
        "end_date": "20260422",
        "start_time": "2026-01-01T00:00:00Z",
        "end_time": "2026-04-22T00:00:00Z",
        "sort": "descending",
        "page_size": "10",
        "methodology": "epoch_aggregate_v1"
    },
    "time": "2026-04-22T14:46:38.274392363Z",
    "timestamp": 1776869198,
    "data":
    [
        {
            "date": "2026-04-21",
            "protocol": "solana",
            "apr": 4.758636113435191,
            "validators": 777,
            "methodology": "epoch_aggregate_v1"
        },
        /** Results **/
    ],
    "continuation_token": "xxx",
    "next_url": "https://eu.market-api.kaiko.io/v2/data/staking.v1/protocols/solana?continuation_token=xxx"
}

Fields

Request examples

Response example

solana

apr

Daily APR

4.758636

validators

Number of validators

777

methodology

The methodology used to compute the APR

epoch_aggregate_v1

guide