CryptoQuant BTC Fund Data API

This namespace cointains endpoints to retreive metrics related to regulated funds such as trust, including market price, market volume, market premium, and digital asset holdings. These metrics are useful to measure sentiments of investors such as institutions in regulated market. All Symbol will be updated no later then UTC 12:00, this may be changed depending on update time of source data. Also the return value may be changed because of late updated fund. ### Supported Symbols | Name | Symbol | Status | Source | |--------------------------------------- |-------------|-------------|-----------------------| | All Symbol (BTC) | `all_symbol`| Validated | All Fund | | Grayscale Bitcoin Trust (GBTC) | `gbtc` | Validated | Grayscale Investments | | Grayscale Bitcoin Mini Trust (BTC) | `btc` | Validated | Grayscale Investments | | iShares Bitcoin Trust ETF (IBIT) | `ibit` | Validated | BlackRock | | Fidelity Bitcoin Fund ETF (FBTC) | `fbtc` | Validated | Fidelity | | Bitwise Bitcoin ETF (BITB) | `bitb` | Validated | Bitwise | | ARK 21Shares Bitcoin ETF (ARKB) | `arkb` | Validated | ARK Investment / 21Shares | | Invesco Galaxy Bitcoin ETF (BTCO) | `btco` | Validated | Invesco | | VanEck Bitcoin Trust (HODL) | `hodl` | Validated | VanEck | | Franklin Bitcoin ETF (EZBC) | `ezbc` | Validated | Franklin Templeton | | WisdomTree Bitcoin Fund (BTCW) | `btcw` | Validated | WisdomTree | | The Coinshares Valkyrie Bitcoin Fund (BRRR) | `brrr` | Validated | Valkyrie | | Purpose Bitcoin ETF (BTCC.U) | `btcc_u` | Validated | Purpose Investments | | ETC Group Bitcoin ETF (BTCE) | `btce` | Validated | ETC Group |

Operations 4

GET /btc/fund-data/market-price-usd Market Price USD #
GET /btc/fund-data/market-volume Market Volume #
GET /btc/fund-data/market-premium Market Premium #
GET /btc/fund-data/digital-asset-holdings Digital Asset Holdings #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cryptoquant:cryptoquant-btc-fund-data-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cryptoquant-btc-fund-data-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.3.0
  title: CryptoQuant Data BTC Fund Data API
  termsOfService: https://cryptoquant.com/terms-of-service
  contact:
    name: API Support
    email: contact@cryptoquant.com
  description: The CryptoQuant Data API provides simple and powerful endpoints to get information on general transaction data and aggregate on-chain statistics straight from the blockchain. The API root endpoint URL is `https://api.cryptoquant.com/v1/`.
servers:
- url: https://api.cryptoquant.com/v1
  description: Default server
tags:
- name: BTC Fund Data
  description: 'This namespace cointains endpoints to retreive metrics related to regulated funds such as trust, including market price, market volume, market premium, and digital asset holdings. These metrics are useful to measure sentiments of investors such as institutions in regulated market. All Symbol will be updated no later then UTC 12:00, this may be changed depending on update time of source data. Also the return value may be changed because of late updated fund.


    ### Supported Symbols

    | Name | Symbol | Status | Source |

    |--------------------------------------- |-------------|-------------|-----------------------|

    | All Symbol (BTC) | `all_symbol`| Validated | All Fund |

    | Grayscale Bitcoin Trust (GBTC) | `gbtc` | Validated | Grayscale Investments |

    | Grayscale Bitcoin Mini Trust (BTC) | `btc` | Validated | Grayscale Investments |

    | iShares Bitcoin Trust ETF (IBIT) | `ibit` | Validated | BlackRock |

    | Fidelity Bitcoin Fund ETF (FBTC) | `fbtc` | Validated | Fidelity |

    | Bitwise Bitcoin ETF (BITB) | `bitb` | Validated | Bitwise |

    | ARK 21Shares Bitcoin ETF (ARKB) | `arkb` | Validated | ARK Investment / 21Shares |

    | Invesco Galaxy Bitcoin ETF (BTCO) | `btco` | Validated | Invesco |

    | VanEck Bitcoin Trust (HODL) | `hodl` | Validated | VanEck |

    | Franklin Bitcoin ETF (EZBC) | `ezbc` | Validated | Franklin Templeton |

    | WisdomTree Bitcoin Fund (BTCW) | `btcw` | Validated | WisdomTree |

    | The Coinshares Valkyrie Bitcoin Fund (BRRR) | `brrr` | Validated | Valkyrie |

    | Purpose Bitcoin ETF (BTCC.U) | `btcc_u` | Validated | Purpose Investments |

    | ETC Group Bitcoin ETF (BTCE) | `btce` | Validated | ETC Group |'
paths:
  /btc/fund-data/market-price-usd:
    get:
      tags:
      - BTC Fund Data
      summary: Market Price USD
      description: 'The price of certain symbol (e.g. gbtc) managed by each fund (e.g. Grayscale) reflects sentiment of investors in regulated markets. In this specific case, having single share of GBTC means having approximately 0.001 BTC invested to Grayscale. This endpoint returns metrics related to the US Dollar(USD) price of fund related stocks (e.g. gbtc). We provide five metrics, `price_usd_open`, USD opening price at the beginning of the window, `price_usd_close`, USD closing price at the end of the window, `price_usd_high`, the highest USD price in a given window, `price_usd_low`, the lowest USD price in a given window, and `price_usd_adj_close`, USD adjusted closing price at the end of the window. All Symbol is not supported.


        **📖 Data Guide:** Grayscale Bitcoin Trust (GBTC) — definition, interpretation, and chart examples.'
      operationId: getBTCMarketPriceUSD
      parameters:
      - description: A stock symbol (ticker) from the table that we support. [See here](#tag/BTC-Fund-Data)
        explode: false
        in: query
        name: symbol
        required: true
        schema:
          type: string
        style: form
        example: gbtc
      - description: Currently, we only support `day`.
        explode: false
        in: query
        name: window
        schema:
          type: string
          default: day
        style: form
        example: day
      - description: This defines the starting time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the earliest time.
        explode: false
        in: query
        name: from
        required: false
        schema:
          type: string
        style: form
        example: 20191001T100000
      - description: This defines the ending time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the latest time.
        explode: false
        in: query
        name: to
        required: false
        schema:
          type: string
        style: form
        example: 20191001T103025
      - description: The maximum number of entries to return before the latest data point (or before `to` if specified). This field ranges from 1 to 100,000.
        explode: false
        in: query
        name: limit
        required: false
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 100000
        style: form
        example: 100
      - description: A format type about return message type. Supported formats are json, csv.
        explode: false
        in: query
        name: format
        required: false
        schema:
          type: string
          default: json
        style: form
        example: json
      x-codeSamples:
      - lang: Shell
        source: 'curl -X GET "https://api.cryptoquant.com/v1/btc/fund-data/market-price-usd?symbol=gbtc&window=day&from=20191001&limit=2" \

          -H "Authorization: Bearer <YOUR_API_KEY>"'
      - lang: JavaScript
        source: "fetch(\"https://api.cryptoquant.com/v1/btc/fund-data/market-price-usd?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { \"Authorization\": \"Bearer <YOUR_API_KEY>\"} })\n  .then(response => response.json())\n  .then(data => console.log(data))"
      - lang: NodeJS
        source: "require('axios')\n  .get(\"https://api.cryptoquant.com/v1/btc/fund-data/market-price-usd?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { Authorization: 'Bearer <YOUR_API_KEY>' } })\n  .then(response => console.log(response))"
      - lang: Ruby
        source: 'require ''net/http''

          uri = URI("https://api.cryptoquant.com/v1/btc/fund-data/market-price-usd?symbol=gbtc&window=day&from=20191001&limit=2")

          req = Net::HTTP::Get.new(uri)

          req["Authorization"] = "Bearer <YOUR_API_KEY>"

          res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }

          puts res.body'
      - lang: Python
        source: 'import requests

          headers = {''Authorization'': ''Bearer <YOUR_API_KEY>''}

          url = "https://api.cryptoquant.com/v1/btc/fund-data/market-price-usd?symbol=gbtc&window=day&from=20191001&limit=2"

          print(requests.get(url, headers=headers).json())'
      responses:
        '200':
          description: Market Price OHLC and adjusted C Data in USD
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - result
                properties:
                  status:
                    type: object
                    description: The status object is return with most of requests and indicates if the request was successful. If it is not successful, error information is included.
                    properties:
                      code:
                        type: integer
                        format: int32
                        description: HTTP status code
                      message:
                        type: string
                        description: Text description of the error or success.
                    required:
                    - code
                    - message
                  result:
                    type: object
                    required:
                    - window
                    - data
                    properties:
                      window:
                        type: string
                        description: The size of window. This metric supports only day resolution.
                      data:
                        type: array
                        items:
                          type: object
                          required:
                          - price_usd_open
                          - price_usd_high
                          - price_usd_low
                          - price_usd_close
                          - price_usd_adj_close
                          properties:
                            date:
                              type: string
                              description: The date in YYYY-DD-MM. This optional field only appears when window=day is used.
                            price_usd_open:
                              type: number
                              description: USD opening price at the beginning of the window.
                            price_usd_high:
                              type: number
                              description: The highest USD price in a given window.
                            price_usd_low:
                              type: number
                              description: The lowest USD price in a given window.
                            price_usd_close:
                              type: number
                              description: USD closing price at the end of the window.
                            price_usd_adj_close:
                              type: number
                              description: USD adjusted closing price at the end of the window.
              example:
                status:
                  code: 200
                  message: success
                result:
                  window: day
                  data:
                  - date: '2026-06-12'
                    price_usd_open: 49.17
                    price_usd_high: 49.95
                    price_usd_low: 48.87
                    price_usd_close: 49.34
                    price_usd_adj_close: 49.34
                  - date: '2026-06-11'
                    price_usd_open: 48.68
                    price_usd_high: 49.57
                    price_usd_low: 48.31
                    price_usd_close: 49.32
                    price_usd_adj_close: 49.32
      security:
      - AccessToken: []
  /btc/fund-data/market-volume:
    get:
      tags:
      - BTC Fund Data
      summary: Market Volume
      description: 'The volume of certain symbol (e.g. gbtc) managed by each fund (e.g. Grayscale) reflects sentiment of investors in regulated markets. This endpoint returns traded volume of fund related stocks (e.g. gbtc). At this endpoint, metrics are calculated by Day. We provide one metric, `volume`, traded volume of the window.


        **📖 Data Guide:** Grayscale Bitcoin Trust (GBTC) — definition, interpretation, and chart examples.'
      operationId: getBTCMarketVolume
      parameters:
      - description: A stock symbol (ticker) from the table that we support. [See here](#tag/BTC-Fund-Data)
        explode: false
        in: query
        name: symbol
        required: true
        schema:
          type: string
        style: form
        example: gbtc
      - description: Currently, we only support `day`.
        explode: false
        in: query
        name: window
        schema:
          type: string
          default: day
        style: form
        example: day
      - description: This defines the starting time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the earliest time.
        explode: false
        in: query
        name: from
        required: false
        schema:
          type: string
        style: form
        example: 20191001T100000
      - description: This defines the ending time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the latest time.
        explode: false
        in: query
        name: to
        required: false
        schema:
          type: string
        style: form
        example: 20191001T103025
      - description: The maximum number of entries to return before the latest data point (or before `to` if specified). This field ranges from 1 to 100,000.
        explode: false
        in: query
        name: limit
        required: false
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 100000
        style: form
        example: 100
      - description: A format type about return message type. Supported formats are json, csv.
        explode: false
        in: query
        name: format
        required: false
        schema:
          type: string
          default: json
        style: form
        example: json
      x-codeSamples:
      - lang: Shell
        source: 'curl -X GET "https://api.cryptoquant.com/v1/btc/fund-data/market-volume?symbol=gbtc&window=day&from=20191001&limit=2" \

          -H "Authorization: Bearer <YOUR_API_KEY>"'
      - lang: JavaScript
        source: "fetch(\"https://api.cryptoquant.com/v1/btc/fund-data/market-volume?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { \"Authorization\": \"Bearer <YOUR_API_KEY>\"} })\n  .then(response => response.json())\n  .then(data => console.log(data))"
      - lang: NodeJS
        source: "require('axios')\n  .get(\"https://api.cryptoquant.com/v1/btc/fund-data/market-volume?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { Authorization: 'Bearer <YOUR_API_KEY>' } })\n  .then(response => console.log(response))"
      - lang: Ruby
        source: 'require ''net/http''

          uri = URI("https://api.cryptoquant.com/v1/btc/fund-data/market-volume?symbol=gbtc&window=day&from=20191001&limit=2")

          req = Net::HTTP::Get.new(uri)

          req["Authorization"] = "Bearer <YOUR_API_KEY>"

          res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }

          puts res.body'
      - lang: Python
        source: 'import requests

          headers = {''Authorization'': ''Bearer <YOUR_API_KEY>''}

          url = "https://api.cryptoquant.com/v1/btc/fund-data/market-volume?symbol=gbtc&window=day&from=20191001&limit=2"

          print(requests.get(url, headers=headers).json())'
      responses:
        '200':
          description: Market Volume Data
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - result
                properties:
                  status:
                    type: object
                    description: The status object is return with most of requests and indicates if the request was successful. If it is not successful, error information is included.
                    properties:
                      code:
                        type: integer
                        format: int32
                        description: HTTP status code
                      message:
                        type: string
                        description: Text description of the error or success.
                    required:
                    - code
                    - message
                  result:
                    type: object
                    required:
                    - window
                    - data
                    properties:
                      window:
                        type: string
                        description: The size of window. This metric supports only day resolution.
                      data:
                        type: array
                        items:
                          type: object
                          required:
                          - volume
                          properties:
                            date:
                              type: string
                              description: The date in YYYY-DD-MM. This optional field only appears when window=day is used.
                            volume:
                              type: number
                              description: Traded volume of the window.
              example:
                status:
                  code: 200
                  message: success
                result:
                  window: day
                  data:
                  - date: '2026-06-12'
                    volume: 2221700
                  - date: '2026-06-11'
                    volume: 3005900
      security:
      - AccessToken: []
  /btc/fund-data/market-premium:
    get:
      tags:
      - BTC Fund Data
      summary: Market Premium
      description: 'The premium of certain symbol (e.g. gbtc) is defined as (market price of the symbol - NAV) divided by NAV where NAV (Native Asset Value) is the current value of holdings (e.g. BTC price multiplied by BTC per Share). Higher the premium indicates market bullish, which also indicates downside risk. On the other hand, lower the premium indicates market bearish, which also indicates upside risk. All Symbol market premium is calculated by taking VWAP (Volume Weighted Average Ratio) of each fund data volume (usd).


        **📖 Data Guide:** GBTC Premium or Discount — definition, interpretation, and chart examples.'
      operationId: getBTCMarketPremium
      parameters:
      - description: A stock symbol (ticker) from the table that we support. [See here](#tag/BTC-Fund-Data)
        explode: false
        in: query
        name: symbol
        required: true
        schema:
          type: string
        style: form
        example: gbtc
      - description: Currently, we only support `day`.
        explode: false
        in: query
        name: window
        schema:
          type: string
          default: day
        style: form
        example: day
      - description: This defines the starting time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the earliest time.
        explode: false
        in: query
        name: from
        required: false
        schema:
          type: string
        style: form
        example: 20191001T100000
      - description: This defines the ending time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the latest time.
        explode: false
        in: query
        name: to
        required: false
        schema:
          type: string
        style: form
        example: 20191001T103025
      - description: The maximum number of entries to return before the latest data point (or before `to` if specified). This field ranges from 1 to 100,000.
        explode: false
        in: query
        name: limit
        required: false
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 100000
        style: form
        example: 100
      - description: A format type about return message type. Supported formats are json, csv.
        explode: false
        in: query
        name: format
        required: false
        schema:
          type: string
          default: json
        style: form
        example: json
      x-codeSamples:
      - lang: Shell
        source: 'curl -X GET "https://api.cryptoquant.com/v1/btc/fund-data/market-premium?symbol=gbtc&window=day&from=20191001&limit=2" \

          -H "Authorization: Bearer <YOUR_API_KEY>"'
      - lang: JavaScript
        source: "fetch(\"https://api.cryptoquant.com/v1/btc/fund-data/market-premium?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { \"Authorization\": \"Bearer <YOUR_API_KEY>\"} })\n  .then(response => response.json())\n  .then(data => console.log(data))"
      - lang: NodeJS
        source: "require('axios')\n  .get(\"https://api.cryptoquant.com/v1/btc/fund-data/market-premium?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { Authorization: 'Bearer <YOUR_API_KEY>' } })\n  .then(response => console.log(response))"
      - lang: Ruby
        source: 'require ''net/http''

          uri = URI("https://api.cryptoquant.com/v1/btc/fund-data/market-premium?symbol=gbtc&window=day&from=20191001&limit=2")

          req = Net::HTTP::Get.new(uri)

          req["Authorization"] = "Bearer <YOUR_API_KEY>"

          res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }

          puts res.body'
      - lang: Python
        source: 'import requests

          headers = {''Authorization'': ''Bearer <YOUR_API_KEY>''}

          url = "https://api.cryptoquant.com/v1/btc/fund-data/market-premium?symbol=gbtc&window=day&from=20191001&limit=2"

          print(requests.get(url, headers=headers).json())'
      responses:
        '200':
          description: Market Premium Data
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - result
                properties:
                  status:
                    type: object
                    description: The status object is return with most of requests and indicates if the request was successful. If it is not successful, error information is included.
                    properties:
                      code:
                        type: integer
                        format: int32
                        description: HTTP status code
                      message:
                        type: string
                        description: Text description of the error or success.
                    required:
                    - code
                    - message
                  result:
                    type: object
                    required:
                    - window
                    - data
                    properties:
                      window:
                        type: string
                        description: The size of window. This metric supports only day resolution.
                      data:
                        type: array
                        items:
                          type: object
                          required:
                          - market_premium
                          properties:
                            date:
                              type: string
                              description: The date in YYYY-DD-MM. This optional field only appears when window=day is used.
                            market_premium:
                              type: number
                              description: Market premium of the window.
              example:
                status:
                  code: 200
                  message: success
                result:
                  window: day
                  data:
                  - date: '2026-06-12'
                    market_premium: 0.0160136
                  - date: '2026-06-11'
                    market_premium: -0.01419039
      security:
      - AccessToken: []
  /btc/fund-data/digital-asset-holdings:
    get:
      tags:
      - BTC Fund Data
      summary: Digital Asset Holdings
      description: 'This endpoint returns digital asset holdings status of each fund. For example, Grayscale BTC Holdings along with GBTC represents how much BTC Grayscale is holding for its investment. This metric indicates stock market''s sentiment where higher the value means bullish sentiment of investors in stock market.


        **📖 Data Guide:** GBTC Digital Asset Holdings — definition, interpretation, and chart examples.'
      operationId: getBTCDigitalAssetHoldings
      parameters:
      - description: A stock symbol (ticker) from the table that we support. [See here](#tag/BTC-Fund-Data)
        explode: false
        in: query
        name: symbol
        required: true
        schema:
          type: string
        style: form
        example: gbtc
      - description: Currently, we only support `day`.
        explode: false
        in: query
        name: window
        schema:
          type: string
          default: day
        style: form
        example: day
      - description: This defines the starting time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the earliest time.
        explode: false
        in: query
        name: from
        required: false
        schema:
          type: string
        style: form
        example: 20191001T100000
      - description: This defines the ending time for which data will be gathered, formatted as YYYYMMDDTHHMMSS (indicating YYYY-MM-DDTHH:MM:SS, UTC time). If window=day is used, it can also be formatted as YYYYMMDD (date). If window=block is used, you can also specify the exact block height (e.g. 510000). If this field is not specified, response will include data from the latest time.
        explode: false
        in: query
        name: to
        required: false
        schema:
          type: string
        style: form
        example: 20191001T103025
      - description: The maximum number of entries to return before the latest data point (or before `to` if specified). This field ranges from 1 to 100,000.
        explode: false
        in: query
        name: limit
        required: false
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 100000
        style: form
        example: 100
      - description: A format type about return message type. Supported formats are json, csv.
        explode: false
        in: query
        name: format
        required: false
        schema:
          type: string
          default: json
        style: form
        example: json
      x-codeSamples:
      - lang: Shell
        source: 'curl -X GET "https://api.cryptoquant.com/v1/btc/fund-data/digital-asset-holdings?symbol=gbtc&window=day&from=20191001&limit=2" \

          -H "Authorization: Bearer <YOUR_API_KEY>"'
      - lang: JavaScript
        source: "fetch(\"https://api.cryptoquant.com/v1/btc/fund-data/digital-asset-holdings?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { \"Authorization\": \"Bearer <YOUR_API_KEY>\"} })\n  .then(response => response.json())\n  .then(data => console.log(data))"
      - lang: NodeJS
        source: "require('axios')\n  .get(\"https://api.cryptoquant.com/v1/btc/fund-data/digital-asset-holdings?symbol=gbtc&window=day&from=20191001&limit=2\", { headers: { Authorization: 'Bearer <YOUR_API_KEY>' } })\n  .then(response => console.log(response))"
      - lang: Ruby
        source: 'require ''net/http''

          uri = URI("https://api.cryptoquant.com/v1/btc/fund-data/digital-asset-holdings?symbol=gbtc&window=day&from=20191001&limit=2")

          req = Net::HTTP::Get.new(uri)

          req["Authorization"] = "Bearer <YOUR_API_KEY>"

          res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }

          puts res.body'
      - lang: Python
        source: 'import requests

          headers = {''Authorization'': ''Bearer <YOUR_API_KEY>''}

          url = "https://api.cryptoquant.com/v1/btc/fund-data/digital-asset-holdings?symbol=gbtc&window=day&from=20191001&limit=2"

          print(requests.get(url, headers=headers).json())'
      responses:
        '200':
          description: Digital Asset Holdings Data
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - result
                properties:
                  status:
                    type: object
                    description: The status object is return with most of requests and indicates if the request was successful. If it is not successful, error information is included.
                    properties:
                      code:
                        type: integer
                        format: int32
                        description: HTTP status code
                      message:
                        type: string
                        description: Text description of the error or success.
                    required:
                    - code
                    - message
                  result:
                    type: object
                    required:
                    - window
                    - data
                    properties:
                      window:
                        type: string
                        description: The size of window. This metric supports only day resolution.
                      data:
                        type: array
                        items:
                          type: object
                          required:
                          - digital_asset_holdings
                          properties:
                            date:
                              type: string
                              description: The date in YYYY-DD-MM. This optional field only appears when window=day is used.
                            digital_asset_holdings:
                              type: number
                              description: Digital Asset Holdings of the window.
              example:
                status:
                  code: 200
                  message: success
                result:
                  window: day
                  data:
                  - date: '2026-06-12'
                    digital_asset_holdings: 139250.42
                  - date: '2026-06-11'
                    digital_asset_holdings: 139202.2
      security:
      - AccessToken: []
components:
  securitySchemes:
    AccessToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'For each API request, include this HTTP header:

        `Authorization` with the `Bearer <YOUR_API_KEY>`. Bearer access token is the type of HTTP Authorization.  You have to include access token to the HTTP header and note that leading bearer is required.

        You must include your access token in HTTP header in every request you make. The token is unique, issued for each client, and regularly changed(once a year). To obtain an access token, please [upgrade your plan](https://cryptoquant.com/pricing) to Professional or Premium plan. You''ll be able to see your access token on the [API tab](https://cryptoquant.com/settings/api) of your profile page after the subscription.'
    QueryParameter:
      type: apiKey
      name: api_key
      in: query
      description: 'For each API reqeust, include `api_key` parameter.

        You must request with your access token in query parameter in every request you make. The token is unique, issued for each client, and regularly changed(once a year). To obtain an access token, please [upgrade your plan](https://cryptoquant.com/pricing) to Professional or Premium plan. You''ll be able to see your access token on the [API tab](https://cryptoquant.com/settings/api) of your profile page after the subscription.

        If you are using Excel, you can use the `api_key` parameter to request with your access token to return data either in `json` or `csv`.'
x-tagGroups:


# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cryptoquant/refs/heads/main/openapi/cryptoquant-btc-fund-data-api-openapi.yml