CryptoExchange.Net 12.5.0

dotnet add package CryptoExchange.Net --version 12.5.0
                    
NuGet\Install-Package CryptoExchange.Net -Version 12.5.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CryptoExchange.Net" Version="12.5.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CryptoExchange.Net" Version="12.5.0" />
                    
Directory.Packages.props
<PackageReference Include="CryptoExchange.Net" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CryptoExchange.Net --version 12.5.0
                    
#r "nuget: CryptoExchange.Net, 12.5.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CryptoExchange.Net@12.5.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CryptoExchange.Net&version=12.5.0
                    
Install as a Cake Addin
#tool nuget:?package=CryptoExchange.Net&version=12.5.0
                    
Install as a Cake Tool

.CryptoExchange.Net CryptoExchange.Net

.NET Nuget downloads License Since

CryptoExchange.Net is a base library which is used to implement different cryptocurrency (exchange) API's. It provides a standardized way of implementing different API's, which results in a very similar experience for users of the API implementations. Note that the CryptoExchange.Net package itself can not be used directly for accessing API's. Either install a client library from the list below or use CryptoClients.Net which includes access to all exchange API's.

For more information on what CryptoExchange.Net and it's client libraries offers see the Documentation.

For AI Coding Assistants

This library and the entire CryptoExchange.Net ecosystem provide first-class support for AI coding assistants. The relevant skill files are in this repository:

  • Agents: AGENTS.md (auto-detected at repo root)
  • Cursor: .cursor/rules/cryptoexchange-net.mdc
  • GitHub Copilot: .github/copilot-instructions.md
  • Other tools (Windsurf, Codex, Continue, Aider, etc.): llms.txt at repo root
  • Compilable examples: Examples/ai-friendly/

For single-exchange code, see also the AI files in each exchange's repository (Binance.Net, Bybit.Net, OKX.Net, ...) — they cover exchange-specific patterns.

See cryptoexchange-skills-hub for installable skills.

Quick prompt to verify your assistant is using these:

"Show me how to fetch BTC/USDT spot tickers from Binance and OKX concurrently in C# using the SharedApis pattern."

The expected output should use .SharedClient properties, SharedSymbol, ISpotTickerRestClient, and Task.WhenAll.

CryptoExchange.Net Ecosystem

Full list of all libraries part of the CryptoExchange.Net ecosystem. Consider using a referral link to support development, as well as potentially get some trading fee discount!

API Type Repository Nuget Referral Link Referral Fee Discount
Aster Aster DEX JKorf/Aster.Net Nuget version Link 4%
Binance Binance CEX JKorf/Binance.Net Nuget version Link 20%
BingX BingX CEX JKorf/BingX.Net Nuget version Link 20%
Bitfinex Bitfinex CEX JKorf/Bitfinex.Net Nuget version - -
Bitget Bitget CEX JKorf/Bitget.Net Nuget version Link 20%
BitMart BitMart CEX JKorf/BitMart.Net Nuget version Link 30%
BitMEX BitMEX CEX JKorf/BitMEX.Net Nuget version Link 30%
Bitstamp Bitstamp CEX JKorf/Bitstamp.Net Nuget version - -
BloFin BloFin CEX JKorf/BloFin.Net Nuget version - -
Bybit Bybit CEX JKorf/Bybit.Net Nuget version Link -
Coinbase Coinbase CEX JKorf/Coinbase.Net Nuget version Link -
CoinEx CoinEx CEX JKorf/CoinEx.Net Nuget version Link 20%
CoinW CoinW CEX JKorf/CoinW.Net Nuget version Link -
CoinGecko CoinGecko - JKorf/CoinGecko.Net Nuget version - -
Crypto.com Crypto.com CEX JKorf/CryptoCom.Net Nuget version Link -
DeepCoin DeepCoin CEX JKorf/DeepCoin.Net Nuget version Link -
Gate.io Gate.io CEX JKorf/GateIo.Net Nuget version Link 20%
HTX HTX CEX JKorf/HTX.Net Nuget version Link 30%
HyperLiquid HyperLiquid DEX JKorf/HyperLiquid.Net Nuget version Link 4%
Kraken Kraken CEX JKorf/Kraken.Net Nuget version - -
Kucoin Kucoin CEX JKorf/Kucoin.Net Nuget version Link -
LBank LBank CEX JKorf/LBank.Net Nuget version Link -
Lighter Lighter DEX JKorf/Lighter.Net Nuget version - -
Mexc Mexc CEX JKorf/Mexc.Net Nuget version - -
OKX OKX CEX JKorf/OKX.Net Nuget version Link 20%
Pionex Pionex CEX JKorf/Pionex.Net Nuget version - -
Polymarket Polymarket DEX JKorf/Polymarket.Net Nuget version - -
Toobit Toobit CEX JKorf/Toobit.Net Nuget version Link -
Upbit Upbit CEX JKorf/Upbit.Net Nuget version - -
Weex Weex CEX JKorf/Weex.Net Nuget version - -
WhiteBit WhiteBit CEX JKorf/WhiteBit.Net Nuget version Link -
XT XT CEX JKorf/XT.Net Nuget version Link 25%

Any of these can be installed independently or install CryptoClients.Net which includes all exchange API's.

Full demo application

A full demo application is available using the CryptoClients.Net library:
https://github.com/JKorf/CryptoManager.Net

Discord

Nuget version
A Discord server is available here. Feel free to join for discussion and/or questions around the CryptoExchange.Net and implementation libraries.

Support the project

Any support is greatly appreciated.

Referral

When creating an account on new exchanges please consider using a referral link from above.

Make a one time donation in a crypto currency of your choice. If you prefer to donate in a different currency or network send me a message.

USDT (TRX) TKigKeJPXZYyMVDgMyXxMf17MWYia92Rjd

Alternatively, sponsor me on Github using Github Sponsors.

Update notes from version 11.x to 12.x for client implementations

  • Result types:

    • (Web)CallResult types are replaced by HttpResult, WebSocketResult and QueryResult
    • Use (Http/WebSocket/Query)Result.Ok(..) and .Fail(..) for creation
    • Result objects no longer override implicit conversion to bool, use Success property instead
    • CallResult.SuccessResult has been replaced with CallResult.Ok()
  • Parameters & serialization:

    • ParameterCollection type is replaced by Parameters, most AddXX() methods can be replaced by Add()
    • Parameter serialization behavior can be controlled in the Add method as third parameter, or in the ParameterSerializationSettings
    • ArraySerialization has been move into the new Parameters object
    • RestRequestConfiguration in AuthenticationProvider.ProcessRequest now contains the full RequestDefinition instead of copied fields. This changes for example request.Authenticated to request.RequestDefinition.Authenticated

WebSocket routing:

  • MessageRouting has been split into event and query routing; use CreateForEvent for subscriptions and CreateForQuery for queries.
  • Queries returning a mapped type can specify a second type parameter in CreateForQuery for the result type
  • MessageRouter.CreateWithoutHandler has been replaced with CreateVoid

Shared APIs:

  • Option defintions now always require the exchange name as first parameter
  • Every request/subscription now has a dedicated options type
  • ExchangeSymbolCache now requires EnvironmentName as parameter for operations
  • Validation has been unified via SharedClient.[Request]Options.ValidateRequest(request, this);
  • Validation now includes auth check and klines support internally, no need for explicit checks
  • AsExchangeResult/ExchangeWebResult has been removed, use normal HttpResults instead
  • ExchangeResult has been replaced by ExchangeCallResult
  • TradingMode has been removed from the response model, only maintained on models where it makes sense
  • IListenKey support has been removed, listen keys should be managed internally with TokenManager

Various:

  • ApiClients now require an exchange name in the constructor
  • ApiClients now required ILoggerFactory parameter instead of ILogger instance
  • RestApiClient SendAsync without type parameter removed, use SendAsync<Unit> instead
  • Address parameter removed from SendAsync RestApiClient, should be specified on the request definition instead
  • SymbolOrderBook DoResyncAsync now returns CallResult instead of CallResult<bool> which was redundant
  • PlatformInfo now required support environment names in the constructor

Release notes

  • Version 12.5.0 - 21 Aug 2026

    • Shared APIs
      • Added ISpotOrderManagementSocketClient for placing/canceling Spot orders via Shared websocket implementation
      • Added IFuturesOrderManagementSocketClient for placing/canceling Futures orders via Shared websocket implementation
      • Added UpperFundingCap, LowerFundingCap to SharedFuturesSymbol model
      • Added UpperPriceLimitPerecentage, LowerPriceLimitPercentage, MakerFeePercentage and TakerFeePercentage to SharedSpotSymbol model
      • Added WithCalculatedQuantities(price, contractSize) to SharedQuantity to retrieve a copy with derived quantities
      • Added Description property to Shared EndpointOptions classes
      • Added additional check for symbol type to Shared Spot endpoints
      • Added QuantityType property to SharedOrderBook
      • Added auto calculated quote quantity where for SharedOrderQuantity where it makes sense
      • Updated SharedId value to be nullable
      • Updated quantity/volumes to SharedOrderQuantity model for SharedBookTicker, SharedOpenInterest, SharedPosition, SharedPositionHistory and SharedUserTrade
      • Updated Shared client info string representation
    • Added IQueryResult interface to QueryResult, moved OriginalData to the base class
    • Added UsePublicConnectionForAuth property to SocketApiClient
    • Added support for order polling where Shared order implementation doesn't support time filtering to UserDataTracker implementations
    • Added ManualUpdateSubscription and UpdateSubscription additional constructor to allow producing websocket events without actual connection
    • Updated logging unhandled websocket message
    • Split UserClientProvider into base class with RestClient and derived class also containing SocketClient
    • Removed unnecessary log from token manager
    • Fixed incorrect check test output
  • Version 12.4.0 - 28 Jul 2026

    • Added AveragePrice property to SharedQuantity model
    • Added DebuggerDisplay attributes to Result objects
    • Updated SharedFuturesTicker, SharedSpotTicker, SharedTrade and SharedKline to use SharedOrderQuantity for volumes/quantities
    • Updated REST json deserialization error for empty response
  • Version 12.3.0 - 23 Jul 2026

    • Added calculation of AveragePrice on Shared order models if data is available and AveragePrice is not set
    • Extracted ConnectionCanBeUsedFor method in SocketApiClient for easier custom logic implementation
    • Updated some Shared APIs error messages
    • Remove duplicate warnings from testing output
  • Version 12.2.0 - 20 Jul 2026

    • Added SpotSymbolCatalog to Shared ISpotSymbolRestClient interface
    • Added FuturesSymbolCatalog to Shared IFuturesSymbolRestClient interface
    • Added BaseAssetType, BaseAssetSubType, QuoteAssetType and QuoteAssetSubType to GetSymbolsRequest model
    • Added DisplayName to SharedSpotSymbol and SharedFuturesSymbol models
    • Added BaseAssetType, BaseAssetSubType, QuoteAssetType and QuoteAssetSubType to SharedSpotSymbol and SharedFuturesSymbol models
    • Added IsStableCoin, IsCommodity and IsEquity helper methods to LibraryHelpers
    • Added DebuggerDisplay attributes to Shared models
    • Fixed socket connection combine calculations
  • Version 12.1.1 - 11 Jul 2026

    • Added timestamp deserialization support for yyyy-MM-dd HH:mm:ss.ffffff+00:00:00
  • Version 12.1.0 - 09 Jul 2026

    • Added ExchangeParameters parameter to KlineTracker, TradeTracker and ITrackerFactory methods
    • Updated some testing logic
    • Fixed nullability operator on Parameters.AddCommaSeperated
  • Version 12.0.2 - 01 Jul 2026

    • Updated test validation to output a list of issues instead of throwing on the first
  • Version 12.0.1 - 29 Jun 2026

    • Fixed bug in bool converter
  • Version 12.0.0 - 29 Jun 2026

    • Result types:

      • (Web)CallResult types are replaced by HttpResult, WebSocketResult and QueryResult with the same logic
      • Updated result types to record type
      • Result creation can be done with (Http/WebSocket/Query)Result.Ok(..) and .Fail(..)
      • Removed implicit result type conversion to bool, if (result) no longer works, instead use if (result.Success)
      • Replaced CallResult.SuccessResult with CallResult.Ok()
      • Fixed result object nullability hinting, for example Data might be null if Success isn't checked for true
    • Parameters & serialization:

      • Added support for enabled and disabled strings to bool converter
      • Removed ParameterCollection type, has been replaced by Parameters type
      • Removed ArraySerialization, OrderParameters and ParameterOrderComparer properties from RestApiClient, moved to ParameterSerializationsSettings
      • Updated RestRequestConfiguration in AuthenticationProvider.ProcessRequest to contain the full RequestDefinition instead of copied fields
    • Clients:

      • Updated Api client constructor logging parameter from ILogger to ILoggerFactory?
      • Added Api client constructor exchange name parameter
      • Added ToString overrides on base API types
      • Added Exchange property on BaseApiClient
      • Added ApiCredentials property on IRestApiClient and ISocketApiClient interfaces
      • Updated ILogger source from client name to topic specific client name
      • Removed logging from client creation
      • Fixed BaseRestClient SetApiCredentials not marked as virtual
    • Rest:

      • Added BaseAddress to RequestDefinition object
      • Updated RestApiClient AuthenticationProvider logic from private to protected and virtual
      • Removed RestApiClient.SendAsync baseAddress parameter removed
      • Removed RestApiClient.SendAsync without type parameter
    • WebSocket:

      • Updated MessageRouting definition into CreateForEvent for subscriptions and CreateForQuery for queries
      • Improved Query type safety with CeateForQuery which allows second parameter for specifying the result type
      • Renamed MessageRouter.CreateWithoutHandler to CreateVoid
      • Updated SocketApiClient.GetSocketConnection to check connection uri instead of Tag for finding compatible connections
      • Removed unused UnhandledMessageExpected property SocketApiClient
      • Fixed issue in SocketApiClient.GetSocketConnection causing requests to always wait the full max 10 seconds when there was a reconnecting socket
    • Shared APIs:

      • Updated Option definitions to always require the exchange name as first parameter
      • Added missing dedicated option types
      • Added Discover method on ISharedClient interface, returning info on supported capabilities and operations
      • Added SharedRequest GetParamValue helper method accepting multiple parameter names
      • Added ResetStaticExchangeParameters method on ExchangeParameters
      • Added Status property to SharedWithdrawal model
      • Added TradingModes property to SharedBalance model
      • Updated ExchangeSymbolCache to support multiple environments and additional key separation
      • Updated Shared ExchangeParameters parameter names to be case insensitive
      • Updated code comments
      • Replaced ExchangeResult with ExchangeCallResult type
      • Removed AsExchangeResult/ExchangeWebResult
      • Removed TradingMode from the response model, only maintained on models where it makes sense
      • Removed IListenKey support, listen keys now rely on internal management with TokenManager
    • Rate limiting:

      • Fixed websocket connection attempts counting towards rate limit even when server could not be reached
      • Removed host from rate limit methods, now part of the already provided RequestDefinition
      • Added amount parameter to RateLimit Reset method to allow partially resetting the limit
    • Added TokenManager implementation for automatic listenkey/token management

    • Added UserClientProvider base class

    • Added async streaming on UserDataTracker items with StreamUpdatesAsync

    • Added cancellation token support to UserDataTracker starting

    • Added Unit type for non-result types

    • Added ServerError constructor taking ErrorType and message to make it easier to create

    • Added SupportedEnvironments property to PlatformInfo

    • Updated SymbolOrderBook DoResyncAsync to return CallResult instead of CallResult<bool> which was redundant

    • Various small performance improvements

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (79)

Showing the top 5 NuGet packages that depend on CryptoExchange.Net:

Package Downloads
Binance.Net

A high-performance .NET client library for the Binance REST and WebSocket APIs, providing strongly typed models, automatic WebSocket reconnection, client-side rate limiting, local order book support, and seamless integration with other CryptoExchange.Net based clients.

Bitfinex.Net

A high-performance .NET client library for the Bitfinex REST and WebSocket APIs, providing strongly typed models, automatic WebSocket reconnection, client-side rate limiting, local order book support, and seamless integration with other CryptoExchange.Net based clients.

KrakenExchange.Net

A high-performance .NET client library for the Kraken REST and WebSocket APIs, providing strongly typed models, automatic WebSocket reconnection, client-side rate limiting, local order book support, and seamless integration with other CryptoExchange.Net based clients.

CryptoBazar

Package Description

Bittrex.Net

Bittrex.Net is a .Net wrapper for the Bittrex API, including the SignalR websocket. It includes all features the API provides using clear and readable objects including but not limited to Reading market info, Placing and managing orders and Reading balances and funds

GitHub repositories (5)

Showing the top 5 popular GitHub repositories that depend on CryptoExchange.Net:

Repository Stars
visualHFT/VisualHFT
Open-source desktop application for real-time market microstructure analysis. Explore live Level 2 order books, trades, liquidity, and built-in studies.
JKorf/Binance.Net
C#/.NET client library for the Binance.com cryptocurrency exchange REST and WebSocket APIs, supporting Spot and Futures trading and market data with strongly typed models.
JKorf/Bybit.Net
C#/.NET client library for the Bybit.com cryptocurrency exchange REST and WebSocket APIs, supporting Spot and Futures trading and market data with strongly typed models.
JKorf/Kucoin.Net
C#/.NET client library for the Kucoin.com cryptocurrency exchange REST and WebSocket APIs, supporting Spot and Futures trading and market data with strongly typed models.
JKorf/Kraken.Net
C#/.NET client library for the Kraken.com cryptocurrency exchange REST and WebSocket APIs, supporting Spot and Futures trading and market data with strongly typed models.
Version Downloads Last Updated
12.5.0 441 8/21/2026
12.4.0 9,679 7/28/2026
12.3.0 1,054 7/23/2026
12.2.0 3,814 7/20/2026
12.1.1 1,463 7/11/2026
12.1.0 7,389 7/9/2026
12.0.2 3,138 7/1/2026
12.0.1 8,181 6/29/2026
12.0.0 177 6/29/2026
11.2.2 14,031 6/8/2026
11.2.1 1,238 6/2/2026
11.2.0 12,896 5/26/2026
11.1.1 6,647 4/10/2026
11.1.0 28,631 4/9/2026
11.0.3 4,167 3/30/2026
11.0.2 369 3/26/2026
11.0.1 13,944 3/24/2026
11.0.0 341 3/23/2026
10.8.0 28,929 3/6/2026
10.7.2 333 3/2/2026
Loading failed