Library / SDK
JKorf/Binance.Net avatar
JKorf/Binance.Net

Binance.Net: a typed .NET client for the Binance REST and WebSocket APIs

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.

1,174 stars452 forksC#MIT

At a glance

What is it?
Binance.Net is a strongly typed C# client for Binance's REST and WebSocket interfaces, covering spot and futures, with client side rate limiting, a client side order book, automatic reconnection and native AOT support. It also ships a shared capability interface so code can be written against a shape rather than against one exchange, and it treats coding assistants as a first class consumer.
Who is it for?
Adopt Binance.Net if you are building a .NET service that talks to Binance, especially if you want typed models instead of hand written JSON parsing, or if you want one code path that can also target other exchanges through the shared API. Do not adopt it if you need a trading system that is insulated from exchange API changes, because a client library tracks the exchange rather than insulating you from it, and treat the account key handling as your own responsibility.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One exchange client out of a family

Binance.Net is a strongly typed client library for accessing the Binance REST and WebSocket API, and the badge in the README says since 2017, which is the first thing to note about its maturity. The architecture matters more than the single library name. The feature list ends with easy integration with other exchange client based on the CryptoExchange.Net base library, which means Binance.Net is one implementation of a shared base, and the same base backs the shared API that the documentation describes as providing exchange agnostic interfaces and models for common operations such as retrieving tickers, order books and balances, placing orders, and subscribing to market updates. The rest of the feature list is the part that separates a serious client from a thin wrapper. Response data is mapped to descriptive models, input parameters and response values are mapped to descriptive enum values where possible, and there is high performance, automatic websocket reconnection management, client side rate limiting, a client side order book implementation, support for managing different accounts, extensive logging, and support for different environments, specifically binance.com, binance.us and testnet. Native AOT support is listed too, which is a deliberate choice for anyone deploying to a serverless or trimmed runtime.

Three operations that show the shape of the API

The README's three examples are short, and between them they cover the whole surface: a REST read, an authenticated write, and a WebSocket subscription. A ticker request creates a rest client and asks the spot exchange data API for the ETHUSDT ticker, and the result is a wrapper whose `Data` property holds the model with the `LastPrice` value. A limit order configures credentials on the client and calls the USD futures trading API with a side, an order type, a quantity, a price, a time in force and a position side, all as enums rather than strings. A ticker subscription creates a socket client and subscribes to ticker updates for a symbol with a callback. The naming is consistent throughout: one client per transport, one property per API area such as `SpotApi` and `UsdFuturesApi`, and one service per capability such as `ExchangeData` and `Trading`, which is a design that makes the surface predictable once you have learned it.

csharp
// Get the ETH/USDT ticker via rest request
var restClient = new BinanceRestClient();
var tickerResult = await restClient.SpotApi.ExchangeData.GetTickerAsync("ETHUSDT");
var lastPrice = tickerResult.Data.LastPrice;
csharp
// Place Limit order to go long for 0.1 ETH at 2000
var orderResult = await restClient.UsdFuturesApi.Trading.PlaceOrderAsync(
    "ETHUSDT",
    OrderSide.Buy,
    FuturesOrderType.Limit,
    0.1m,
    2000,
    timeInForce: TimeInForce.GoodTillCanceled,
    positionSide: PositionSide.Long);
csharp
// Subscribe to ETH/USDT ticker updates via the websocket API
var socketClient = new BinanceSocketClient();
var tickerSubscriptionResult = socketClient.SpotApi.ExchangeData.SubscribeToTickerUpdatesAsync("ETHUSDT", (update) => 
{
  var lastPrice = update.Data.LastPrice;
});

The shared API, and why strict interfaces matter

Shared API V2 is the part of the design that a reviewer should look at closely, because it is where a library either stays a single exchange client or becomes a portability layer. The README describes it as a strict interface per capability, and the consequence is that the `SharedApi` property on each API surface exposes only the operations or subscriptions that surface actually supports, rather than a fat interface with unimplemented members. `IBinanceSharedApiClient` groups the exchange's shared API surfaces for dependency injection and runtime capability lookup, and the shared models use a shared symbol type that names the trading mode and the base and quote asset separately, for example `new SharedSymbol(TradingMode.Spot, "ETH", "USDT")`. The practical difference is worth spelling out. With a loose interface, swapping an exchange means writing code that assumes every member exists. With a strict per capability interface, the compiler tells you which operations a given surface supports, and the abstraction becomes a real contract rather than a naming convention.

The library ships guidance for coding assistants

One section of the README is unusual enough to deserve its own treatment, because it treats AI coding assistants as a supported consumer rather than an accident. The repository provides AGENTS.md at the root, which is auto-detected, a Cursor rules file at `.cursor/rules/binance-net.mdc`, GitHub Copilot instructions at `.github/copilot-instructions.md`, an `llms.txt` at the repo root for other tools such as Windsurf, Codex, Continue and Aider, an API quick map at `docs/ai-api-map.md`, and compilable examples under `Examples/ai-friendly/`. There is even a verification prompt, asking an assistant to show a minimal example of placing a limit buy order on Binance Spot including authentication setup, with the expected output using `BinanceRestClient`, `BinanceCredentials` and the `HttpResult` pattern. There is a companion project, cryptoexchange-skills-hub, for installable skills. What this buys a user is less guesswork from a model that has seen older versions of the library, and it is cheap for the maintainer to keep current because the same files serve a human reader.

Packaging, target frameworks, and the release rhythm

Installation is the standard NuGet line, `dotnet add package Binance.Net`, and the library is also published as GitHub packages, where you add the GitHub package source for the owner. A release download is offered as a third route, with the NuGet package files added alongside the source in the latest GitHub release. The framework support is broad and specific: the library targets .NET Standard 2.0 and 2.1 for compatibility as well as the latest .NET versions, and the support table lists .NET Core 2.0 and higher, .NET Framework 4.6.1 and higher, Mono 5.4 and higher, Xamarin.iOS 10.14 and higher, Xamarin.Android 8.0 and higher, UWP 10.0.16299 and higher, and Unity 2018.1 and higher. That list is the clearest statement of who the library is for, and it includes Unity and UWP, which is unusual for a trading client and suggests the author optimises for reach. The release cadence matches: 13.5.1 on 2026-09-01, 13.6.0 on 2026-09-24 and 13.7.0 on 2026-09-30, so you should expect to take minor versions fairly often.

The repository, the benchmark, and the honest limits

The tree is a normal solution layout with a unit test project, a `Benchmark/` directory, a `docs/` directory and an `Examples/` directory holding more than a dozen sample projects, from an ASP.NET Core MVC app and a minimal WebApi through Blazor variants, WPF, a console client, serverless and Blazor WebAssembly targets, and dedicated order book, order placement and tracker examples. A benchmark document is referenced for a comparison against CCXT and Binance.Api, and the README frames performance as a core focus, but the numbers themselves live in that document rather than in the README, so treat the comparison as something to read rather than something quoted. The limits are worth stating plainly. A single exchange client is a maintenance liability in a different shape from a stale library, because the exchange changes its API and the library changes to follow, and a trading system built on it inherits that coupling. Rate limiting happens on the client side, which means several processes each with their own limiter can together exceed what the exchange expects, and account key handling is something you configure yourself, which makes the credential storage in your application part of the security review.

Editorial conclusion

Adopt Binance.Net if you are building a .NET service that talks to Binance, especially if you want typed models instead of hand written JSON parsing, or if you want one code path that can also target other exchanges through the shared API. Do not adopt it if you need a trading system that is insulated from exchange API changes, because a client library tracks the exchange rather than insulating you from it, and treat the account key handling as your own responsibility. Before you commit, confirm the environments you need are supported, since the library covers binance.com, binance.us and testnet, and read the shared API guide if you plan to swap exchanges later. The licence is MIT, version 13.7.0 was released on 2026-09-30, and the last push was the same day.

Frequently asked questions

How do I install Binance.Net?

Run `dotnet add package Binance.Net` for NuGet. The library is also available as GitHub packages by adding the GitHub package source for the owner, and the NuGet package files are published alongside the source in the latest GitHub release.

How do I place a limit order with Binance.Net?

Configure credentials with `BinanceCredentials` on the client options, then call the trading API of the relevant surface, for example `UsdFuturesApi.Trading.PlaceOrderAsync`, passing the symbol, a side such as OrderSide.Buy, an order type such as FuturesOrderType.Limit, the quantity, the price, a time in force and a position side.

Which environments and markets does Binance.Net support?

The feature list names support for different environments, specifically binance.com, binance.us and testnet, and the library description covers the Binance REST and WebSocket API for Spot and Futures trading and market data.

What is the shared API in Binance.Net?

It comes from the CryptoExchange.Net base library and provides exchange agnostic interfaces and models for common operations such as tickers, order books, balances, placing orders and market updates. V2 uses a strict interface per capability, so the `SharedApi` property on each surface exposes only the operations that surface supports, and `IBinanceSharedApiClient` groups them for dependency injection and runtime capability lookup.

Does Binance.Net support coding assistants?

The repository ships AGENTS.md, a Cursor rules file, GitHub Copilot instructions, an llms.txt, a docs/ai-api-map.md and compilable examples under Examples/ai-friendly, plus a companion skills hub repository. The README suggests verifying an assistant by asking for a minimal limit buy order example and checking that the answer uses BinanceRestClient, BinanceCredentials and the HttpResult pattern.

Official sources

  1. JKorf/Binance.Net on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jkorf-binance-net.svg)](https://hysenlabs.com/projects/jkorf-binance-net)

Was this useful?