
2,923 stars · AGPL-3.0; the sidebar links a licence without naming it, the README badge says AGPL, and PyPI's metadata gives AGPL-3.0-or-later · v3.0.1 (2026-09-27) · Track this in Scout
Receives live market data from 28 exchanges, normalises it to one shape, and can write it straight into nine kinds of store.
▶Repo detailsthe review · specs · pros & cons · install
What it does
You list the exchanges you want, the kinds of data you want, and the functions that should receive them. It opens a websocket to each exchange, or polls where no websocket exists, and calls your functions as updates arrive. Ten kinds of data are covered: the top of the order book, the aggregated book at two depths, trades, the ticker, funding, open interest, liquidations, an index, and candles. It can also build a synthetic best bid and offer across several exchanges at once, which no single exchange can give you. Instead of your own functions, it can write to Redis, ZeroMQ, plain network sockets, InfluxDB, MongoDB, Kafka, PostgreSQL or QuestDB, so a recording setup is configuration rather than code. It can record to capture files for replay later, compressed, with a small metadata file beside each one. The newest release is 3.0.1, from 27 September 2026, confirmed on the public package index, and code landed on 14 October 2026. What it does not promise is delivery. The depth of the order book varies by exchange, trades always report the taker's side even where the exchange reports the maker's, and one exchange in the table is spot markets only.
Why it matters
Who it suits. Anyone collecting market data who has written their own exchange connector once and does not want to write a second. It suits a research setup especially well, because pointing it at PostgreSQL or QuestDB gives you a recorded history without writing any storage code. Skip it if one exchange is enough and its own library works, because this adds a dependency to solve a problem you do not have yet.
Verdict. The right tool for collecting market data, and the thing to check first is the Python version. It asks for Python 3.13 or newer, which is the newest floor in today's twelve and will stop an older environment dead. Beyond that, two cautions worth stating. Callbacks have to be asynchronous, and a plain function needs wrapping before it can be used, which is the first thing that surprises people. And the AGPL-3.0 licence has consequences if you ship software built on this to other people, though it changes nothing for research or for a service you run privately. ccxt/ccxt at 43,900 stars is the better choice when you need to place orders as well as read prices, covering more than a hundred exchanges under an MIT licence; Edition 45 covered it. freqtrade/freqtrade at 55,000 stars is the finished application rather than a library, with backtesting and paper trading in the same program; Edition 29 covered it.
- 28 exchanges and ten kinds of data arrive in one shape, so adding an exchange is a line of configuration.
- Nine storage backends are built in, which turns recording a market history into configuration rather than code.
- A synthetic best bid and offer across several exchanges, which no single exchange publishes.
- It needs Python 3.13 or newer, which is a very recent floor for a library.
- Every callback must be asynchronous, and ordinary functions need wrapping first.
- AGPL-3.0, which matters if you distribute software built on top of it.
ccxt/ccxtOne interface in front of more than a hundred exchanges, for reading prices and placing orders, at 43,900 stars, under an MIT licence; Edition 45 covered it.
Track this in Scout
freqtrade/freqtradeA finished trading application with backtesting and paper trading rather than a library, at 55,000 stars, under GPL-3.0; Edition 29 covered it.
Track this in Scout
pip install cryptofeed pip install cryptofeed[all]