# CCXT

One MIT client for 104 crypto exchanges, 76 of them over websocket.

*https://cryptomarkets.tools/tools/ccxt · Crypto Trading Bots & Execution SDKs*

## Also covered on

- [CCXT on PredictionMarkets.tools](https://predictionmarkets.tools/tools/ccxt.md) — the prediction namespace: seven event venues, and the event/market/outcome data model

## Facts

### At a glance

| Field | Value |
| --- | --- |
| Vendor | CCXT |
| Category | Crypto Trading Bots & Execution SDKs |
| Job | execution_sdk |
| Website | https://ccxt.com |
| Pricing model | open-source |
| Free tier | true |
| Open source | true |
| Licence | MIT |
| Self-hosted | true |
| KYC required | false |
| Tested hands-on | false |
| Last updated | 2026-09-21 |

### Coverage

| Field | Value |
| --- | --- |
| Asset classes | spot, perpetuals, futures, options |
| Chains | none |
| Venues | cex, dex, derivatives |
| Data latency | realtime |
| Platforms | library, cli |
| AI features | none |

### Interfaces

| Field | Value |
| --- | --- |
| API | false |
| Webhooks | false |
| Scripting | TypeScript, Python, PHP, C#, Go, Java, Rust |
| MCP server | true |
| Export | json |

### Capabilities

Yes: live_trading, paper_trading, derivatives_analytics

No: charting, screening, backtesting, automation, portfolio_tracking, exchange_import, tax_reporting, alerts, news, onchain_data, wallet_tracking

*Verified: pricing 2026-09-19; capabilities 2026-09-19; coverage 2026-09-19.*

## 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](https://cryptomarkets.tools/tools/freqtrade) fetches its candles and streams its live data through it;
[VectorBT](https://cryptomarkets.tools/tools/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](https://cryptomarkets.tools/tools/binance-api), [Bybit](https://cryptomarkets.tools/tools/bybit-api),
[OKX](https://cryptomarkets.tools/tools/okx-api) and [Coinbase Exchange](https://cryptomarkets.tools/tools/coinbase-exchange-api). 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](https://cryptomarkets.tools/tools/freqtrade) is a
strategy framework that already contains this library, and the rest of the
[trading bots and execution SDKs](https://cryptomarkets.tools/categories/trading-bots) listing is the same trade-off at
different heights.

For execution specifically rather than connectivity, [CoinAPI EMS](https://cryptomarkets.tools/tools/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.

## 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.

## Also worth comparing

- [ccapi](https://cryptomarkets.tools/tools/ccapi.md) — Header-only C++ market data and execution for 30 venues, on a Bloomberg-shaped API.
- [Hyperliquid Python SDK](https://cryptomarkets.tools/tools/hyperliquid-python-sdk.md) — The official Python client for signing and sending orders on one perp DEX.
- [CoinAPI EMS Trading API](https://cryptomarkets.tools/tools/coinapi-ems.md) — One order model over 26 exchange destinations, TWAP and VWAP, priced per account-hour.
- [dYdX v4 Clients](https://cryptomarkets.tools/tools/dydx-v4-clients.md) — Four language clients for one perp DEX, under a licence that is not the one on the badge.
- [GoCryptoTrader](https://cryptomarkets.tools/tools/gocryptotrader.md) — A Go trading engine for 22 exchanges that has never cut a release or a tag.
- [Hummingbot](https://cryptomarkets.tools/tools/hummingbot.md) — Apache-2.0 Python framework for running market-making bots on CEXs and DEXs.

## Named as a replacement for

- [Cryptowatch](https://cryptomarkets.tools/alternatives/cryptowatch.md)
- [Gekko](https://cryptomarkets.tools/alternatives/gekko.md)
- [TradingLite](https://cryptomarkets.tools/alternatives/tradinglite.md)
