Skip to content
Mauro Petrini edited this page Apr 10, 2021 · 8 revisions

Binance CLI

This package provides a unified command-line interface to interact with Binance API (https://binance-docs.github.io/apidocs)

ℹ️ This is an unofficial package, and this project is not related or affiliated with Binance.

🚨 Use at your own risk.

Getting started

Generate API Key and Secret Key

You should have an active Binance account to create a valid API key and secret key.

You can follow this step-by-step guide provided by Binance:

https://www.binance.com/en/support/faq/360002502072

Add credentials

Before using BNC CLI, you need to tell it about your credentials. You can do this in several ways:

  • Configuration file (recommended)
  • Environment variables

The quickest way to get started is to run the bnc credentials add command:

$ bnc credentials add --api_key="YOUR_API_KEY" --secret="YOUR_SECRET_KEY"

Binance CLI's credentials added successfully.

When you add your credentials using the previous command, it will create an INI formatted file called credentials under ~/.bnc directory with the following structure:

[api_credentials]
bnc_cli_api_key = <YOUR_API_KEY>
bnc_cli_secret_key = <YOUR_SECRET_KEY>

To use environment variables, do the following:

$ export BNC_CLI_API_KEY=<YOUR_API_KEY>
$ export BNC_CLI_SECRET_KEY=<YOUR_SECRET_KEY>

Basic Commands

An BNC CLI command has the following structure:

$ bnc <command> [options and parameters]
$ bnc <command> <group_commands> <command> [options and parameters]

To view help documentation, use one of the following:

$ bnc --help
$ bnc <command> --help
$ bnc <command> <group_commands> --help
$ bnc <command> <group_commands> <command> --help

To get the version of the BNC CLI:

$ bnc --version

To turn on verbose output:

$ bnc --verbose <command>
$ bnc --verbose <group_commands> <command>

Command Output

The default output for commands is currently JSON.

There is also an ASCII table format available and YAML. You can select either style with the --output option at the root command bnc.

Example

JSON (Default)

$ bnc spot account_info
{
  "makerCommission": 0,
  "takerCommission": 0,
  "buyerCommission": 0,
  "sellerCommission": 0,
  "canTrade": true,
  "canWithdraw": false,
  "canDeposit": false,
  "updateTime": 1616376905442,
  "accountType": "SPOT",
  "balances": [
    {
      "asset": "BNB",
      "free": "1000.00000000",
      "locked": "0.00000000"
    },
    {
      "asset": "BTC",
      "free": "0.98181601",
      "locked": "0.00000000"
    }
  ],
  "permissions": [
    "SPOT"
  ]
}

YAML

$ bnc --output=yaml spot account_info
makerCommission: 0
takerCommission: 0
buyerCommission: 0
sellerCommission: 0
canTrade: true
canWithdraw: false
canDeposit: false
updateTime: 1616376905442
accountType: SPOT
balances:
- asset: BNB
  free: '1000.00000000'
  locked: '0.00000000'
- asset: BTC
  free: '0.98181601'
  locked: '0.00000000'
permissions:
- SPOT

JMESPath (--query)

Some commands have an --query option that allows extracting and transforming elements from a JSON. It is very useful on occasions where you need to filter a very long response from Binance API. For more information on the expression language used for this option, you can read the JMESPath Tutorial

Example

Add example here

Clone this wiki locally