This project is designed to help you make your own projects that interact with the Binance API. You can stream candlestick chart data, market depth, or use other advanced features such as setting stop losses and iceberg orders. This project seeks to have complete API coverage including WebSockets.
Futures API & Streams • Spot Trading API & Streams • Margin API • Lending API
Examples • Troubleshooting • Changelog • Support
npm install node-binance-api
https://t.me/nodebinanceapi
Actively maintained, typed, and safe SDK for the Binance REST APIs and Websockets. Supports ESM and CJS out of the box.
We highly advise you to update from 0.0.X but minor adjustments might be needed.
The library was fully refactored to use a modern and typed JavaScript/Typescript version, using the built-in await/async syntax and unifying some methods' signatures. Some important changes include the removal of callbacks as parameters of REST methods, adaptation of signatures to directly receive some important request values (symbol, orderId, ...), among others.
import Binance from 'node-binance-api';
async function run() {
const exchange = new Binance();
const res = await exchange.futuresTime();
console.log( res );
}
const Binance = require('node-binance-api');
const binance = new Binance({
APIKEY: '<key>',
APISECRET: '<secret>',
test: true, // if you want to use the sandbox/testnet
});
console.info( await binance.futuresPrices() );
console.info( await binance.futuresAccount() );
console.info( await binance.futuresBalance() );
console.info( await binance.futuresBuy( 'LIMIT', 'BTCUSDT', 0.1, 8222 ) );
console.info( await binance.futuresSell( 'LIMIT', 'BTCUSDT', 0.5, 11111 ) );
console.info( await binance.futuresMarketBuy( 'BNBUSDT', 5 ) );
console.info( await binance.futuresMarketSell( 'TRXUSDT', 1 ) );
let orders = [
{
symbol:"BTCUSDT",
side: "BUY",
type: "MARKET",
quantity: "0.01",
},
{
symbol:"BNBUSDT",
side: "SELL",
type: "MARKET",
quantity: "0.5",
}
]
console.info( await binance.futuresMultipleOrders(orders) );
console.info( await binance.futuresMarketBuy( 'BNBUSDT', amount, { newOrderRespType: 'RESULT' } ) );
if ( side == 'LONG' ) order = await binance.futuresMarketSell( obj.symbol, amount, {reduceOnly: true} )
else order = await binance.futuresMarketBuy( obj.symbol, amount, {reduceOnly: true} )
console.info( await binance.futuresPositionRisk() );
View Example
let position_data = await binance.futuresPositionRisk(), markets = Object.keys( position_data );
for ( let market of markets ) {
let obj = position_data[market], size = Number( obj.positionAmt );
if ( size == 0 ) continue;
console.info( `${leverage}x\t${market}\t${obj.unRealizedProfit}` );
//console.info( obj ); //positionAmt entryPrice markPrice unRealizedProfit liquidationPrice leverage marginType isolatedMargin isAutoAddMargin maxNotionalValue
}
console.info( await binance.futuresLeverage( 'ETHUSDT', 50 ) );
console.info( await binance.futuresMarginType( 'BTCUSDT', 'ISOLATED' ) );
// Type: 1: Add postion margin,2: Reduce postion margin
console.info( await binance.futuresPositionMargin( "TRXUSDT", amount, type ) );
console.info( await binance.futuresTime() );
console.info( await binance.futuresExchangeInfo() );
console.info( await binance.futuresCandles( "TRXUSDT", "1m" ) );
console.info( await binance.futuresDepth( "ADAUSDT" ) );
console.info( await binance.futuresQuote() );
console.info( await binance.futuresQuote( "BCHUSDT" ) );
console.info( await binance.futuresDaily() );
console.info( await binance.futuresOpenInterest( "BTCUSDT" ) );
console.info( await binance.futuresMarkPrice() );
console.info( await binance.futuresMarkPrice( "ETHUSDT" ) );
console.info( await binance.futuresTrades( "LTCUSDT" ) );
console.info( await binance.futuresAggTrades( "XTZUSDT" ) );
console.info( await binance.futuresLiquidationOrders() );
console.info( await binance.futuresFundingRate() );
console.info( await binance.futuresHistoricalTrades( "XMRUSDT" ) );
console.info( await binance.futuresLeverageBracket( "LINKUSDT" ) );
console.info( await binance.futuresIncome() );
console.info( await binance.futuresCancelAll( "BTCUSDT" ) );
console.info( await binance.futuresCancel( "BTCUSDT", "1025137386" ) );
console.info( await binance.futuresCountdownCancelAll( "BTCUSDT", 45000 ) );
console.info( await binance.futuresOrderStatus( "BTCUSDT", "1025137386") );
console.info( await binance.futuresOpenOrders() );
console.info( await binance.futuresOpenOrders( "BTCUSDT" ) );
console.info( await binance.futuresAllOrders() );
console.info( await binance.futuresAllOrders( "BTCUSDT" ) );
console.info( await binance.futuresUserTrades( "BTCUSDT" ) );
console.info( await binance.futuresGetDataStream() );
console.info( await binance.futuresPositionMarginHistory( "TRXUSDT" ) );
console.info( await binance.futuresPublicRequest( 'v1/time' ) );
console.info( await binance.spotPublicRequest( 'v1/time')); // call any method by providing the path
console.info( await binance.privateFuturesRequest('v3/account')); // custom futures private call
// Batch orders, remaining WebSocket streams, and better documentation will be come later
In some specific cases using a proxy is required, for example: - Exchange is not available in your location - You need to make a large amount of requests without getting blocked - ...
This package supports the following proxy types, httpsProxy, proxyUrl and socksProxy
To set a real http(s) proxy for your scripts, you need to have an access to a remote http or https proxy, so calls will be made directly to the target exchange, tunneled through your proxy server:
client.httpsProxy = 'http://1.2.3.4:8080/';
This property prepends an url to API requests. It might be useful for simple redirection or bypassing CORS browser restriction.
client.proxyUrl = 'YOUR_PROXY_URL';
Tou can also use socks proxy with the following format:
client.socksProxy = 'socks5://1.2.3.4:8080/';
console.info( await binance.futuresHistDataId(
"BTCUSDT", {
startTime: new Date().getTime() - 24 * 60 * 60 * 1000,
endTime: new Date().getTime(),
dataType: 'T_TRADE'
} )
)
console.info( await binance.futuresDownloadLink(7343) )
binance.futuresMiniTickerStream( miniTicker => {
console.info( miniTicker );
} );
binance.futuresMiniTickerStream( 'BTCUSDT', console.log );
binance.futuresBookTickerStream( console.log );
binance.futuresBookTickerStream( 'BTCUSDT', console.log );
binance.futuresTickerStream( console.log );
binance.futuresTickerStream( 'BTCUSDT', console.log );
binance.futuresMarkPriceStream( console.log );
binance.futuresMarkPriceStream( 'BTCUSDT', console.log );
binance.futuresAggTradeStream( 'BTCUSDT', console.log );
binance.futuresChart( 'BTCUSDT', '1m', console.log );
binance.futuresLiquidationStream( console.log );
binance.futuresLiquidationStream( 'BTCUSDT', console.log );
binance.futuresSubscribe( 'btcusdt@kline_4h', console.log );
binance.futuresTerminate( 'btcusdt@kline_4h' );
$ claude mcp add node-binance-api \
-- python -m otcore.mcp_server <graph>