BitcoinQuant API

Real-time data and analytics for Bitcoin-linked preferred equity instruments — STRK, STRF, STRD, SATA, and more.

Free

$0/month

Get started with basic data

  • 60 requests/minute
  • Company BTC holdings & basics
  • Preferred equity basics (14 fields)
  • 7-day historical data
  • Volume, volatility, sharpe data
  • Full historical data
Most Popular

Pro

$49/month

Full access to all data

  • 300 requests/minute
  • All company data (30+ fields)
  • All preferred equity data (37 fields)
  • Full historical data (all time)
  • Volume, volatility, sharpe ratio
  • Priority support

What You Get

Every field returned by the API, broken down by plan.

Current Data Fields14 FREE · 23 PRO-only · 37 total
Click to expand

Returned by /v1/preferred-equity and /v1/preferred-equity/{ticker}

FieldTypeDescriptionPlan
tickerstringTicker symbol (STRC, STRD, STRF, STRK, SATA)FREE
issuerstringIssuing company nameFREE
namestringFull security nameFREE
stock_pricenumberCurrent stock price (USD)FREE
current_dividendnumberCurrent annual dividend per share (USD)FREE
effective_yieldnumberAnnual dividend / current price (%)FREE
ipo_datestringDate of IPOFREE
ipo_pricenumberIPO price (USD)FREE
three_month_returnnumberPrice return over the past 3 months (%)FREE
lifetime_returnnumberPrice return since IPO (%)FREE
market_capnumberMarket capitalization (USD)FREE
shares_outstandingnumberTotal shares outstandingFREE
dividend_payment_timeframestringDividend frequency (e.g. quarterly)FREE
updated_atstringLast data refresh timestampFREE
overviewstringShort overview of the securityPRO
descriptionstringDetailed security descriptionPRO
price_3m_agonumberStock price 3 months ago (USD)PRO
notional_valuenumberNotional value (shares × $100 par)PRO
trading_volume_usdnumberLatest day trading volume (USD)PRO
avg_trading_volume_7dnumber7-day average daily volume (USD)PRO
avg_trading_volume_30dnumber30-day average daily volume (USD)PRO
scaled_vol_above_100_usdnumberVolume traded above $100 par (USD)PRO
scaled_vol_below_100_usdnumberVolume traded below $100 par (USD)PRO
scaled_vol_above_100_rth_usdnumberVolume above $100 during regular trading hours (USD)PRO
scaled_trading_volume_rth_usdnumberTotal volume during regular trading hours (USD)PRO
volume_above_100_pctnumberPercentage of volume traded above $100 parPRO
volatility_7dnumber7-day annualized volatilityPRO
volatility_30dnumber30-day annualized volatilityPRO
volatility_60dnumber60-day annualized volatilityPRO
volatility_90dnumber90-day annualized volatilityPRO
this_weeks_volumenumberTotal trading volume this week (USD)PRO
this_weeks_volume_above_parnumberVolume above $100 par this week (USD)PRO
this_weeks_volume_above_par_pctnumberPercentage of this week's volume above parPRO
sharpe_rationumberRisk-adjusted return (excess return / volatility)PRO
risk_free_ratenumberRisk-free rate used for Sharpe calculationPRO
created_atstringRecord creation timestampPRO
last_updatedstringLast data update timestampPRO
Historical Data Fields10 FREE · 21 PRO-only · 31 total
Click to expand

Returned by /v1/preferred-equity/historical. FREE plan limited to last 7 days; PRO gets full history.

FieldTypeDescriptionPlan
datestringTrading date (YYYY-MM-DD)FREE
tickerstringTicker symbolFREE
stock_pricenumberClosing price (USD)FREE
effective_yieldnumberEffective yield on that date (%)FREE
trading_volumenumberDaily trading volume (USD)FREE
market_capnumberMarket capitalization (USD)FREE
notionalnumberNotional value (USD)FREE
dividend_ratenumberDividend rate on that dateFREE
volatility_30dnumber30-day annualized volatilityFREE
sharpe_rationumberSharpe ratio on that dateFREE
open_pricenumberOpening price (USD)PRO
high_pricenumberIntraday high price (USD)PRO
low_pricenumberIntraday low price (USD)PRO
avg_trading_volume_7dnumber7-day average daily volume (USD)PRO
avg_trading_volume_30dnumber30-day average daily volume (USD)PRO
shares_outstandingnumberShares outstanding on that datePRO
volatility_7dnumber7-day annualized volatilityPRO
volatility_60dnumber60-day annualized volatilityPRO
volatility_90dnumber90-day annualized volatilityPRO
volume_above_100_pctnumberPct of volume above $100 parPRO
scaled_vol_above_100_usdnumberVolume above $100 par (USD)PRO
scaled_vol_below_100_usdnumberVolume below $100 par (USD)PRO
scaled_vol_above_100_rth_usdnumberVolume above $100 during regular hours (USD)PRO
trading_volume_rthnumberTotal volume during regular hours (USD)PRO
volume_in_99_101_band_pctnumberPct of volume in $99–$101 bandPRO
cumulative_weekly_volumenumberCumulative volume for the week (USD)PRO
cumulative_weekly_scaled_vol_above_100_usdnumberCumulative weekly volume above par (USD)PRO
day_of_weekstringDay of the week (Mon, Tue, etc.)PRO
three_month_returnnumber3-month return as of that date (%)PRO
one_year_returnnumber1-year return as of that date (%)PRO
lifetime_returnnumberLifetime return as of that date (%)PRO

Quick Start

Available Endpoints

GET/api/v1/preferred-equityCurrent data for all tickers
GET/api/v1/preferred-equity/[ticker]Single ticker lookup
GET/api/v1/preferred-equity/historicalHistorical price & yield data

curl — Current Data

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://bitcoinquant.co/api/v1/preferred-equity

curl — Single Ticker

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://bitcoinquant.co/api/v1/preferred-equity/STRC

curl — Historical Data

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://bitcoinquant.co/api/v1/preferred-equity/historical?ticker=STRC&days=30"

Python

import requests

headers = {"Authorization": "Bearer YOUR_API_KEY"}

# Current preferred equity data
response = requests.get("https://bitcoinquant.co/api/v1/preferred-equity", headers=headers)
data = response.json()
print(f"{len(data['data'])} preferred equity securities loaded")

# Historical data for a specific ticker
response = requests.get(
    "https://bitcoinquant.co/api/v1/preferred-equity/historical",
    headers=headers,
    params={"ticker": "STRC", "days": 30}
)
history = response.json()
print(f"{len(history['data'])} days of historical data")

JavaScript

const headers = { "Authorization": "Bearer YOUR_API_KEY" };

// Current preferred equity data
const res = await fetch("https://bitcoinquant.co/api/v1/preferred-equity", { headers });
const { data } = await res.json();
console.log(`${data.length} preferred equity securities loaded`);

// Historical data for a specific ticker
const histRes = await fetch(
  "https://bitcoinquant.co/api/v1/preferred-equity/historical?ticker=STRC&days=30",
  { headers }
);
const history = await histRes.json();
console.log(`${history.data.length} days of historical data`);

R

library(httr)
library(jsonlite)

headers <- add_headers(Authorization = "Bearer YOUR_API_KEY")

# Current preferred equity data
res <- GET("https://bitcoinquant.co/api/v1/preferred-equity", headers)
data <- fromJSON(content(res, "text"))
cat(length(data$data), "preferred equity securities loaded\n")

# Historical data for a specific ticker
hist_res <- GET("https://bitcoinquant.co/api/v1/preferred-equity/historical",
  headers, query = list(ticker = "STRC", days = 30))
history <- fromJSON(content(hist_res, "text"))
cat(length(history$data), "days of historical data\n")

Google Sheets (Apps Script)

function getPreferredEquity() {
  var options = {
    headers: { "Authorization": "Bearer YOUR_API_KEY" }
  };
  var res = UrlFetchApp.fetch(
    "https://bitcoinquant.co/api/v1/preferred-equity", options
  );
  var data = JSON.parse(res.getContentText()).data;
  var sheet = SpreadsheetApp.getActiveSheet();
  // Write headers
  var keys = Object.keys(data[0]);
  sheet.getRange(1, 1, 1, keys.length).setValues([keys]);
  // Write data
  var rows = data.map(function(row) {
    return keys.map(function(k) { return row[k]; });
  });
  sheet.getRange(2, 1, rows.length, keys.length).setValues(rows);
}
View Full Documentation

Questions? DM Rohan on X at @rohanhirani