Download Crypto Currency Data from different exchanges.
Project description
Python package to download crypto-currency data (OHLCV, trades, order book) from multiple exchanges via REST and WebSocket APIs. Data can be saved to CSV, Excel, SQLite, PostgreSQL, or Parquet.
Installation
From pip:
$ pip install dccd
With optional Parquet / Polars support:
$ pip install "dccd[io]"
With autonomous daemon support (APScheduler + PyYAML):
$ pip install "dccd[daemon]"
From source:
$ git clone https://github.com/ArthurBernard/Download_Crypto_Currencies_Data $ cd Download_Crypto_Currencies_Data $ pip install -e .
Supported exchanges
Exchange |
REST OHLCV |
REST Trades |
REST Order Book |
WS OHLCV |
WS Trades |
WS Order Book |
|---|---|---|---|---|---|---|
Binance |
✓ |
✓ |
✓ |
✓ |
✓ |
|
Coinbase |
✓ |
✓† |
✓ |
|||
Kraken |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Bybit |
✓ |
✓† |
✓ |
✓ |
✓ |
|
OKX |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Bitfinex |
✓* |
✓ |
✓ |
|||
Bitmex |
✓ |
✓ |
* Bitfinex WS OHLCV is aggregated from the trades stream via get_ohlc_bitfinex.
† Recent trades only (Bybit ≤ 1 000, Coinbase ≤ 100) — no deep historical pagination via the public REST API.
Presentation
- Historical Downloader dccd.histo_dl
Download OHLCV data via REST APIs and save to disk. Supports chunked requests, automatic retry on rate-limit (HTTP 429), and incremental updates from the last saved timestamp.
- Continuous Downloader dccd.continuous_dl
Stream real-time data (order book, trades) via WebSocket with automatic reconnection and configurable processing/saving callbacks.
- Daemon dccd.daemon
Autonomous, server-side collector driven by a YAML config. Runs REST jobs on a schedule (APScheduler), opens WebSocket streams for real-time collection, and periodically syncs all local data to one or more remote destinations (NAS, S3, SFTP, …) via rclone. Multiple remotes and a configurable sync interval are supported; collection is never blocked by remote availability.
Output formats
Historical data can be saved as CSV, Excel (.xlsx), SQLite, PostgreSQL (via SQLAlchemy), or Parquet (requires dccd[io]). Parquet files can be read back as either a pandas.DataFrame or a polars.DataFrame.
Quick start
Historical data (pandas):
from dccd.histo_dl import FromBinance
obj = FromBinance('/path/to/data/', 'BTC', 3600, fiat='USDT')
obj.import_data(start='2024-01-01 00:00:00', end='2024-12-31 00:00:00')
obj.save(form='parquet')
df = obj.get_data() # pandas DataFrame
Polars output:
df_pl = obj.get_data(format='polars')
Incremental update (resume from last saved point):
obj.import_data(start='last', end='now').save(form='parquet')
Other exchanges:
from dccd.histo_dl import FromKraken, FromBybit, FromOKX
FromKraken('/path/', 'ETH', 3600).import_data(start='2024-01-01', end='now').save()
FromBybit('/path/', 'BTC', 86400).import_data(start='2024-01-01', end='now').save()
FromOKX('/path/', 'BTC', 3600).import_data(start='2024-01-01', end='now').save()
Trades (historical or recent):
from dccd.histo_dl import FromBinance, FromKraken
obj = FromBinance('/path/', 'BTC', 3600, fiat='USDT')
obj.import_trades(start='2024-01-01 00:00:00', end='2024-01-02 00:00:00')
obj.save_trades(form='csv')
df = obj.trades_df # pandas DataFrame — columns: timestamp, price, amount, type, tid
# Kraken also supports full history; Bybit/Coinbase return recent-only snapshots
FromKraken('/path/', 'BTC', 3600).import_trades(start='2024-01-01', end='2024-01-02').save_trades()
Order book snapshot:
from dccd.histo_dl import FromOKX
obj = FromOKX('/path/', 'BTC', 3600)
obj.import_orderbook(depth=50)
obj.save_orderbook(form='csv')
df = obj.orderbook_df # columns: side, price, amount, count
Daemon (autonomous collector) — config.yml:
storage:
local_path: /data/crypto/
remotes:
- provider: rclone
remote: "mynas:crypto/"
sync_interval: 3600
histo_jobs:
- exchange: binance
pairs: [BTC/USDT, ETH/USDT]
span: 3600
format: parquet
by_period: Y
stream_jobs:
- exchange: binance
pairs: [BTC/USDT]
channels: [trades, book]
time_step: 60
from dccd.daemon.config import load_config
from dccd.daemon.scheduler import run_once, build_histo_scheduler
from dccd.daemon.stream_manager import StreamManager
config = load_config('config.yml')
# One-shot: download all histo jobs once, then exit
run_once(config)
# Daemon mode: periodic REST + live WebSocket streams
scheduler = build_histo_scheduler(config)
scheduler.start()
mgr = StreamManager(config)
mgr.start() # runs until mgr.stop() is called
Links
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 dccd-2.2.0.tar.gz.
File metadata
- Download URL: dccd-2.2.0.tar.gz
- Upload date:
- Size: 75.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e17ab63e65608979ddd0ba187a9bf49dbf44210380d78f0957f2b4be80aeb79
|
|
| MD5 |
c61ebc6a7fef00f7b801edb0c881857c
|
|
| BLAKE2b-256 |
94e35ac7f42106d68c4f5c71af2e4293024fe911ad62487e40d8ce71f5538bb8
|
Provenance
The following attestation bundles were made for dccd-2.2.0.tar.gz:
Publisher:
release.yml on ArthurBernard/Download_Crypto_Currencies_Data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dccd-2.2.0.tar.gz -
Subject digest:
0e17ab63e65608979ddd0ba187a9bf49dbf44210380d78f0957f2b4be80aeb79 - Sigstore transparency entry: 1563929541
- Sigstore integration time:
-
Permalink:
ArthurBernard/Download_Crypto_Currencies_Data@37861e8816503532622e6940bb5ef772d379cd5d -
Branch / Tag:
refs/tags/v2.2.0 - Owner: https://github.com/ArthurBernard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@37861e8816503532622e6940bb5ef772d379cd5d -
Trigger Event:
push
-
Statement type:
File details
Details for the file dccd-2.2.0-py3-none-any.whl.
File metadata
- Download URL: dccd-2.2.0-py3-none-any.whl
- Upload date:
- Size: 101.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d966a4671e2854cd18f078de9f2ff30fa1467d5d7a26b23d84960c310df79ea8
|
|
| MD5 |
84668c54350d5a9fc1fabc3e75192fca
|
|
| BLAKE2b-256 |
81fdb8fbe1f6615eeb7dbd83140af7c54b1f63b4803ccd786f5464541ec72eb9
|
Provenance
The following attestation bundles were made for dccd-2.2.0-py3-none-any.whl:
Publisher:
release.yml on ArthurBernard/Download_Crypto_Currencies_Data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dccd-2.2.0-py3-none-any.whl -
Subject digest:
d966a4671e2854cd18f078de9f2ff30fa1467d5d7a26b23d84960c310df79ea8 - Sigstore transparency entry: 1563929545
- Sigstore integration time:
-
Permalink:
ArthurBernard/Download_Crypto_Currencies_Data@37861e8816503532622e6940bb5ef772d379cd5d -
Branch / Tag:
refs/tags/v2.2.0 - Owner: https://github.com/ArthurBernard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@37861e8816503532622e6940bb5ef772d379cd5d -
Trigger Event:
push
-
Statement type: