Skip to main content

Glassnode API client that mimics the yfinance download experience.

Project description

glassnode-python

Glassnode API toolkit with a yfinance-style interface.

Chinese version


✨ Feature Highlights

Capability Details
yfinance-style download() Mirrors yfinance.download semantics including period, interval, metrics, threads, group_by, and progress hooks.
Multi-metric alias registry Built-in alias table for price, OHLC, marketcap, and other endpoints, plus support for custom endpoint dictionaries.
Request resilience Injects API keys automatically, supports proxy-aware requests.Session, and retries with exponential backoff on 429/50x responses.
Pandas-native output DateTime index + MultiIndex columns flow directly into NumPy, pandas, polars, or backtesting engines.
Visualization ready Bundled Plotly script launches a TradingView-style ETH/SOL dashboard with one command.

📦 Installation

pip install glassnode-python           # coming soon on PyPI
pip install -e .[test]                 # developer setup
pip install -e .[viz]                  # Plotly dashboard extras

Until the project is on PyPI you can install straight from the repository root:

pip install .

⚡ Quickstart (30 seconds)

from glassnode_python import download
from dotenv import load_dotenv
import os

load_dotenv()
api_key = os.environ["GLASSNODE_API_KEY"]

btc = download("BTC", period="3mo", metrics=["price"], api_key=api_key)
print(btc.tail())

The helper returns a pandas dataframe with a DateTime index and a column MultiIndex of (Attribute, Ticker) by default.


🧰 Essential Recipes

Multi-asset OHLC (yfinance style)

rich = download(
	["BTC", "ETH", "SOL"],
	period="1y",
	interval="24h",
	metrics=["ohlc"],
	group_by="ticker",   # switch to (Ticker, Attribute)
	threads=True,
	api_key=api_key,
)

Mix & match metrics

matrix = download(
	"BTC",
	metrics=["price", "marketcap", "mvrv"],
	period="6mo",
	rounding=2,
	dropna=True,
	api_key=api_key,
)

Custom endpoint mapping

download(
	"ETH",
	metrics={
		"sopr": {"endpoint": "/v1/metrics/market/sopr"},
		"ohlc": {"endpoint": "/v1/metrics/market/price_usd_ohlc", "multi": True},
		"fees": {
			"endpoint": "/v1/metrics/transactions/transfers_volume_sum",
			"column": "TransferVolume",
		},
	},
	api_key=api_key,
)

Full-control client

from glassnode_python import GlassnodeClient
import requests

session = requests.Session()
session.headers.update({"User-Agent": "glassnode-python/0.2"})

client = GlassnodeClient(
	api_key=api_key,
	session=session,
	proxies={"https": "http://127.0.0.1:7890"},
	max_retries=5,
	retry_backoff=1.5,
)

df = client.download(
	["BTC", "SOL"],
	start="2025-01-01",
	end="2025-12-31",
	metrics=["price", "volume"],
	progress=False,
)

📊 Metric Alias Catalog

Alias Endpoint Columns
ohlc /v1/metrics/market/price_usd_ohlc Open, High, Low, Close
price /v1/metrics/market/price_usd_close Price
marketcap /v1/metrics/market/marketcap_usd Marketcap
volume /v1/metrics/market/spot_volume_daily_sum Volume
mvrv /v1/metrics/market/mvrv Mvrv
realizedcap /v1/metrics/market/realizedcap_usd RealizedCap

Aliases respect group_by, rounding, and fill methods so the dataframe layout stays predictable.


📺 TradingView-like Dashboard

pip install -e .[viz]
python scripts/eth_sol_tradingview.py
  • Fetches one year of daily OHLC candles for ETH and SOL (sequential mode to stay within rate limits).
  • Adds EMA20/EMA50 overlays plus Plotly dark theme, linked hover, and full zoom/pan controls.
  • Customize via the EMA_WINDOWS constant or export HTML with fig.write_html().

🔐 API Keys & Environment

echo "GLASSNODE_API_KEY=your-secret" >> .env
  • If api_key is omitted, the module lazily loads .env on first use.
  • Pass api_key= for one-off calls or client= to reuse a configured GlassnodeClient.

🧪 Testing & Release Flow

pip install -e .[test]
pytest

python -m build
twine upload dist/*

Update __version__ inside src/glassnode_python/__init__.py and the project.version in pyproject.toml before cutting a release.


📄 License

GNU GPLv3 — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glassnode_python-0.3.0.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glassnode_python-0.3.0-py3-none-any.whl (36.4 kB view details)

Uploaded Python 3

File details

Details for the file glassnode_python-0.3.0.tar.gz.

File metadata

  • Download URL: glassnode_python-0.3.0.tar.gz
  • Upload date:
  • Size: 51.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for glassnode_python-0.3.0.tar.gz
Algorithm Hash digest
SHA256 606000bd781db091aa94667e656a655782036ad9f6b43d28c869ff1511af44fd
MD5 c47654583d14eaae20be9fcb9ddf17a8
BLAKE2b-256 a445d7f2fb08eceadda00864fa8f1d00426acc463d0d074be334c0f3a13cf5ee

See more details on using hashes here.

File details

Details for the file glassnode_python-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for glassnode_python-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 00db35c61054b92c5df2496e327d37693cd6e26d7b6c966bb8a3663917c4d89d
MD5 7f4bef9230afd5f3e3637e6824e57ae8
BLAKE2b-256 e485fefaeefc7af950eaa002334442e915df4d1568bc9feacfbb767c8eed16bd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page