Financial Literature

Binance

Binance public API — Candles down to one minute for every spot pair on the largest exchange — no key for market data

When you need exchange-level detail — candles at any interval, the order book, trades, funding rates on futures — from one venue, with history to 2017 and monthly CSV dumps at data.binance.vision for bulk.

cryptoglobal
Asset classescrypto
Frequencyintraday → monthly
History2017 → today
Limit · costNo key for market data · 6,000 request weight/min per IP
KeyNo key — No key for public market data. Geo-restricted: US users are routed to binance.us, which has its own API.
Formats · pull withjson · csv — python, excel
LicenceBinance API terms: market data for personal use; redistribution restricted.
RedistributeNo — link and pull, do not republish
Best for“One-minute candles for a crypto pair” · “Order-book depth and recent trades”
When to use it

Reach for it when…

When you need exchange-level detail — candles at any interval, the order book, trades, funding rates on futures — from one venue, with history to 2017 and monthly CSV dumps at data.binance.vision for bulk.

Not for: A market-wide price (CoinGecko aggregates), fiat on-ramps, anything where one exchange's outage matters, use from a restricted jurisdiction.

How to read it

Units, revisions, traps

Units. Prices in the quote asset (USDT for BTCUSDT — a stablecoin, not dollars); klines are arrays: [open time, open, high, low, close, volume, close time, quote volume, trades, …].

Revisions. Not revised.

  • USDT pairs are not USD pairs; the stablecoin has traded off par.
  • Klines return at most 1,000 rows per call; walk startTime for history.
  • Timestamps are milliseconds; the close time is inclusive.

Classic mistake: Reading BTCUSDT as 'bitcoin in dollars' during a stablecoin depeg.

How to use it in your own work

Three recipes

Each recipe: Python · Excel · Sheets, with how to read the result. Python recipes run under pandas; recipe 1 is re-run by the weekly check where the source allows it.

How to use it in your own work

Copy the snippet, change the series id, read the result the way the footer says. Replace YOUR_…_KEY with your own key where one is needed.

Recipe 1Daily candles for BTCUSDT

import requests, pandas as pd
u = "https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1d&limit=365"
cols = ["open_time", "open", "high", "low", "close", "volume", "close_time", "quote_vol", "trades", "tb_base", "tb_quote", "ignore"]
df = pd.DataFrame(requests.get(u, timeout=30).json(), columns=cols)
df["date"] = pd.to_datetime(df.open_time, unit="ms")
print(df.set_index("date")[["open", "high", "low", "close", "volume"]].astype(float).tail())
How to read the resultVolume is in BTC; quote_vol is in USDT and is the one to compare across pairs.

Recipe 2One-minute candles for the last day

import requests, pandas as pd
u = "https://api.binance.com/api/v3/klines?symbol=ETHUSDT&interval=1m&limit=1000"
df = pd.DataFrame(requests.get(u, timeout=30).json()).iloc[:, :6]
df.columns = ["open_time", "open", "high", "low", "close", "volume"]
df["time"] = pd.to_datetime(df.open_time, unit="ms")
print(df.set_index("time")[["close", "volume"]].astype(float).tail())
How to read the result1,000 minutes is under 17 hours; page with startTime for more.

Recipe 3Bulk history from the data dumps

# monthly zipped CSVs: https://data.binance.vision/?prefix=data/spot/monthly/klines/BTCUSDT/1d/
import pandas as pd
u = "https://data.binance.vision/data/spot/monthly/klines/BTCUSDT/1d/BTCUSDT-1d-2025-12.zip"
df = pd.read_csv(u, compression="zip", header=None).iloc[:, :6]
df.columns = ["open_time", "open", "high", "low", "close", "volume"]
print(df.head())
How to read the resultThe dumps have no header row; newer files use microsecond timestamps — check the magnitude.

Series → question map

The ids we use from Binance public API, each with the question it answers. The catalog's compare view reads the concept tags behind these rows.

SeriesAnswersRegionConcept
klines · BTCUSDT 1dBitcoin daily candles on one exchangeglobalcrypto_spot
klines · 1mCrypto intraday candlesglobalcrypto_intraday
depthThe order book right nowglobalorderbook

Compare with

Same question, different source: CoinGecko API, Twelve Data, Polygon.io. The compare view lines up coverage, frequency, history and access side by side and lists what the combination makes possible.

Open compare: Binance public API · CoinGecko API · Twelve Data →

Questions readers ask

Do I need an account?

Not for market data. Trading endpoints need a key and are outside this catalog.

Why does api.binance.com refuse me?

Geo-restriction: some jurisdictions (the US) are blocked; binance.us has a separate API and thinner markets.

Where is bulk history?

data.binance.vision — daily and monthly zipped CSVs per pair and interval, back to 2017.

Educational only — we explain, we never advise · snippet licence: public domain · corrections to [email protected], fixed within a day and logged in the changelog.