Python SDK for accessing cryptocurrency high-frequency trading data
Project description
CryptoHFTData Python SDK
cryptohftdata is a Python SDK for downloading high-frequency cryptocurrency
market data as pandas DataFrames.
It is designed for research scripts, notebooks, and production ingestion jobs that need a simple interface over the CryptoHFTData parquet dataset.
Installation
pip install cryptohftdata
Quick Start
Dataset downloads require an API key. Export CRYPTOHFTDATA_API_KEY or pass
api_key= explicitly.
import os
import cryptohftdata as chd
chd.configure_client(api_key=os.environ["CRYPTOHFTDATA_API_KEY"])
exchange = chd.exchanges.BINANCE_FUTURES
symbols = chd.list_symbols(exchange, data_type="trades")
if "BTCUSDT" not in symbols:
raise RuntimeError("BTCUSDT is not currently listed for Binance futures trades")
trades = chd.get_trades(
symbol="BTCUSDT",
exchange=exchange,
start_date="2025-08-01",
end_date="2025-08-01",
max_workers=4,
)
print(trades.head())
print(f"rows={len(trades)} columns={list(trades.columns)}")
Authentication Model
list_symbols(),list_exchanges(), andget_exchange_info()query API metadata and can be used without an API key.- Dataset download helpers such as
get_trades()andget_mark_price()download parquet files and require an API key. - The convenience helpers also accept client configuration kwargs such as
api_key,base_url,timeout,max_retries,rate_limit, anduse_jwt.
Public API
Convenience helpers
Use the top-level helpers when you want the shortest path from notebook code to DataFrame output:
import cryptohftdata as chd
chd.configure_client(api_key="your-api-key")
trades = chd.get_trades("BTCUSDT", chd.exchanges.BINANCE_FUTURES, "2025-08-01", "2025-08-01")
mark_price = chd.get_mark_price("BTCUSDT", chd.exchanges.BINANCE_FUTURES, "2025-08-01", "2025-08-01")
Explicit client usage
Use CryptoHFTDataClient when you want explicit configuration, context-manager
usage, or cache inspection:
from cryptohftdata import CryptoHFTDataClient, exchanges
with CryptoHFTDataClient(api_key="your-api-key", timeout=60, rate_limit=10) as client:
info = client.get_exchange_info(exchanges.BYBIT_FUTURES)
trades = client.get_trades(
"ETHUSDT",
exchanges.BYBIT_FUTURES,
"2025-08-01",
"2025-08-01",
max_workers=2,
)
print(info["supported_data_types"])
print(client.get_cache_info())
Data Sets
All dataset download helpers return pandas DataFrames. Column names can vary by exchange, but these are the typical shapes:
| Helper | Typical columns |
|---|---|
get_klines() |
open_time, open, high, low, close, volume |
get_orderbook() |
timestamp, side, level, price, size |
get_trades() |
timestamp, trade_id, price, quantity, side |
get_ticker() |
timestamp, open, high, low, close, volume |
get_mark_price() |
timestamp, mark_price, index_price, funding_rate, next_funding_time |
get_open_interest() |
timestamp, symbol, exchange, open_interest |
get_liquidations() |
timestamp, side, price, quantity, order_id |
You can inspect the in-package schema reference if you want a structured summary at runtime:
from cryptohftdata import get_dataset_schema
schema = get_dataset_schema("trades")
print(schema.typical_columns)
Supported Exchanges
Use the SDK itself to discover supported exchanges and dataset coverage instead of hard-coding assumptions:
import cryptohftdata as chd
for exchange in chd.list_exchanges():
info = chd.get_exchange_info(exchange)
print(exchange, info["type"], info["supported_data_types"])
The package also exposes constants through chd.exchanges, for example:
chd.exchanges.BINANCE_SPOTchd.exchanges.BINANCE_FUTURESchd.exchanges.BYBIT_SPOTchd.exchanges.BYBIT_FUTURESchd.exchanges.KRAKEN_FUTURES
Error Handling
The most common exceptions are:
ValidationErrorfor invalid symbols, exchange identifiers, or date rangesConfigurationErrorwhen a dataset download is attempted without an API keyAuthenticationErrorwhen credentials are rejectedAPIErrorfor API-side failures or malformed responses
Example:
import cryptohftdata as chd
try:
chd.get_trades("BTCUSDT", chd.exchanges.BINANCE_FUTURES, "2025-08-02", "2025-08-01")
except chd.ValidationError as exc:
print(f"invalid request: {exc}")
Examples and Docs
- Example scripts live in
sdk/python/examples/ - Documentation source files live in
sdk/python/docs/ - Package docstrings are available through
help(cryptohftdata)andhelp(cryptohftdata.CryptoHFTDataClient)
Development
From a source checkout:
cd sdk/python
pip install -e ".[dev,docs,test]"
pytest
sphinx-build -b html docs docs/_build/html
Support
- Documentation: https://cryptohftdata.com/docs
- Support: https://cryptohftdata.com/support
- Homepage: https://cryptohftdata.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cryptohftdata-0.2.2.tar.gz.
File metadata
- Download URL: cryptohftdata-0.2.2.tar.gz
- Upload date:
- Size: 45.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebee30a392563556c48999f82ff006dbba1d468eec931a0065a925104584b1aa
|
|
| MD5 |
bfdbcb915d5000e25c0b08ab78baadc8
|
|
| BLAKE2b-256 |
19303a2cd6acff33c643cec47ddd17e73e2bf2a0ae3af64e2bb139ad98fdffd6
|
File details
Details for the file cryptohftdata-0.2.2-py3-none-any.whl.
File metadata
- Download URL: cryptohftdata-0.2.2-py3-none-any.whl
- Upload date:
- Size: 24.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89f2fd0a1c9411817e1c8e389cd355ab9911305b28e997a7231e5a4d0b76d63a
|
|
| MD5 |
21597d4b42e8c8d96683b9a9eca1de06
|
|
| BLAKE2b-256 |
2f934ed236b73d64cb35444e8462585b64e0a72fd344da7beb2e0125daa941dd
|