Binance Market Data - 24h Tickers & Klines avatar

Binance Market Data - 24h Tickers & Klines

Pricing

from $0.25 / 1,000 market data row scrapeds

Go to Apify Store
Binance Market Data - 24h Tickers & Klines

Binance Market Data - 24h Tickers & Klines

Binance spot 24-hour tickers and OHLCV candles (klines) as flat, typed rows: prices and volumes as numbers, ISO-8601 UTC times, base and quote asset on every row. All USDT pairs, any symbol list, any interval from 1s to 1M.

Pricing

from $0.25 / 1,000 market data row scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

20 days ago

Last modified

Share

Binance spot market data as flat, typed dataset rows: the rolling 24-hour ticker for any set of symbols (or every trading symbol on the exchange), and OHLCV candles ("klines") at any interval from one second to one month.

What you are paying for, honestly

The data comes from Binance's free, public market-data API (data-api.binance.vision, Binance's own mirror of the api.binance.com market endpoints). Nothing here is exclusive, and anyone with curl can read the same numbers. What this actor adds is the plumbing between that API and a table:

  • Typed, flat rows. Binance sends every price and quantity as a string ("85443.26000000") and every candle as a positional array. Here each one is a named number column, times come as epoch milliseconds and ISO-8601 UTC, and every row carries its base_asset, quote_asset and status.
  • Scheduled feeds into anything Apify connects to. Run it every five minutes or every day and send the dataset to Google Sheets, a webhook, S3, Make, Zapier or your warehouse without writing a client.
  • The awkward parts handled. Halted symbols filtered out, a correct quote-asset filter, candle paging past Binance's 1,000-per-request cap, request-weight budgeting, retries from a fresh address on a rate limit.

If you already run code against the Binance API, you probably do not need this. If you want the numbers in a spreadsheet or a pipeline on a schedule, this is the short way there.

Modes

tickers - one row per symbol: last price, 24h change and change %, open/high/low, volume-weighted average price, previous close, best bid and ask with their sizes, base and quote volume, trade count and the window's open and close times.

  • Give symbols for specific pairs, or leave it empty for the whole exchange (about 1,370 trading symbols).
  • quoteAsset keeps only pairs quoted in that asset - USDT gives every USDT pair (about 500). It is matched against the quote asset Binance publishes for each symbol, not against the end of the name: Binance lists quote assets called U, USD, USD1 and FDUSD beside USDT, so "ends in USD" would be wrong.

klines - one row per symbol per candle: open, high, low, close, base and quote volume, trade count, taker-buy base and quote volume, open and close time.

  • interval: 1s 1m 3m 5m 15m 30m 1h 2h 4h 6h 8h 12h 1d 3d 1w 1M.
  • limit candles per symbol, up to 10,000 (paged 1,000 at a time).
  • With startTime, the first limit candles from that moment. Without it, the most recent limit candles up to endTime, or up to now. Either way a symbol's rows come out oldest first.

Input

FieldTypeDefaultWhat it does
modeselecttickerstickers or klines.
symbolsarrayBTCUSDT, ETHUSDTSpot symbols. BTC/USDT, btc-usdt are normalised. Checked against Binance's symbol list first; unknown ones are reported by name and skipped. Required for klines.
quoteAssetstring-Tickers mode only. Exact quote asset, e.g. USDT, BTC, FDUSD, EUR.
includeNonTradingbooleanfalseInclude halted/delisted (BREAK) symbols. See below.
intervalselect1dKlines mode. 1m is a minute, 1M a month.
limitinteger100Klines mode. Candles per symbol, 1-10,000.
startTimestring-Klines mode. YYYY-MM-DD (midnight UTC), ISO-8601 datetime, or epoch ms.
endTimestring-Klines mode. Same formats; inclusive.
maxItemsinteger1000Cap on rows for the whole run, and so on spend.
proxyConfigurationproxyApify datacenterThe mirror serves datacenter addresses.

Output

Both record types share one dataset; record_type (ticker or kline) tells them apart, and the shared columns have the same name and type in both, so one table holds both. Dataset views: All rows, 24h tickers, Klines.

Ticker row:

record_type "ticker"
symbol e.g. "BTCUSDT"
base_asset e.g. "BTC" (from Binance's symbol list)
quote_asset e.g. "USDT"
status "TRADING", or "BREAK" with includeNonTrading
last_price, last_qty
price_change absolute change over the 24h window
price_change_percent e.g. 0.763 means +0.763 %
weighted_avg_price 24h volume-weighted average price
prev_close_price
open_price, high_price, low_price
bid_price, bid_qty, ask_price, ask_qty
volume base-asset volume
quote_volume quote-asset volume
open_time, close_time epoch ms - the rolling window
open_time_iso, close_time_iso ISO-8601 UTC
first_trade_id, last_trade_id
trade_count

Kline row:

record_type "kline"
symbol, base_asset, quote_asset, status
interval e.g. "1h"
open_time, close_time, open_time_iso, close_time_iso
open_price, high_price, low_price, close_price
volume, quote_volume, trade_count
taker_buy_base_volume, taker_buy_quote_volume

Nulls mean "Binance reported none", never zero

Binance writes 0 where there is nothing to report, and a zero in a price column reads as a measurement. This actor writes null instead, in exactly these cases:

  • Any price that Binance reports as exactly 0 (last_price, open_price, high_price, low_price, close_price, weighted_avg_price, prev_close_price, bid_price, ask_price). No market trades at zero; Binance sends 0 for "no trade in the window" and for an empty side of the order book. Measured 2026-10-05: the trading pair UIDR had no trades in its window and was reported with lastPrice "0.00" while its order book showed a bid of 17,783.
  • price_change, price_change_percent and last_qty when the window had no trades (trade_count 0). Binance reports a 0% change there, which would read as "the price held" when nothing traded at all.
  • first_trade_id / last_trade_id when Binance sends its -1 sentinel for "no trades".
  • base_asset, quote_asset, status only if Binance's own symbol list omits a symbol, which has not been observed for any symbol this actor requests.

Volumes, quantities and trade_count stay as sent, zeros included: zero volume traded is a measurement.

Halted and delisted symbols

Binance still lists far more dead spot symbols than live ones: on 2026-10-05, 2,348 of 3,720 had status BREAK. Their 24-hour statistics describe a window that closed weeks or years ago, so they are left out by default - the whole-exchange ticker request asks Binance for TRADING symbols only. Turn on includeNonTrading to get them, each row marked status: "BREAK"; check close_time_iso before trusting any of their numbers.

Things this data is not

  • Not real-time to the millisecond. Each run reads the REST API once; the ticker is a rolling 24h window as of the moment of the request.
  • The newest candle may still be forming. A klines request that reaches the present includes the current, unfinished candle; its close_time is in the future and its prices will still move.
  • Spot only. Futures, options, funding rates and order-book depth are not included.

Rate limits and reliability

Binance counts "request weight" per address per minute (6,000). Measured 2026-10-05: a ticker request for 1-20 symbols costs 2, for 21-100 costs 40, for more or for the whole exchange 80; a klines request costs 2; the symbol list costs 20. The actor sends explicit symbol lists twenty at a time, tracks the weight Binance reports on every response, and pauses for the window to reset before it would go past 4,800. HTTP 429 (rate limited), 418 (Binance's automatic ban after ignored 429s), 403 and 5xx are retried with backoff from a fresh proxy address. An invalid symbol or interval is permanent and is reported, never retried.

A typical run is small: 100 symbols' tickers is 1 symbol-list request plus 5 ticker requests; 100 daily candles for 10 symbols is 11 requests.

Pricing

Pay per event:

  • $0.000245 per row (quote-scraped) - one ticker row or one candle row, charged after the row is written. Rows are de-duplicated before charging.
  • $0.002 per run (actor-start).

So 500 USDT-pair tickers cost $0.1245 per run; 1,000 hourly candles $0.247. Symbols that are skipped (unknown, halted, filtered out) are not charged, and maxItems caps both rows and spend - the actor never requests more symbols or candles than maxItems allows.

Source

https://data-api.binance.vision/api/v3/ - exchangeInfo, ticker/24hr, klines, unauthenticated. On 2026-10-05 the ticker endpoint was verified from an Apify datacenter address and all three from outside the platform. api.binance.com itself answers HTTP 451 from Apify datacenter addresses and is not used.