🔗 TimechainIndex REST API

Comprehensive Bitcoin blockchain and financial data API

Register on TimechainIndex.com to aquire an API Key.

API Status

Check API Health

Public endpoint to verify the API is running (no authentication required)

GET status
curl https://api.timechainindex.com/status
import requests response = requests.get('https://api.timechainindex.com/status') print(response.json())
fetch('https://api.timechainindex.com/status') .then(res => res.json()) .then(data => console.log(data))

UTXOs Set APIs

Query unspent transaction outputs organized by various metrics at specific block heights.

1. Available Block Heights

Returns a directory of all available block heights for UTXO data with timestamps

GET utxos_all_height_directory
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/utxos_all_height_directory"
import requests headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( "https://api.timechainindex.com/utxos_all_height_directory", headers=headers ) data = response.json() for block in data[:5]: # Show first 5 print(block)
const axios = require('axios'); async function getBlockHeights() { try { const response = await axios.get( 'https://api.timechainindex.com/utxos_all_height_directory', { headers: { 'X-API-Key': 'YOUR_API_KEY' } } ); console.log(response.data); } catch (error) { console.error('Error:', error.message); } } getBlockHeights();

2. UTXOs by Value

Returns UTXOs organized by value (amount) at a specific block height

GET utxos_set_by_value/:blockheight

Path Parameters:

  • blockheight (integer) - Block height to query
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/utxos_set_by_value/950430"
import requests blockheight = 950430 headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( f"https://api.timechainindex.com/utxos_set_by_value/{blockheight}", headers=headers ) data = response.json() print(data)
const axios = require('axios'); async function getUTXOsByValue(blockheight) { try { const response = await axios.get( `https://api.timechainindex.com/utxos_set_by_value/${blockheight}`, { headers: { 'X-API-Key': 'YOUR_API_KEY' } } ); console.log(response.data); } catch (error) { console.error('Error:', error.response?.data || error.message); } } getUTXOsByValue(950430);

3. UTXOs by Age

Returns UTXOs organized by age (time since creation)

GET utxos_set_by_age/:blockheight
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/utxos_set_by_age/950430"
import requests blockheight = 950430 headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( f"https://api.timechainindex.com/utxos_set_by_age/{blockheight}", headers=headers ) data = response.json() print(data)
const apiKey = 'YOUR_API_KEY'; const blockheight = 950430; fetch( `https://api.timechainindex.com/utxos_set_by_age/${blockheight}`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.error('Error:', err));

4. UTXOs by Epoch

Returns UTXOs organized by Bitcoin epoch (difficulty adjustment periods)

GET utxos_set_by_epoch/:blockheight
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/utxos_set_by_epoch/950430"
import requests blockheight = 950430 headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( f"https://api.timechainindex.com/utxos_set_by_epoch/{blockheight}", headers=headers ) data = response.json() print(data)
const apiKey = 'YOUR_API_KEY'; const blockheight = 950430; fetch(`https://api.timechainindex.com/utxos_set_by_epoch/${blockheight}`, { headers: { 'X-API-Key': apiKey } }) .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error('Error:', err));

5. UTXOs by Year

Returns UTXOs organized by the year they were created

GET utxos_set_by_year/:blockheight
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/utxos_set_by_year/950430"
import requests blockheight = 950430 headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( f"https://api.timechainindex.com/utxos_set_by_year/{blockheight}", headers=headers ) data = response.json() print(data)
const apiKey = 'YOUR_API_KEY'; const blockheight = 950430; fetch( `https://api.timechainindex.com/utxos_set_by_year/${blockheight}`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.error('Error:', err));

6. Coinbase UTXOs by Year

Returns Coinbase UTXOs organized by the year they were created

GET utxos_set_coinbase_by_year/:blockheight
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/utxos_set_coinbase_by_year/950430"
import requests blockheight = 950430 headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( f"https://api.timechainindex.com/utxos_set_coinbase_by_year/{blockheight}", headers=headers ) data = response.json() print(data)
const apiKey = 'YOUR_API_KEY'; const blockheight = 950430; fetch( `https://api.timechainindex.com/utxos_set_coinbase_by_year/${blockheight}`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.error('Error:', err));

Addresses Set APIs

Query Bitcoin addresses and their UTXO distribution.

1. Available Block Heights

Returns all available block heights for address set data

GET addresses_set_height_directory
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/addresses_set_height_directory"
import requests headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( "https://api.timechainindex.com/addresses_set_height_directory", headers=headers ) data = response.json() print(data)
const apiKey = 'YOUR_API_KEY'; fetch('https://api.timechainindex.com/addresses_set_height_directory', { headers: { 'X-API-Key': apiKey } }) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.error('Error:', err));

2. Addresses by Amount

Returns address distribution by UTXO amount at a specific block height

GET utxos_addresses_set_by_amount/:blockheight
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/utxos_addresses_set_by_amount/950430"
import requests blockheight = 950430 headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( f"https://api.timechainindex.com/utxos_addresses_set_by_amount/{blockheight}", headers=headers ) data = response.json() print(data)
const apiKey = 'YOUR_API_KEY'; const blockheight = 950430; fetch( `https://api.timechainindex.com/utxos_addresses_set_by_amount/${blockheight}`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.error('Error:', err));

Network Statistics APIs

Comprehensive Bitcoin network metrics and block data.

1. Block Frequency

Daily number of blocks mined

GET net_stats_block_frequency
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/net_stats_block_frequency"
import requests response = requests.get( "https://api.timechainindex.com/net_stats_block_frequency", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for day in data[:10]: print(f"Date: {day['day']}, Blocks: {day['block_count']}")

2. Daily Network Overview

Comprehensive daily metrics (subsidy, fees, transactions, size, weight)

GET net_stats_daily_overview
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/net_stats_daily_overview"
import requests headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( "https://api.timechainindex.com/net_stats_daily_overview", headers=headers ) daily_data = response.json() for day in daily_data[:10]: print(day)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/net_stats_daily_overview', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.slice(0, 5).forEach(day => { console.log(day); }); }) .catch(err => console.error('Error:', err));

3. Monthly Network Overview

Monthly aggregated network metrics

GET net_stats_monthly_overview
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/net_stats_monthly_overview"
import requests headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( "https://api.timechainindex.com/net_stats_monthly_overview", headers=headers ) monthly_data = response.json() for month in monthly_data[-5:]: print(month)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/net_stats_monthly_overview', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.slice(0, 5).forEach(month => { console.log(month); }); }) .catch(err => console.error('Error:', err));

4. Yearly Network Overview

Yearly aggregated network metrics

GET net_stats_yearly_overview
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/net_stats_yearly_overview"
import requests headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( "https://api.timechainindex.com/net_stats_yearly_overview", headers=headers ) yearly_data = response.json() for year in yearly_data[-5:]: print(year)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/net_stats_yearly_overview', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.slice(0, 5).forEach(year => { console.log(year); }); }) .catch(err => console.error('Error:', err));

5. Epoch Network Overview

Epoch aggregated network metrics

GET net_stats_epoch_overview
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/net_stats_epoch_overview"
import requests headers = {"X-API-Key": "YOUR_API_KEY"} response = requests.get( "https://api.timechainindex.com/net_stats_epoch_overview", headers=headers ) epoch_data = response.json() for epoch in epoch_data: print(epoch)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/net_stats_epoch_overview', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.forEach(epoch => { console.log(epoch); }); }) .catch(err => console.error('Error:', err));

BTC/USD Price APIs

BTC/USD prices indexed by Bitcoin blocks (2009-2026)

1. BTC/USD Price Data by Block

Available for all years from 2009 to 2026

GET usd_price_per_block/:year

Example Years:

  • 2026, 2025, 2024, 2023, 2022, 2021, 2020, etc.
  • Full historical data back to 2009
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/usd_price_per_block/2026"
import requests year = 2026 response = requests.get( f"https://api.timechainindex.com/usd_price_per_block/{year}", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() print(f"Total blocks in {year}: {len(data)}") for row in data[:15]: print(row)
const apiKey = 'YOUR_API_KEY'; const year = 2026; fetch( `https://api.timechainindex.com/usd_price_per_block/${year}`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(`Blocks in ${year}: ${data.length}`); console.log('Latest 15 Blocks:'); data.slice(0, 15).forEach(block => { console.log(` Block: ${block.blockheight} - Timestamp: ${block.timestamp} - BTCUSD Price: ${block.usdprice}`); }); }) .catch(err => console.error('Error:', err));

2. BTC/USD Daily Metrics

OHLC (Open, High, Low, Close) price data

GET usd_ohlc
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/usd_ohlc"
import requests response = requests.get( "https://api.timechainindex.com/usd_ohlc", headers={"X-API-Key": "YOUR_API_KEY"} ) metrics = response.json() for metric in metrics[-10:]: print(metric)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/usd_ohlc', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(`Metrics records: ${data.length}`); data.slice(-10).forEach(metric => { console.log(metric); }); }) .catch(err => console.error('Error:', err));

Entities History APIs

Bitcoin entity movements (exchanges, wallets, etc.)

1. Cenralized Exchanges Historical Balances Summary

Summary of all CEXs historical summary

GET cex_history_summary
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/cex_history_summary/"
import requests response = requests.get( "https://api.timechainindex.com/cex_history_summary/", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for entity in data[-10:]: print(entity)
const apiKey = 'YOUR_API_KEY'; fetch('https://api.timechainindex.com/cex_history_summary/', { headers: { 'X-API-Key': apiKey } }) .then(res => res.json()) .then(data => { console.log(data.slice(-10)); }) .catch(err => console.error('Error:', err));

2. Entities Latest Balances

Summary of all entities latest balances

GET entitysummary
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/entitysummary/"
import requests response = requests.get( "https://api.timechainindex.com/entitysummary/", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for entity in data[:10]: print(entity)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/entitysummary/', { headers: { 'X-API-Key': apiKey } } ) ) .then(res => res.json()) .then(data => { console.log(data.slice(0, 10)); }) .catch(err => console.error('Error:', err));

3. Top 30 CEXs Historical Changes

Historical changes for top 30 exchanges (1D, 2D, 7D, 14D, 1M, 3M, 6M, 1Y)

GET cex_top_30_pivot_dif/
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/cex_top_30_pivot_dif/"
import requests response = requests.get( "https://api.timechainindex.com/cex_top_30_pivot_dif/", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for exchange in data[:10]: # Show first 10 print(exchange)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/cex_top_30_pivot_dif/', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(`Exchanges: ${data.length}`); data.slice(0, 10).forEach(exchange => { console.log(exchange); }); }) .catch(err => console.error('Error:', err));

4. Tags Historical Change

Historical changes by tag (1D, 2D, 7D, 14D, 1M, 3M, 6M, 1Y, YTD)

GET tags_history_pivot_dif/
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/tags_history_pivot_dif/"
import requests response = requests.get( "https://api.timechainindex.com/tags_history_pivot_dif/", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for tag in data: print(tag)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/tags_history_pivot_dif/', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.forEach(tag => { console.log(tag); }); }) .catch(err => console.error('Error:', err));

5. Bitcoin Distribution

Bitcoin distribution

GET distribution_pie_chart/
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/distribution_pie_chart/"
import requests response = requests.get( "https://api.timechainindex.com/distribution_pie_chart/", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() print(data)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/distribution_pie_chart/', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.error('Error:', err));

6. Coinbase Bitcoin Under Management

Entity holdings under Coinbase Custody Management

GET coinbase_bum/
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/coinbase_bum/"
import requests response = requests.get( "https://api.timechainindex.com/coinbase_bum/", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for entity in data: print(entity)
const apiKey = 'YOUR_API_KEY'; fetch('https://api.timechainindex.com/coinbase_bum/', { headers: { 'X-API-Key': apiKey } }) .then(res => res.json()) .then(data => { data.forEach(entity => { console.log(entity); }); }) .catch(err => console.error('Error:', err));

U.S. Bitcoin ETF APIs

US-listed Bitcoin ETF flows and holdings from SEC 13F filings.

1. ETFs Historical Holdings

Historical Bitcoin holdings of all U.S. ETFs

GET us_etfs_historical
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/us_etfs_historical"
import requests response = requests.get( "https://api.timechainindex.com/us_etfs_historical", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for entry in data: print(entry)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/us_etfs_historical', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.forEach(record => { console.log(record); }); }) .catch(err => console.error('Error:', err));

2. ETF Net Flow

Net flow (Inflow - Outflow) for Bitcoin ETFs

GET us_etfs_netflow
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/us_etfs_netflow"
import requests response = requests.get( "https://api.timechainindex.com/us_etfs_netflow", headers={"X-API-Key": "YOUR_API_KEY"} ) netflows = response.json() for record in netflows: print(record)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/us_etfs_netflow', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.forEach(record => { console.log(record); }); }) .catch(err => console.error('Error:', err));

3. ETFs Latest Balances

Summary statistics and current status of all Bitcoin ETFs

GET us_etfs_summary
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/us_etfs_summary"
import requests response = requests.get( "https://api.timechainindex.com/us_etfs_summary", headers={"X-API-Key": "YOUR_API_KEY"} ) summary = response.json() print(summary)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/us_etfs_summary', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.error('Error:', err));

4. Supply to Net Flow (Accumulated)

Ratio of Bitcoin mined supply vs ETF net flow

GET us_etfs_supply_to_netflow
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/us_etfs_supply_to_netflow"
import requests response = requests.get( "https://api.timechainindex.com/us_etfs_supply_to_netflow", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for record in data: print(record)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/us_etfs_supply_to_netflow', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.forEach(record => { console.log(record); }); }) .catch(err => console.error('Error:', err));

5. SEC 13F Company Summary

Quarterly company holdings summaries

GET [YEAR]q[QUARTER]_companysummary

Available Quarterly Filings:

  • From 2024q1 until 2026q1
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/2026q1_companysummary"
import requests quarter_period = "2026q1" # Format: YYYYqQ response = requests.get( f"https://api.timechainindex.com/{quarter_period}_companysummary", headers={"X-API-Key": "YOUR_API_KEY"} ) summary = response.json() print(f"Companies: {len(summary)}") for company in summary[:5]: print(company)
const apiKey = 'YOUR_API_KEY'; const quarterPeriod = '2026q1'; // Format: YYYYqQ fetch( `https://api.timechainindex.com/${quarterPeriod}_companysummary`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(`Companies: ${data.length}`); data.slice(0, 5).forEach(company => { console.log(company); }); }) .catch(err => console.error('Error:', err));

6. SEC 13F ETF Summary

Quarterly ETF-specific holdings summaries

GET [YEAR]q[QUARTER]_etfsummary
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/2026q1_etfsummary"
import requests quarter_period = "2026q1" # Format: YYYYqQ response = requests.get( f"https://api.timechainindex.com/{quarter_period}_etfsummary", headers={"X-API-Key": "YOUR_API_KEY"} ) etf_data = response.json() print(f"ETFs in filing: {len(etf_data)}") for etf in etf_data[:5]: print(etf)
const apiKey = 'YOUR_API_KEY'; const quarterPeriod = '2026q1'; // Format: YYYYqQ fetch( `https://api.timechainindex.com/${quarterPeriod}_etfsummary`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { console.log(`ETFs in filing: ${data.length}`); data.slice(0, 5).forEach(etf => { console.log(etf); }); }) .catch(err => console.error('Error:', err));

7. SEC 13F Expanded Data

Expanded data from SEC 13F

GET [YEAR]q[QUARTER]_filingmain
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/2026q1_filingmain"
import requests quarter_period = "2026q1" # Format: YYYYqQ response = requests.get( f"https://api.timechainindex.com/{quarter_period}_filingmain", headers={"X-API-Key": "YOUR_API_KEY"} ) data = response.json() for row in etf_data[:5]: print(row)
const apiKey = 'YOUR_API_KEY'; const quarterPeriod = '2026q1'; // Format: YYYYqQ fetch( `https://api.timechainindex.com/${quarterPeriod}_filingmain`, { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.slice(0, 5).forEach(row => { console.log(row); }); }) .catch(err => console.error('Error:', err));

Miscellaneous APIs

Economic and pricing data including national debt and BTC/USD metrics.

1. US National Debt

GET us_debt
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/us_debt"
import requests response = requests.get( "https://api.timechainindex.com/us_debt", headers={"X-API-Key": "YOUR_API_KEY"} ) debt_data = response.json() print(debt_data)
const apiKey = 'YOUR_API_KEY'; fetch('https://api.timechainindex.com/us_debt', { headers: { 'X-API-Key': apiKey } }) .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error('Error:', err));

2. Japan National Debt

Historical data on Japan's national debt

GET japan_debt
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.timechainindex.com/japan_debt"
import requests response = requests.get( "https://api.timechainindex.com/japan_debt", headers={"X-API-Key": "YOUR_API_KEY"} ) debt_data = response.json() print(debt_data)
const apiKey = 'YOUR_API_KEY'; fetch( 'https://api.timechainindex.com/japan_debt', { headers: { 'X-API-Key': apiKey } } ) .then(res => res.json()) .then(data => { data.forEach(record => { console.log(record); }); }) .catch(err => console.error('Error:', err));