CCXT
One MIT client for 104 crypto exchanges, 76 of them over websocket.
Last updated
What it is
The connector layer almost everything else in this category is built on. CCXT normalises 104
exchange APIs to one set of method names — fetchOHLCV, fetchOrderBook, createOrder,
fetchBalance — so the code you write against one venue runs against the rest. It is a
client-side library: your keys stay in your process and your process talks to the exchange
directly, with nothing of the vendor's in between.
Version 4.5.81 of the Python wheel contains 104 REST exchange classes and 76 WebSocket classes
under ccxt/pro. Native versions exist for JavaScript and TypeScript, Python, PHP, C#, Go, Java
and Rust, all transpiled from one TypeScript source, which is why the method names and the
returned structures are the same in each.
The licence is MIT, taken from LICENSE.txt in the repository rather than the badge — "MIT
License, Copyright © 2024 Igor Kroitor". The Rust crate ccxt-pro declares MIT in its
Cargo.toml too.
Liveness, in dates: the last commit on master was 19 September 2026 at 10:07 UTC, and three
releases landed that same morning — v4.5.79 at 06:56, v4.5.80 at 09:26, v4.5.81 at 10:12. The
repository is not archived. Open issues stand at 236 with 495 open pull requests beside them;
those are worth separating, because the number GitHub's REST API reports adds the two together.
Pricing
Free, MIT, with nothing to buy — and the interesting part is how that is paid for, because this category is full of free software with a revenue model attached.
CCXT Pro is not a paid tier and has not been one for some time. This is the single fact most
likely to be stale in a reader's head, and the vendor's own pages disagree about it. The CCXT Pro
manual opens with "CCXT Pro is a free part of CCXT that adds support for WebSocket streaming". The
marketing site's FAQ still says "Optional paid products such as CCXT Pro websocket streaming are
built on top of the free library". The shipped artefact settles it: the MIT-licensed 4.5.81 wheel
on PyPI contains ccxt/pro/ with 76 websocket exchange modules, and the ccxt-pro Rust crate is
published at the same version under MIT.
The project earns from exchange broker programmes. Its own disclaimer says so in as many words — CCXT "is funded with rebates from exchanges' API broker programs and it is an official API broker with many exchanges". The README's exchange tables carry referral links, and it runs paid sponsored-promotion banners at the top.
On seven venues there is a real fee, and it is on by default. CCXT participates in builder
programmes with Aster, Extended, GRVT, Hyperliquid, Lighter, Nado and Pacifica; trading through
CCXT on those adds 1 basis point on top of the exchange's fees. The README documents both the fee
and the off switch — exchange.options['builderFee'] = False. On the other exchanges no extra fee
is charged and some apply a discount instead. None of this is hidden, and none of it is on the
pricing page, because there is no pricing page.
Data & coverage
CCXT ships no data of its own. Everything comes from the venue you point it at, which means the history you can fetch is the history that venue's API serves and no deeper, and there is no storage layer, no cross-venue backfill and no archive to fall back on when a venue rewrites its past.
Spot, perpetuals, dated futures and options are all covered by the unified surface, with
fetchFundingRate, fetchFundingRateHistory, fetchOpenInterest, fetchOpenInterestHistory,
fetchLiquidations, fetchGreeks and fetchOptionChain alongside the plain market-data calls.
Prediction markets are in the same library rather than a separate one: seven of them as of 4.5.81 — Binance's prediction market, Hyperliquid, Kalshi, Limitless, Myriad, Opinion and Polymarket — reached through the same methods as a spot pair. The vendor's site dates that support to version 4.5.66.
Rate limiting is client-side and the algorithm is yours to choose. The default is a leaky bucket
that paces requests at a fixed rate; passing rateLimiterAlgorithm: 'rollingWindow' switches to a
windowed limiter, with rollingWindowSize in milliseconds. Both work off the library's own
assumption about what the venue permits, not off anything the venue tells it.
Sandbox trading is a URL swap, not a simulation. setSandboxMode(true) substitutes the exchange's
test endpoints for its live ones and raises NotSupported on any exchange that has no testnet, so
what you get is the venue's own paper environment where one exists and nothing where it does not.
Integrations
MCP server, first-party and in the repository. mcp/ lives in the same tree, the install line
is npx -y ccxt-mcp, and the npm package is published by a maintainer of ccxt itself. It runs
locally over stdio, so keys stay on the machine and are referenced by name rather than passed to
the model. Trading, withdrawals and raw endpoints are separate opt-in capability tiers that are
off by default, with confirmation flows, notional caps and an audit journal.
A CLI, installed with npm i ccxt-cli -g, which invokes any unified method from a shell —
ccxt binance createOrder BTC/USDT market buy 0.1 — with an explain command that prints a
method's arguments. Useful for scripting and for finding out what a venue actually returns before
writing code against it.
Editor skills and an llms.txt for AI coding assistants, installed with
npx skills add ccxt/ccxt.
Downstream, CCXT is what several products in this catalogue reach exchanges through.
Freqtrade fetches its candles and streams its live data through it;
VectorBT's CCXTData class calls fetch_ohlcv on whichever CCXT exchange you
hand it. In both cases the venue list and the venue maintenance are CCXT's, not theirs.
Limitations
Supported is a codebase fact, not an operational one. 104 exchange classes exist; that is what
the count measures. Whether a given method works on a given venue today is what exchange.has
reports, and it is per method — an exchange can be "supported" and still not implement
fetchMyTrades. Twenty-eight of the 104 have no WebSocket class at all.
The npm package lags the releases feed. On 19 September 2026 GitHub and PyPI were both at
4.5.81, published that morning, while npm's latest tag was still 4.5.78 from 7 September. If you
are reading a fix in the changelog and installing from npm, check which of the two you actually
have.
Three releases in one morning is the normal rate. That is a genuine strength when an exchange
changes an endpoint and a genuine hazard for anything you ship — pin the version, because
^4.5.0 in a lockfile-less deploy is a different library each week. The 495 open pull requests
are the other side of the same throughput.
It runs nothing. No scheduler, no strategy object, no position sizing, no risk limits, no backtester, no persistence. Everything the trading-bots half of this category is bought for is yours to write or to get from a framework layered on top. The catalogue's line about exchange counts applies here in reverse: when a bot advertises a hundred venues, this is usually the list it is counting.
The default builder fee applies to seven venues whether or not you notice it. One basis point is small against most taker fees and material against a market-making strategy quoting inside the spread. It is documented and it is one line to disable, but it is on unless you turn it off.
The rate limiter protects you with the library's guess. It paces requests against constants compiled into each exchange class, not against a limit the venue reports back. A venue that tightens a limit quietly will ban you before the library knows.
Alternatives
The other way to reach a venue is its own SDK or its own REST documentation — one dialect, one maintainer, no abstraction between you and the endpoint. This catalogue has cards for several of those first-party APIs: Binance, Bybit, OKX and Coinbase Exchange. They are the right answer when you trade one venue and need a field the unified schema does not carry; they are the wrong answer the moment there is a second venue, because every one of them is a separate vocabulary for the same four operations.
If what you want is the automation rather than the plumbing, Freqtrade is a strategy framework that already contains this library, and the rest of the trading bots and execution SDKs listing is the same trade-off at different heights.
For execution specifically rather than connectivity, CoinAPI EMS is the paid counterpart to this library's unified order methods: one API over many venues, smart order routing, and somebody else maintaining the venue adapters — sold as a service rather than vendored into your build.
Specs
- Interfaces
- MCP server, TypeScript, Python, PHP, C#, Go, Java, Rust
- Export
- JSON
- Asset classes
- Spot, Perpetuals, Futures, Options
- Chains
- —
- Venues
- CEX, DEX, Derivatives
- KYC required
- No
- Platforms
- Library, CLI
- AI features
- None
- Capabilities
- Live trading, Paper trading, Derivatives analytics
- Pricing verified
- Capabilities verified
- Coverage verified
Also worth comparing
- ccapi — Header-only C++ market data and execution for 30 venues, on a Bloomberg-shaped API.
- Hyperliquid Python SDK — The official Python client for signing and sending orders on one perp DEX.
- CoinAPI EMS Trading API — One order model over 26 exchange destinations, TWAP and VWAP, priced per account-hour.
- dYdX v4 Clients — Four language clients for one perp DEX, under a licence that is not the one on the badge.
- GoCryptoTrader — A Go trading engine for 22 exchanges that has never cut a release or a tag.
- Hummingbot — Apache-2.0 Python framework for running market-making bots on CEXs and DEXs.
Named as a replacement for
On these shelves
Background
How this part of the industry works, rather than which product to pick.
- Who pays for your free trading bot — Free crypto bots and terminals are usually paid for by the venue. The five mechanisms, what each does to your order, and how to find them in ten minutes.
FAQ
Is CCXT Pro still a separate paid product?
No. The CCXT Pro manual states it is a free part of CCXT that adds WebSocket streaming, and the classes ship inside the MIT package — version 4.5.81 on PyPI contains 76 websocket exchange modules under ccxt/pro. The marketing site's FAQ still describes it as an optional paid product; the shipped package is the one to believe.
Does CCXT cost anything to use?
The software is MIT and free. On seven DEX venues it adds a 1 basis point builder fee on top of the exchange's own fees by default, which you switch off with exchange.options['builderFee'] = False. Elsewhere the project is funded by exchange API-broker rebates instead.
How many exchanges does CCXT really support?
Version 4.5.81 ships 104 REST exchange classes and 76 of those also have WebSocket classes. Support means an adapter exists in the codebase, not that the venue was traded through last month — check exchange.has for the specific method you need.
Can CCXT run a trading strategy on its own?
No. It fetches data and places orders; there is no scheduler, no strategy class, no position sizing and no backtester. Bots such as Freqtrade supply all of that and use CCXT only as the layer that talks to the venue.