Tapbit.Net is a client library for accessing the Tapbit spot REST API.
- Response data is mapped to descriptive models
- Input parameters and response values are mapped to discriptive enum values where possible
- High performance
- Client side rate limiting
- Support for managing different accounts
- Extensive logging
- Support for different environments
- Easy integration with other exchange clients based on the CryptoExchange.Net base library
- Native AOT support
The Tapbit.Net documentation is the main resource for installing, configuring, and using the library.
| Resource | Description |
|---|---|
| Client guide | Installation, REST clients, authentication, dependency injection, error handling, and advanced features |
| Examples | Common REST operations |
| API reference | Client interfaces, methods, and properties |
| Shared API guide | Common interfaces and models for working with multiple exchanges |
The library is targeting both .NET Standard 2.0 and .NET Standard 2.1 for optimal compatibility, as well as the latest dotnet versions to use the latest framework features.
| .NET implementation | Version Support |
|---|---|
| .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 |
| Unity | 2018.1 and higher |
dotnet add package Tapbit.Net
Tapbit.Net is available on GitHub packages. You'll need to add https://nuget.pkg.github.com/JKorf/index.json as a NuGet package source.
The NuGet package files are added along side the source with the latest GitHub release which can found here.
Basic request:
// Get the ETH/USDT ticker via rest request
var restClient = new TapbitRestClient();
var tickerResult = await restClient.SpotApi.ExchangeData.GetTickerAsync("ETH/USDT");
if (tickerResult.Success)
Console.WriteLine(tickerResult.Data.LastPrice);Place order:
var restClient = new TapbitRestClient(opts => {
opts.ApiCredentials = new TapbitCredentials("APIKEY", "APISECRET");
});
// Place a spot limit order for 0.1 ETH at 2000 USDT
var orderResult = await restClient.SpotApi.Trading.PlaceOrderAsync(
"ETH/USDT",
OrderSide.Buy,
0.1m,
2000m);For more examples and explanations, continue with the Tapbit.Net documentation or browse the compilable repository examples.
Tapbit.Net includes AI-oriented documentation and examples for code generation tools:
| File | Purpose |
|---|---|
AGENTS.md |
Assistant skill with core Tapbit.Net patterns, pitfalls, and examples |
llms.txt |
Short LLM index with links to docs, examples, and critical usage rules |
llms-full.txt |
Detailed LLM context with endpoint routing, authentication levels, code patterns, and anti-hallucination checks |
docs/ai-api-map.md |
Table-style intent-to-method map |
Examples/ai-friendly |
Compilable single-file examples for spot REST, authentication/trading, batch orders, shared APIs, and error handling |
See cryptoexchange-skills-hub for installable skills.
The CryptoExchange.Net Shared API V2 provides exchange-agnostic interfaces and models for common operations such as retrieving tickers, order books and balances, placing orders, and subscribing to market updates.
V2 uses a strict interface per capability. The SharedApi property on each API surface therefore exposes only the operations or subscriptions that surface actually supports. ITapbitSharedApiClient groups the exchange's Shared API surfaces for dependency injection and runtime capability lookup.
using Tapbit.Net.Clients;
using CryptoExchange.Net.SharedApis;
using var restClient = new TapbitRestClient();
IGetTickerRest tickerClient = restClient.SpotApi.SharedApi;
var symbol = new SharedSymbol(TradingMode.Spot, "ETH", "USDT");
var result = await tickerClient.GetTickerAsync(
new GetTickerRequest(symbol));
if (!result.Success)
{
Console.WriteLine(result.Error);
return;
}
Console.WriteLine(result.Data.LastPrice);The request and response models belong to CryptoExchange.Net.SharedApis, so the same operation can accept another exchange's IGetTickerRest implementation. When using dependency injection, inject ITapbitSharedApiClient to access all of the exchange's Shared API surfaces or inject a capability such as IGetTickerRest directly. Use GetCapability on the aggregate when the operation, transport, or trading mode is selected at runtime.
Tapbit.Net is based on the CryptoExchange.Net base library. Other exchange API implementations based on the CryptoExchange.Net base library are available and follow the same logic.
CryptoExchange.Net also provides shared access to different exchange APIs.
| Exchange | Repository | Nuget |
|---|---|---|
| Aster | JKorf/Aster.Net | |
| Binance | JKorf/Binance.Net | |
| BingX | JKorf/BingX.Net | |
| Bitfinex | JKorf/Bitfinex.Net | |
| Bitget | JKorf/Bitget.Net | |
| Bitstamp | JKorf/Bitstamp.Net | |
| Bitunix | JKorf/Bitunix.Net | |
| BloFin | JKorf/BloFin.Net | |
| Bybit | JKorf/Bybit.Net | |
| Coinbase | JKorf/Coinbase.Net | |
| CoinGecko | JKorf/CoinGecko.Net | |
| CoinW | JKorf/CoinW.Net | |
| Crypto.com | JKorf/CryptoCom.Net | |
| DeepCoin | JKorf/DeepCoin.Net | |
| Gate.io | JKorf/GateIo.Net | |
| HTX | JKorf/HTX.Net | |
| HyperLiquid | JKorf/HyperLiquid.Net | |
| Kraken | JKorf/Kraken.Net | |
| Kucoin | JKorf/Kucoin.Net | |
| LBank | JKorf/LBank.Net | |
| Lighter | JKorf/Lighter.Net | |
| Mexc | JKorf/Mexc.Net | |
| OKX | JKorf/OKX.Net | |
| Pionex | JKorf/Pionex.Net | |
| Polymarket | JKorf/Polymarket.Net | |
| Toobit | JKorf/Toobit.Net | |
| Upbit | JKorf/Upbit.Net | |
| Weex | JKorf/Weex.Net | |
| WhiteBit | JKorf/WhiteBit.Net | |
| XT | JKorf/XT.Net |
When using multiple of these API's the CryptoClients.Net package can be used which combines this and the other packages and allows easy access to all exchange API's.
A Discord server is available here. For discussion and/or questions around the CryptoExchange.Net and implementation libraries, feel free to join.
| API | Supported | Location |
|---|---|---|
| Market data | ✓ | restClient.SpotApi.ExchangeData |
| Account/Trades | ✓ | restClient.SpotApi.Account / restClient.SpotApi.Trading |
Any support is greatly appreciated.
If you do not yet have an account, please consider using this referral link to sign up:
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.
-
Version 1.2.0 - 30 Sep 2026
- Updated CryptoExchange.Net to V13.1.0
-
Version 1.1.0 - 24 Sep 2026
- Updated CryptoExchange.Net to v13.0.0
- Shared APIs
- Added SharedApi V2 support
- Added
.SharedApiproperty to clients - Added
(I)TapbitSharedApiClientcontaining all V2 SharedApi references - Added
SharedApitoTapbitOptionsto provide SharedApi related options - See https://cryptoexchange.jkorf.dev/docs/shared-api?sharedApiVersion=v2 for more info about the V2 update and https://github.com/JKorf/CryptoExchange.Net/blob/master/docs/SHARED_API_V2_MIGRATION.md for migrating from V1
- SharedApi V1 will still be supported
- Rate limiting
- Added rate limit admission callback to client options to allow rate limit admission ruling on request definition
- Added
WithRateLimitAdmissionAsyncto client to allow rate limit admission ruling on a specific request - Update rate limit safety margin logic
- Fixed some rate limit calculation issues
- Request coalescing
- Sending identical public GET requests on the same client at the same time will only send a single request to the server and use the same response
- Coalescing is enabled by default and can be disabled with the
RequestCoalescingEnabledclient option
-
Version 1.0.0 - 24 Aug 2026
- Initial release