ccxt

    ccxt/ccxt

    A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go

    api
    blockchain
    automation
    cryptography
    altcoin
    arbitrage
    bitcoin
    bot
    btc
    crypto
    cryptocurrencies
    cryptocurrency
    eth
    ethereum
    exchange
    invest
    library
    market-data
    memecoin
    merchant
    strategy
    trade
    trading
    Python
    MIT
    39.5K stars
    8.3K forks
    39.5K watching
    Updated 2/27/2026
    View on GitHub
    Backblaze Advertisement

    Loading star history...

    Health Score

    75

    Weekly Growth

    +0

    +0.0% this week

    Contributors

    1

    Total contributors

    Open Issues

    1.3K

    Generated Insights

    About ccxt

    CCXT – CryptoCurrency eXchange Trading Library

    NPM Downloads npm PyPI NuGet version GoDoc Discord Supported Exchanges Follow CCXT at x.com

    A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go.

    Install · Usage · Manual · FAQ · Examples · Contributing · Disclaimer · Social

    The CCXT library is used to connect and trade with cryptocurrency exchanges and payment processing services worldwide. It provides quick access to market data for storage, analysis, visualization, indicator development, algorithmic trading, strategy backtesting, bot programming, and related software engineering.

    It is intended to be used by coders, developers, technically-skilled traders, data-scientists and financial analysts for building trading algorithms.

    Current feature list:

    • support for many cryptocurrency exchanges — more coming soon
    • fully implemented public and private APIs
    • optional normalized data for cross-exchange analytics and arbitrage
    • an out of the box unified API that is extremely easy to integrate
    • works in Node 10.4+, Python 3, PHP 8.1+, netstandard2.0/2.1, Go 1.20+ and web browsers

    See Also

    • TabTrader TabTrader – trading on all exchanges in one app. Available on Android and iOS!
    • Freqtrade Freqtrade – leading opensource cryptocurrency algorithmic trading software!
    • OctoBot OctoBot – cryptocurrency trading bot with an advanced web interface.
    • TokenBot TokenBot – discover and copy the best algorithmic traders in the world.

    Certified Cryptocurrency Exchanges

    logoidnamevertypecertifiedprodiscount
    binancebinanceBinanceAPI Version *CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with Binance using CCXT's referral link for a 10% discount!
    binanceusdmbinanceusdmBinance USDⓈ-MAPI Version *CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with Binance USDⓈ-M using CCXT's referral link for a 10% discount!
    binancecoinmbinancecoinmBinance COIN-MAPI Version *CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with Binance COIN-M using CCXT's referral link for a 10% discount!
    bybitbybitBybitAPI Version 5CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    okxokxOKXAPI Version 5CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with OKX using CCXT's referral link for a 20% discount!
    gategateGate.ioAPI Version 4CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with Gate.io using CCXT's referral link for a 20% discount!
    kucoinkucoinKuCoinAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    kucoinfutureskucoinfuturesKuCoin FuturesAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    bitgetbitgetBitgetAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    hyperliquidhyperliquidHyperliquidAPI Version 1DEX - Distributed EXchangeCCXT CertifiedCCXT Pro
    bitmexbitmexBitMEXAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with BitMEX using CCXT's referral link for a 10% discount!
    bingxbingxBingXAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    htxhtxHTXAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with HTX using CCXT's referral link for a 15% discount!
    mexcmexcMEXC GlobalAPI Version 3CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    bitmartbitmartBitMartAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with BitMart using CCXT's referral link for a 30% discount!
    cryptocomcryptocomCrypto.comAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with Crypto.com using CCXT's referral link for a 75% discount!
    coinexcoinexCoinExAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    hashkeyhashkeyHashKey GlobalAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    woowooWOO XAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT ProSign up with WOO X using CCXT's referral link for a 35% discount!
    woofiprowoofiproWOOFI PROAPI Version 1DEX - Distributed EXchangeCCXT CertifiedCCXT ProSign up with WOOFI PRO using CCXT's referral link for a 5% discount!

    Supported Cryptocurrency Exchanges

    The CCXT library currently supports the following 102 cryptocurrency exchange markets and trading APIs:
    logoidnamevertypecertifiedpro
    alpacaalpacaAlpacaAPI Version *CEX – Centralized EXchangeCCXT Pro
    apexapexApexAPI Version 3DEX - Distributed EXchangeCCXT Pro
    ascendexascendexAscendEXAPI Version 2CEX – Centralized EXchangeCCXT Pro
    bequantbequantBequantAPI Version 3CEX – Centralized EXchangeCCXT Pro
    bigonebigoneBigONEAPI Version 3CEX – Centralized EXchange
    binancebinanceBinanceAPI Version *CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    binancecoinmbinancecoinmBinance COIN-MAPI Version *CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    binanceusbinanceusBinance USAPI Version *CEX – Centralized EXchangeCCXT Pro
    binanceusdmbinanceusdmBinance USDⓈ-MAPI Version *CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    bingxbingxBingXAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    bit2cbit2cBit2CAPI Version *CEX – Centralized EXchange
    bitbankbitbankbitbankAPI Version 1CEX – Centralized EXchange
    bitbnsbitbnsBitbnsAPI Version 2CEX – Centralized EXchange
    bitfinexbitfinexBitfinexAPI Version 2CEX – Centralized EXchangeCCXT Pro
    bitflyerbitflyerbitFlyerAPI Version 1CEX – Centralized EXchange
    bitgetbitgetBitgetAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    bithumbbithumbBithumbAPI Version *CEX – Centralized EXchangeCCXT Pro
    bitmartbitmartBitMartAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    bitmexbitmexBitMEXAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    bitoprobitoproBitoProAPI Version 3CEX – Centralized EXchangeCCXT Pro
    bitruebitrueBitrueAPI Version 1CEX – Centralized EXchangeCCXT Pro
    bitsobitsoBitsoAPI Version 3CEX – Centralized EXchange
    bitstampbitstampBitstampAPI Version 2CEX – Centralized EXchangeCCXT Pro
    bitteambitteamBIT.TEAMAPI Version 2.0.6CEX – Centralized EXchange
    bittradebittradeBitTradeAPI Version 1CEX – Centralized EXchangeCCXT Pro
    bitvavobitvavoBitvavoAPI Version 2CEX – Centralized EXchangeCCXT Pro
    blockchaincomblockchaincomBlockchain.comAPI Version 3CEX – Centralized EXchangeCCXT Pro
    blofinblofinBloFinAPI Version 1CEX – Centralized EXchangeCCXT Pro
    btcalphabtcalphaBTC-AlphaAPI Version 1CEX – Centralized EXchange
    btcboxbtcboxBtcBoxAPI Version 1CEX – Centralized EXchange
    btcmarketsbtcmarketsBTC MarketsAPI Version 3CEX – Centralized EXchange
    btcturkbtcturkBTCTurkAPI Version *CEX – Centralized EXchange
    bybitbybitBybitAPI Version 5CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    cexcexCEX.IOAPI Version *CEX – Centralized EXchangeCCXT Pro
    coinbasecoinbaseCoinbase AdvancedAPI Version 2CEX – Centralized EXchangeCCXT Pro
    coinbaseexchangecoinbaseexchangeCoinbase ExchangeAPI Version *CEX – Centralized EXchangeCCXT Pro
    coinbaseinternationalcoinbaseinternationalCoinbase InternationalAPI Version 1CEX – Centralized EXchangeCCXT Pro
    coincatchcoincatchCoinCatchAPI Version 1CEX – Centralized EXchangeCCXT Pro
    coincheckcoincheckcoincheckAPI Version *CEX – Centralized EXchange
    coinexcoinexCoinExAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    coinmatecoinmateCoinMateAPI Version *CEX – Centralized EXchange
    coinmetrocoinmetroCoinmetroAPI Version 1CEX – Centralized EXchange
    coinonecoinoneCoinOneAPI Version 2CEX – Centralized EXchange
    coinsphcoinsphCoins.phAPI Version 1CEX – Centralized EXchange
    coinspotcoinspotCoinSpotAPI Version *CEX – Centralized EXchange
    cryptocomcryptocomCrypto.comAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    cryptomuscryptomusCryptomusAPI Version 2CEX – Centralized EXchange
    defxdefxDefx XAPI Version 1DEX - Distributed EXchange
    deltadeltaDelta ExchangeAPI Version 2CEX – Centralized EXchange
    deribitderibitDeribitAPI Version 2CEX – Centralized EXchangeCCXT Pro
    derivederivederiveAPI Version 1DEX - Distributed EXchangeCCXT Pro
    digifinexdigifinexDigiFinexAPI Version 3CEX – Centralized EXchange
    exmoexmoEXMOAPI Version 1.1CEX – Centralized EXchange
    fmfwiofmfwioFMFW.ioAPI Version 3CEX – Centralized EXchange
    foxbitfoxbitFoxbitAPI Version 1CEX – Centralized EXchange
    gategateGate.ioAPI Version 4CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    geminigeminiGeminiAPI Version 1CEX – Centralized EXchangeCCXT Pro
    hashkeyhashkeyHashKey GlobalAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    hibachihibachiHibachiAPI Version *DEX - Distributed EXchange
    hitbtchitbtcHitBTCAPI Version 3CEX – Centralized EXchange
    hollaexhollaexHollaExAPI Version 2CEX – Centralized EXchangeCCXT Pro
    htxhtxHTXAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    hyperliquidhyperliquidHyperliquidAPI Version 1DEX - Distributed EXchangeCCXT CertifiedCCXT Pro
    independentreserveindependentreserveIndependent ReserveAPI Version *CEX – Centralized EXchangeCCXT Pro
    indodaxindodaxINDODAXAPI Version 2.0CEX – Centralized EXchange
    krakenkrakenKrakenAPI Version 0CEX – Centralized EXchangeCCXT Pro
    krakenfutureskrakenfuturesKraken FuturesAPI Version 3CEX – Centralized EXchangeCCXT Pro
    kucoinkucoinKuCoinAPI Version 2CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    kucoinfutureskucoinfuturesKuCoin FuturesAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    latokenlatokenLatokenAPI Version 2CEX – Centralized EXchange
    lbanklbankLBankAPI Version 2CEX – Centralized EXchangeCCXT Pro
    lunolunolunoAPI Version 1CEX – Centralized EXchangeCCXT Pro
    mercadomercadoMercado BitcoinAPI Version 3CEX – Centralized EXchange
    mexcmexcMEXC GlobalAPI Version 3CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    modetrademodetradeMode TradeAPI Version 1DEX - Distributed EXchangeCCXT Pro
    myokxmyokxMyOKX (EEA)API Version 5CEX – Centralized EXchangeCCXT Pro
    ndaxndaxNDAXAPI Version *CEX – Centralized EXchangeCCXT Pro
    novadaxnovadaxNovaDAXAPI Version 1CEX – Centralized EXchange
    oceanexoceanexOceanExAPI Version 1CEX – Centralized EXchange
    okcoinokcoinOKCoinAPI Version 5CEX – Centralized EXchangeCCXT Pro
    okxokxOKXAPI Version 5CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    okxusokxusOKX (US)API Version 5CEX – Centralized EXchangeCCXT Pro
    onetradingonetradingOne TradingAPI Version 1CEX – Centralized EXchangeCCXT Pro
    oxfunoxfunOXFUNAPI Version 3CEX – Centralized EXchangeCCXT Pro
    p2bp2bp2bAPI Version 2CEX – Centralized EXchangeCCXT Pro
    paradexparadexParadexAPI Version 1DEX - Distributed EXchangeCCXT Pro
    paymiumpaymiumPaymiumAPI Version 1CEX – Centralized EXchange
    phemexphemexPhemexAPI Version 1CEX – Centralized EXchangeCCXT Pro
    poloniexpoloniexPoloniexAPI Version *CEX – Centralized EXchangeCCXT Pro
    probitprobitProBitAPI Version 1CEX – Centralized EXchangeCCXT Pro
    timextimexTimeXAPI Version 1CEX – Centralized EXchange
    tokocryptotokocryptoTokocryptoAPI Version 1CEX – Centralized EXchange
    tradeogretradeogretradeogreAPI Version 2CEX – Centralized EXchangeCCXT Pro
    upbitupbitUpbitAPI Version 1CEX – Centralized EXchangeCCXT Pro
    wavesexchangewavesexchangeWaves.ExchangeAPI Version *DEX - Distributed EXchange
    whitebitwhitebitWhiteBitAPI Version 4CEX – Centralized EXchangeCCXT Pro
    woowooWOO XAPI Version 1CEX – Centralized EXchangeCCXT CertifiedCCXT Pro
    woofiprowoofiproWOOFI PROAPI Version 1DEX - Distributed EXchangeCCXT CertifiedCCXT Pro
    xtxtXTAPI Version 4CEX – Centralized EXchangeCCXT Pro
    yobityobitYoBitAPI Version 3CEX – Centralized EXchange
    zaifzaifZaifAPI Version 1CEX – Centralized EXchange
    zondazondaZondaAPI Version *CEX – Centralized EXchange

    The list above is updated frequently, new crypto markets, exchanges, bug fixes, and API endpoints are introduced on a regular basis. See the Manual for more details. If you can't find a cryptocurrency exchange in the list above and want it to be added, post a link to it by opening an issue here on GitHub or send us an email.

    The library is under MIT license, that means it's absolutely free for any developer to build commercial and opensource software on top of it, but use it at your own risk with no warranties, as is.


    Install

    The easiest way to install the CCXT library is to use a package manager:

    This library is shipped as an all-in-one module implementation with minimalistic dependencies and requirements:

    • js/ in JavaScript
    • python/ in Python (generated from TS)
    • php/ in PHP (generated from TS)
    • cs/ in C# (generated from TS)
    • go/ in Go (generated from TS)

    You can also clone it into your project directory from ccxt GitHub repository:

    git clone https://github.com/ccxt/ccxt.git  # including 1GB of commit history
    
    # or
    
    git clone https://github.com/ccxt/ccxt.git --depth 1  # avoid downloading 1GB of commit history
    

    JavaScript (NPM)

    JavaScript version of CCXT works in both Node and web browsers. Requires ES6 and async/await syntax support (Node 7.6.0+). When compiling with Webpack and Babel, make sure it is not excluded in your babel-loader config.

    ccxt in NPM

    npm install ccxt
    
    //cjs
    var ccxt = require ('ccxt')
    console.log (ccxt.exchanges) // print all available exchanges
    
    //esm
    import {version, exchanges} from 'ccxt';
    console.log(version, Object.keys(exchanges));
    

    JavaScript (for use with the <script> tag):

    All-in-one browser bundle (dependencies included), served from a CDN of your choice:

    CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.

    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ccxt.browser.min.js"></script>
    

    Creates a global ccxt object:

    console.log (ccxt.exchanges) // print all available exchanges
    

    Python

    ccxt in PyPI

    pip install ccxt
    
    import ccxt
    print(ccxt.exchanges) # print a list of all available exchange classes
    

    The library supports concurrent asynchronous mode with asyncio and async/await in Python 3.7.0+

    import ccxt.async_support as ccxt # link against the asynchronous version of ccxt
    

    orjson support

    CCXT also supports orjson for parsing JSON since it is much faster than the builtin library. This is especially important when using websockets because some exchanges return big messages that need to be parsed and dispatched as quickly as possible.

    However, orjson is not enabled by default because it is not supported by every python interpreter. If you want to opt-in, you just need to install it (pip install orjson) on your local environment. CCXT will detect the installion and pick it up automatically.

    PHP

    ccxt in PHP with Packagist/Composer (PHP 8.1+)

    It requires common PHP modules:

    • cURL
    • mbstring (using UTF-8 is highly recommended)
    • PCRE
    • iconv
    • gmp
    include "ccxt.php";
    var_dump (\ccxt\Exchange::$exchanges); // print a list of all available exchange classes
    

    The library supports concurrent asynchronous mode using tools from ReactPHP in PHP 8.1+. Read the Manual for more details.

    .net/C#

    ccxt in C# with Nuget (netstandard 2.0 and netstandard 2.1)

    using ccxt;
    Console.WriteLine(ccxt.Exchanges) // check this later
    

    Go

    ccxt in GO with PKG

    go install github.com/ccxt/ccxt/go/v4@latest
    
    import "ccxt"
    fmt.Println(ccxt.Exchanges)
    

    Docker

    You can get CCXT installed in a container along with all the supported languages and dependencies. This may be useful if you want to contribute to CCXT (e.g. run the build scripts and tests — please see the Contributing document for the details on that).

    Using docker-compose (in the cloned CCXT repository):

    docker-compose run --rm ccxt
    

    You don't need the Docker image if you're not going to develop CCXT. If you just want to use CCXT – just install it as a regular package into your project.


    Usage

    Intro

    The CCXT library consists of a public part and a private part. Anyone can use the public part immediately after installation. Public APIs provide unrestricted access to public information for all exchange markets without the need to register a user account or have an API key.

    Public APIs include the following:

    • market data
    • instruments/trading pairs
    • price feeds (exchange rates)
    • order books
    • trade history
    • tickers
    • OHLC(V) for charting
    • other public endpoints

    In order to trade with private APIs you need to obtain API keys from an exchange's website. It usually means signing up to the exchange and creating API keys for your account. Some exchanges require personal info or identification. Sometimes verification may be necessary as well. In this case you will need to register yourself, this library will not create accounts or API keys for you. Some exchanges expose API endpoints for registering an account, but most exchanges don't. You will have to sign up and create API keys on their websites.

    Private APIs allow the following:

    • manage personal account info
    • query account balances
    • trade by making market and limit orders
    • deposit and withdraw fiat and crypto funds
    • query personal orders
    • get ledger history
    • transfer funds between accounts
    • use merchant services

    This library implements full public and private REST and WebSocket APIs for all exchanges in TypeScript, JavaScript, PHP and Python.

    The CCXT library supports both camelcase notation (preferred in TypeScript and JavaScript) and underscore notation (preferred in Python and PHP), therefore all methods can be called in either notation or coding style in any language.

    // both of these notations work in JavaScript/Python/PHP
    exchange.methodName ()  // camelcase pseudocode
    exchange.method_name () // underscore pseudocode
    

    Read the Manual for more details.

    JavaScript

    CCXT now supports ESM and CJS modules

    CJS

    // cjs example
    'use strict';
    const ccxt = require ('ccxt');
    
    (async function () {
        let kraken    = new ccxt.kraken ()
        let bitfinex  = new ccxt.bitfinex ({ verbose: true })
        let huobipro  = new ccxt.huobipro ()
        let okcoinusd = new ccxt.okcoin ({
            apiKey: 'YOUR_PUBLIC_API_KEY',
            secret: 'YOUR_SECRET_PRIVATE_KEY',
        })
    
        const exchangeId = 'binance'
            , exchangeClass = ccxt[exchangeId]
            , exchange = new exchangeClass ({
                'apiKey': 'YOUR_API_KEY',
                'secret': 'YOUR_SECRET',
            })
    
        console.log (kraken.id,    await kraken.loadMarkets ())
        console.log (bitfinex.id,  await bitfinex.loadMarkets  ())
        console.log (huobipro.id,  await huobipro.loadMarkets ())
    
        console.log (kraken.id,    await kraken.fetchOrderBook (kraken.symbols[0]))
        console.log (bitfinex.id,  await bitfinex.fetchTicker ('BTC/USD'))
        console.log (huobipro.id,  await huobipro.fetchTrades ('ETH/USDT'))
    
        console.log (okcoinusd.id, await okcoinusd.fetchBalance ())
    
        // sell 1 BTC/USD for market price, sell a bitcoin for dollars immediately
        console.log (okcoinusd.id, await okcoinusd.createMarketSellOrder ('BTC/USD', 1))
    
        // buy 1 BTC/USD for $2500, you pay $2500 and receive ฿1 when the order is closed
        console.log (okcoinusd.id, await okcoinusd.createLimitBuyOrder ('BTC/USD', 1, 2500.00))
    
        // pass/redefine custom exchange-specific order params: type, amount, price or whatever
        // use a custom order type
        bitfinex.createLimitSellOrder ('BTC/USD', 1, 10, { 'type': 'trailing-stop' })
    
    }) ();
    

    ESM

    //esm example
    import {version, binance} from 'ccxt';
    
    console.log(version);
    const exchange = new binance();
    const ticker = await exchange.fetchTicker('BTC/USDT');
    console.log(ticker);
    

    Python

    # coding=utf-8
    
    import ccxt
    
    hitbtc   = ccxt.hitbtc({'verbose': True})
    bitmex   = ccxt.bitmex()
    huobipro = ccxt.huobipro()
    exmo     = ccxt.exmo({
        'apiKey': 'YOUR_PUBLIC_API_KEY',
        'secret': 'YOUR_SECRET_PRIVATE_KEY',
    })
    kraken = ccxt.kraken({
        'apiKey': 'YOUR_PUBLIC_API_KEY',
        'secret': 'YOUR_SECRET_PRIVATE_KEY',
    })
    
    exchange_id = 'binance'
    exchange_class = getattr(ccxt, exchange_id)
    exchange = exchange_class({
        'apiKey': 'YOUR_API_KEY',
        'secret': 'YOUR_SECRET',
    })
    
    hitbtc_markets = hitbtc.load_markets()
    
    print(hitbtc.id, hitbtc_markets)
    print(bitmex.id, bitmex.load_markets())
    print(huobipro.id, huobipro.load_markets())
    
    print(hitbtc.fetch_order_book(hitbtc.symbols[0]))
    print(bitmex.fetch_ticker('BTC/USD'))
    print(huobipro.fetch_trades('LTC/USDT'))
    
    print(exmo.fetch_balance())
    
    # sell one ฿ for market price and receive $ right now
    print(exmo.id, exmo.create_market_sell_order('BTC/USD', 1))
    
    # limit buy BTC/EUR, you pay €2500 and receive ฿1  when the order is closed
    print(exmo.id, exmo.create_limit_buy_order('BTC/EUR', 1, 2500.00))
    
    # pass/redefine custom exchange-specific order params: type, amount, price, flags, etc...
    kraken.create_market_buy_order('BTC/USD', 1, {'trading_agreement': 'agree'})
    

    PHP

    include 'ccxt.php';
    
    $poloniex = new \ccxt\poloniex ();
    $bittrex  = new \ccxt\bittrex  (array ('verbose' => true));
    $quoinex  = new \ccxt\quoinex   ();
    $zaif     = new \ccxt\zaif     (array (
        'apiKey' => 'YOUR_PUBLIC_API_KEY',
        'secret' => 'YOUR_SECRET_PRIVATE_KEY',
    ));
    $hitbtc   = new \ccxt\hitbtc   (array (
        'apiKey' => 'YOUR_PUBLIC_API_KEY',
        'secret' => 'YOUR_SECRET_PRIVATE_KEY',
    ));
    
    $exchange_id = 'binance';
    $exchange_class = "\\ccxt\\$exchange_id";
    $exchange = new $exchange_class (array (
        'apiKey' => 'YOUR_API_KEY',
        'secret' => 'YOUR_SECRET',
    ));
    
    $poloniex_markets = $poloniex->load_markets ();
    
    var_dump ($poloniex_markets);
    var_dump ($bittrex->load_markets ());
    var_dump ($quoinex->load_markets ());
    
    var_dump ($poloniex->fetch_order_book ($poloniex->symbols[0]));
    var_dump ($bittrex->fetch_trades ('BTC/USD'));
    var_dump ($quoinex->fetch_ticker ('ETH/EUR'));
    var_dump ($zaif->fetch_ticker ('BTC/JPY'));
    
    var_dump ($zaif->fetch_balance ());
    
    // sell 1 BTC/JPY for market price, you pay ¥ and receive ฿ immediately
    var_dump ($zaif->id, $zaif->create_market_sell_order ('BTC/JPY', 1));
    
    // buy BTC/JPY, you receive ฿1 for ¥285000 when the order closes
    var_dump ($zaif->id, $zaif->create_limit_buy_order ('BTC/JPY', 1, 285000));
    
    // set a custom user-defined id to your order
    $hitbtc->create_order ('BTC/USD', 'limit', 'buy', 1, 3000, array ('clientOrderId' => '123'));
    

    .net/C#

    using ccxt; // importing ccxt
    namespace Project;
    class Project {
        public async static Task CreateOrder() {
            var exchange = new Binance();
            exchange.apiKey = "my api key";
            exchange.secret = "my secret";
            // always use the capitalized method (CreateOrder instead of createOrder)
            var order = await exchange.CreateOrder("BTC/USDT", "limit", "buy", 1, 50);
            Console.WriteLine("Placed Order, order id: " + order.id);
        }
    }
    

    Go

    package main
    import (
    	"github.com/ccxt/ccxt/go/v4/go"
    	"fmt"
    )
    
    func main() {
    	exchange := ccxt.NewBinance(map[string]interface{}{
    		"apiKey": "MY KEY",
    		"secret": "MY SECRET",
    	})
    	orderParams := map[string]interface{}{
    		"clientOrderId": "myOrderId68768678",
    	}
    
        <-exchange.LoadMarkets()
    
    	order, err := exchange.CreateOrder("BTC/USDT", "limit", "buy", 0.001, ccxt.WithCreateOrderPrice(6000), ccxt.WithCreateOrderParams(orderParams))
    	if err != nil {
    		if ccxtError, ok := err.(*ccxt.Error); ok {
    			if ccxtError.Type == "InvalidOrder" {
    				fmt.Println("Invalid order")
    			} else {
    				fmt.Println("Some other error")
    			}
    		}
    	} else {
    		fmt.Println(*order.Id)
    	}
    
    
        // fetching OHLCV
    	ohlcv, err := exchange.FetchOHLCV("BTC/USDT", ccxt.WithFetchOHLCVTimeframe("5m"), ccxt.WithFetchOHLCVLimit(100))
    
    	if err != nil {
    		fmt.Println("Error: ", err)
    	} else {
    		fmt.Println("Got OHLCV!")
    	}
    }
    

    Optional parameters

    Unlike Javascript/Python/PHP/C# Go does not support "traditional" optional parameters like function a(optional = false). However, the CCXT language and structure have some methods with optional params, and since the Go language is transpiled from the Typescript source, we had to find a way of representing them.

    We have decided to "go" (pun intended) with Option structs and the WithX methods.

    For example, this function FetchMyTrades supports 4 different "optional" parameters, symbol, since, limit, and params.

    func (this *Binance) FetchMyTrades(options ...FetchMyTradesOptions) ([]Trade, error)
    

    And we can provide them by doing

    trades, error := exchange.FetchMyTrades(ccxt.withFetchMyTradesSymbol("BTC/USDT"), ccxt.WithFetchOHLCVLimit(5), ccxt.WithFetchMyTradesParams(orderParams))
    

    Lastly, just because the signature dictates that some argument like symbol is optional, it will depend from exchange to exchange and you might need to provide it to avoid getting a SymbolRequired error.

    You can check different examples in the examples/go folder.

    CCXT CLI

    Read the documentation for more information and details: docs

    CCXT also provides a command-line interface (CLI) that enables direct interaction with any supported exchange from the terminal. You can quickly check balances, place orders, or fetch trade data—without the need to write or execute custom code. This is especially useful for simple or time-sensitive tasks that don’t warrant the overhead of building a full application.

    Installation

    The CLI is available as a npm package and can be installed by doing

    npm i ccxt-cli -g
    

    Usage

    You can use the --help option to view a general overview of how the CLI works. The tool allows you to invoke any CCXT method by specifying the exchange id, the methodName, and any required arguments.

    Examples:

    ccxt binance createOrder BTC/USDT market buy 0.1 // places an order
    

    If you are not sure which arguments should be provided you can always use the explain command.

    ccxt explain createOrder
    

    result:

    Method: createOrder
    Usage:
      binance createOrder <symbol> <type> <side> <amount> [price] [params]
    
    Arguments:
      - symbol       (required) — Market symbol e.g., BTC/USDT
      - type         (required) — (no description available)
      - side         (required) — order side e.g., buy or sell
      - amount       (required) — (no description available)
      - price        (optional) — Price per unit of asset e.g., 26000.50
      - params       (optional) — Extra parameters for the exchange e.g., { "recvWindow": 5000 }
    

    You can easily provide API keys by setting them as environment varibales eg: BINANCE_APIKEY="XXXX" or adding them to the config file located at $CACHE/config.json

    Contributing

    Please read the CONTRIBUTING document before making changes that you would like adopted in the code. Also, read the Manual for more details.

    Support Developer Team

    We are investing a significant amount of time into the development of this library. If CCXT made your life easier and you want to help us improve it further, or if you want to speed up development of new features and exchanges, please support us with a tip. We appreciate all contributions!

    Sponsors

    Vitality

    Support this project by becoming a sponsor.

    [Become a sponsor]

    Supporters

    Support this project by becoming a supporter. Your avatar will show up here with a link to your website.

    [Become a supporter]

    Backers

    Thank you to all our backers! [Become a backer]

    Thank you!

    Social

    • Twitter Follow us on Twitter
    • Medium Read our blog on Medium
    • Discord Join our Discord
    • Telegram Announcements CCXT Channel on Telegram (important announcements)
    • Telegram Chat CCXT Chat on Telegram (technical support)

    Star History

    Star History Chart

    Disclaimer

    CCXT is not a service nor a server. CCXT is a software. CCXT is a free open source non-custodian API broker software under MIT license.

    • Non-custodian means CCXT is not an intermediary in trading, it does not hold traders' money at any point in time, traders install CCXT and use CCXT to talk to exchanges directly.
    • MIT license means CCXT can be used for any purpose, but use at your own risk without any warranties.
    • API broker means CCXT is funded with rebates from exchanges' API broker programs and it is an official API broker with many exchanges, all rebates and related fees are handled by the exchanges solely in accordance with exchanges' respective terms and conditions established by each partner exchange.
    • Free software means CCXT is free to use and has no hidden fees, with CCXT traders pay the same trading fees they would pay to the exchanges directly.
    • Open source means anyone is allowed to use it, to look inside the code and to change everything, including other brokers.

    Contact Us

    For business inquiries: [email protected]

    Discover Repositories

    Search across tracked repositories by name or description