Skip to main content

Download Crypto Currency Data from different exchanges.

Project description

PyPI - Python Version PyPI PyPI - Status CI License Documentation Status Coverage Docstring Coverage Downloads

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

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

dccd-2.2.0.tar.gz (75.5 kB view details)

Uploaded Source

Built Distribution

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

dccd-2.2.0-py3-none-any.whl (101.0 kB view details)

Uploaded Python 3

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

Hashes for dccd-2.2.0.tar.gz
Algorithm Hash digest
SHA256 0e17ab63e65608979ddd0ba187a9bf49dbf44210380d78f0957f2b4be80aeb79
MD5 c61ebc6a7fef00f7b801edb0c881857c
BLAKE2b-256 94e35ac7f42106d68c4f5c71af2e4293024fe911ad62487e40d8ce71f5538bb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dccd-2.2.0.tar.gz:

Publisher: release.yml on ArthurBernard/Download_Crypto_Currencies_Data

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for dccd-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d966a4671e2854cd18f078de9f2ff30fa1467d5d7a26b23d84960c310df79ea8
MD5 84668c54350d5a9fc1fabc3e75192fca
BLAKE2b-256 81fdb8fbe1f6615eeb7dbd83140af7c54b1f63b4803ccd786f5464541ec72eb9

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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