Skip to main content

Cryptocurrency Exchange Feed Handler

License Python PyPi

Handles multiple cryptocurrency exchange data feeds and returns normalized and standardized results to client registered callbacks for events like trades, book updates, ticker updates, etc. Utilizes websockets when possible, but can also poll data via REST endpoints if a websocket is not provided.

Supported exchanges

Basic Usage

Create a FeedHandler object and add subscriptions. For the various data channels that an exchange supports, you can supply callbacks for data events, or use provided backends (described below) to handle the data for you. Start the feed handler and you're done!

from cryptofeed import FeedHandler
# not all imports shown for clarity

fh = FeedHandler()

# ticker, trade and book are user defined coroutine functions, each taking the
# normalized object and the timestamp cryptofeed received the message at:
#
#     async def trade(t, receipt_timestamp):
#         print(f'{t.exchange} {t.symbol} {t.side} {t.amount} @ {t.price}')
#
# a callback must be async - wrap a synchronous one in cryptofeed.callback.ExecutorCallback
ticker_cb = {TICKER: ticker}
trade_cb = {TRADES: trade}
gemini_cb = {TRADES: trade, L2_BOOK: book}


fh.add_feed(Coinbase(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Bitfinex(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Poloniex(symbols=['BTC-USDT'], channels=[TRADES], callbacks=trade_cb))
fh.add_feed(Gemini(symbols=['BTC-USD', 'ETH-USD'], channels=[TRADES, L2_BOOK], callbacks=gemini_cb))

fh.run()

National Best Bid/Offer (NBBO)

Cryptofeed also provides a synthetic NBBO (National Best Bid/Offer) feed that aggregates the best bids and asks from the user specified feeds.

from cryptofeed import FeedHandler
from cryptofeed.exchanges import Coinbase, Gemini, Kraken


async def nbbo_update(symbol, bid, bid_size, ask, ask_size, bid_feed, ask_feed):
    print(f'Pair: {symbol} Bid Price: {bid:.2f} Bid Size: {bid_size:.6f} Bid Feed: {bid_feed} Ask Price: {ask:.2f} Ask Size: {ask_size:.6f} Ask Feed: {ask_feed}')


def main():
    f = FeedHandler()
    f.add_nbbo([Coinbase, Kraken, Gemini], ['BTC-USD'], nbbo_update)
    f.run()

Supported Channels

Cryptofeed supports the following public data channels from exchanges

  • L1_BOOK - Top of book
  • L2_BOOK - Price aggregated sizes. Some exchanges provide the entire depth, some provide a subset.
  • L3_BOOK - Price aggregated orders. Like the L2 book, some exchanges may only provide partial depth.
  • TRADES - Note this reports the taker's side, even for exchanges that report the maker side.
  • TICKER
  • FUNDING
  • OPEN_INTEREST - Open interest data.
  • LIQUIDATIONS
  • INDEX
  • CANDLES - Candlestick / K-Line data.

Backends

Cryptofeed supports backend callbacks that will write directly to storage or other interfaces.

Supported Backends:

  • Redis (Sorted Sets, Streams and Keys)
  • ZeroMQ
  • UDP Sockets
  • TCP Sockets
  • Unix Domain Sockets
  • InfluxDB v2
  • MongoDB
  • Kafka
  • PostgreSQL
  • QuestDB

Data Capture and Replay

Cryptofeed can record data from data feeds to standard pcap files for later replay

from cryptofeed import FeedHandler

# `record` is a pcap file path or a directory
fh = FeedHandler(record='sample_data/')
fh.add_feed('COINBASE', symbols=['BTC-USD'], channels=[TRADES, L2_BOOK], callbacks=...)
fh.run()

examples/record.py wraps this into a small recording tool. The pcaps are zstandaard compressed by default. Wireshark and tshark open these files natively and playback decompresses transparently. Metadata is stored in .meta.json.

Installation

Note: cryptofeed requires Python 3.13+

Cryptofeed can be installed from PyPi. (It's recommended that you install in a virtual environment of your choosing).

pip install cryptofeed

Cryptofeed has optional dependencies, depending on the backends used. You can install them individually, or all at once. To install Cryptofeed along with all its optional dependencies in one bundle:

pip install cryptofeed[all]

If you wish to clone the repository and work on it (development uses uv), run this from the root of the cloned repository:

uv sync

Alternatively, you can install from source in editable mode with pip:

pip install -e .

Performance

Measured on Python 3.14.6 based on throughput over real recorded exchange traffic.

Operation Result
Trade construct / to_dict / from_dict 102 ns / 214 ns / 277 ns
Ticker / Candle / Funding construct 70 ns / 118 ns / 141 ns
Book single level update / delete / top-of-book read 89 ns / 124 ns / 140 ns
Book to_dict, 10 / 100 levels per side 2.4 µs / 22.2 µs
Checksum, Kraken / OKX format (200 levels) 2.0 µs / 6.1 µs
JSON decode with Decimal (msgspec / stdlib fallback) 1.39M / 0.60M msg/s
JSON encode to str / bytes 4.65M / 5.25M msg/s
Message handler, Kraken / Bybit / KuCoin / Kraken Futures 161k / 134k / 122k / ~100k frames/s

Future Work

There are a lot of planned features, new exchanges, etc planned! If you'd like to discuss ongoing development, please join the discord or open a thread in the discussions in GitHub.

Contributing

Issues and PRs are welcomed!

Cryptofeed wouldn't be possible without the help of many contributors! I owe them and all other contributors my thanks!

Donations / Support

Support and donations are appreciated but not required. You can donate via GitHub Sponsors, or via the addresses below:

  • Bitcoin: bc1qm0kxz8hqacaglku5fjhfe9a5hjnuyfwk02lsyr
  • Ethereum: 0x690709FEe13eEce9E7852089BB2D53Ae5D073154

Release files for cryptofeed 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cryptofeed 3.0.0
File Size Uploaded
cryptofeed-3.0.0.tar.gz 147.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cryptofeed 3.0.0
File
cryptofeed-3.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
cryptofeed-3.0.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
cryptofeed-3.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
cryptofeed-3.0.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
cryptofeed-3.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
cryptofeed-3.0.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details

Total release size: 4.8 MB

Release files / cryptofeed-3.0.0.tar.gz

Download URL cryptofeed-3.0.0.tar.gz
Size 147.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8488f48ff076e80975a634929e8004461b9b840e32398dfefebe1cd52ef1f6fb
BLAKE2b-256 checksum
How to use checksums
1efd328f6300e367decd5407971c828446f96135de429e3c9ac9422e4503401d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / cryptofeed-3.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cryptofeed-3.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
987dbca5467a89ff1c5986b7611a9512899ce1f3b5cd684dfe7386676b6760ce
BLAKE2b-256 checksum
How to use checksums
2e58b809388578c873c0685ff386a6cb3e76c7c3f84d270daf3da39b23e6780d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / cryptofeed-3.0.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL cryptofeed-3.0.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 323.0 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c52f20aa725f5dd4c548824d4dbdf5b7d9ecb26399195c729d15f630ca563f41
BLAKE2b-256 checksum
How to use checksums
45a709b4299940cdff85d5203931eae45d31af42bb16187a808f08b7665b6d08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / cryptofeed-3.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cryptofeed-3.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1ac499019bc0834fc9bc02df247a4e94fc5bb50f7f014bdb640f7f2db8eac451
BLAKE2b-256 checksum
How to use checksums
e45a60b2158cc12dd7ecc2759b8c70da21da47f715043b6381933ec89ad27fc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / cryptofeed-3.0.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL cryptofeed-3.0.0-cp314-cp314-macosx_11_0_arm64.whl
Size 304.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3370f1d14f32a3d58cae89d736104ef1390b19d59c0d55abd1446a9aa7799231
BLAKE2b-256 checksum
How to use checksums
9821b69e35c1ea85530292ebcdf3a6bb8f392dc00718d44e4f402b8cc4a3d4d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / cryptofeed-3.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cryptofeed-3.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.2 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6c7afdda797063770efa90a23c535ad7008d63e73a5c5f82777c46d769719d3e
BLAKE2b-256 checksum
How to use checksums
03c34b623988c370b28d774a61a58fd760e6e8b6db0c0d710673f8e703b9ac57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / cryptofeed-3.0.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL cryptofeed-3.0.0-cp313-cp313-macosx_11_0_arm64.whl
Size 302.6 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4adbc1c3c8cbaf389e83e7716cf9b7233e1873436eb0e8006fab09aac6b3fc63
BLAKE2b-256 checksum
How to use checksums
3cbefe033ac51a474b38e53c5234c35919cd04500212270e636310caf126117a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

3.0.1

7 release files

This release

3.0.0 This release

7 release files

2.5.0

3 release files

2.4.1

5 release files

2.4.0

4 release files

2.3.2

6 release files

2.3.1

7 release files

2.3.0

7 release files

2.2.3

7 release files

2.2.2

7 release files

2.2.1

7 release files

2.2.0

7 release files

2.1.2

7 release files

2.1.1

7 release files

2.1.0

7 release files

2.0.3

7 release files

2.0.2

7 release files

2.0.1

7 release files

2.0.0

7 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.1

1 release file

1.9.0

1 release file

1.8.2

1 release file

1.8.1

1 release file

1.8.0

1 release file

1.7.0

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6.0

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.1

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.0

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.25.0

1 release file

0.24.0

1 release file

0.23.0

1 release file

0.22.2

1 release file

0.22.1

1 release file

0.22.0

1 release file

0.21.1

1 release file

0.21.0

1 release file

0.20.2

1 release file

0.20.1

1 release file

0.20.0

1 release file

0.19.2

1 release file

0.19.1

1 release file

0.19.0

1 release file

0.18.0

1 release file

0.17.4

1 release file

0.17.3

1 release file

0.17.2

1 release file

0.17.1

1 release file

0.17.0

1 release file

0.16.0

1 release file

0.15.0

1 release file

0.14.1

1 release file

0.14.0

1 release file

0.13.3

1 release file

0.13.2

1 release file

0.13.1

1 release file

0.13.0

1 release file

0.12.0

1 release file

0.11.1

1 release file

0.11.0

1 release file

0.10.1

1 release file

0.10.0

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.8.0

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page