Binance is the exchange every proxy vendor lists and the one whose public data needs a proxy least. On 28 September 2026 we fetched binance.com through residential exits in Germany and the United States. The homepage hands a plain HTTP client 2,108 bytes and 26 words under the heading "JavaScript is disabled"; rendering it costs 444,189 bytes and 56 seconds for marketing copy. The number that matters is 558: the bytes in one 24-hour ticker from the public market-data host, which answered both countries identically, without a key, and told us in a response header exactly how much of our per-IP budget it had used.
The homepage is the wrong door: 26 words, or 444 KB of marketing
Every "binance proxies" guide starts from the website, so we did too. From a German residential exit, a client that does not run JavaScript received a 2,108-byte page whose only heading is "JavaScript is disabled" and whose status code is 202. The response carries an x-amzn-waf-action: challenge header: Binance sits behind a web application firewall that asks the browser to prove itself before the real page is served. From the United States the answer was the same shell, 2,105 bytes.
| Fetch | Exit | Status | Bytes | What you get |
|---|---|---|---|---|
| binance.com/en, no JavaScript | Germany | 202 | 2,108 | 26 words, "JavaScript is disabled", no title, no canonical |
| binance.com/en, no JavaScript | United States | 202 | 2,105 | the same shell |
| binance.com/en, rendered | Germany | 202 | 444,189 | title, description, canonical, marketing copy; 56.1 seconds |
The rendered page is real: the title reads "Binance Crypto Exchange: Buy, Sell Bitcoin, Ethereum, Stocks & More", the canonical resolves, and when we audited it two days earlier the rendered view carried 1,196 words, with the h1 built around a live user counter. None of those words is a price you can parse. A browser session that costs 56 seconds and 444 KB to reach a landing page is the most expensive way to read a number that Binance publishes for free two hostnames away. Skip the render on this target; it buys a headline and a counter, nothing a data job needs.
Public market data is 558 bytes and needs no key
Binance's developer documentation says it plainly: for APIs that only send public market data, use the base endpoint data-api.binance.vision. We did, over plain HTTP through the same residential exits, with no API key and no signature.
| Endpoint | Exit | Status | Bytes | Time | Weight used (1 min) |
|---|---|---|---|---|---|
| data-api.binance.vision/api/v3/ticker/24hr?symbol=BTCUSDT | Germany | 200 | 558 | 2.1 s | 2 |
| data-api.binance.vision/api/v3/ticker/24hr?symbol=BTCUSDT | United States | 200 | 558 | 1.9 s | 2 |
| data-api.binance.vision/api/v3/ticker/price (every symbol) | Germany | 200 | 157,699 | 6.8 s | 4 |
| api.binance.com/api/v3/exchangeInfo?symbol=BTCUSDT | Germany | 200 | 5,335 | 5.6 s | 20 |
The 558-byte ticker holds 24 fields: last price, bid and ask with sizes, open, high, low, volume, quote volume, trade count, the first and last trade ids and the window timestamps. BTCUSDT last traded at 83,650.01 when we asked. The all-symbols price list is 157,699 bytes for the entire exchange in one call. That is the whole "scrape Binance prices" job, and it is a fraction of the bytes the homepage shell costs before it shows you anything.
The column that decides your proxy strategy is the last one. Every response carries x-mbx-used-weight-1m, and the documentation is explicit that the limits on the API are based on the IPs, not the API keys. A ticker costs 2, the full price list 4, exchange information 20. Exceed the per-minute weight and the API answers 429; keep exceeding it and Binance issues an automated IP ban with status 418, which the documentation says scales for repeat offenders from 2 minutes to 3 days. So a pool of exits is the right shape for high-frequency public reads: the budget is per address, and each address in a rotating pool brings its own. Read the weight header on every response and back off before the 429 arrives; our note on handling 429 while scraping covers the loop.
curl -s -x "http://USER:PASS@pr.quanticdata.io:7777" \
-D - "https://data-api.binance.vision/api/v3/ticker/24hr?symbol=BTCUSDT" \
| grep -i -e "^x-mbx-used-weight-1m" -e "lastPrice"
The exit country decides which host answers
Autocomplete for "binance api ip" ends with "binance api in us", and that is a real question with a measurable answer. The main API host, api.binance.com, answered our German exit with 5,335 bytes of exchange information. From a United States exit the same URL returns a 224-byte legal-restriction notice instead of data, because Binance does not serve its global exchange to US addresses. The public market-data host, data-api.binance.vision, returned the identical 558-byte ticker from both countries.
That gives two clean instructions. For public market data, use data-api.binance.vision and any exit; the country does not change the payload. For anything on api.binance.com, pin an exit outside the United States; Germany answered every request we sent. What it does not give is a licence to hold a Binance account from a place Binance does not serve: that is the account holder's breach of Binance's terms, a proxy does not change it, and we do not help with it. The StackExchange question on this SERP, from someone abroad asking whether a static ISP address will stop Binance "raising eyebrows", is asking exactly that, and the honest answer is that the address is not the problem.
The API key allowlist is where a static IP earns its price
Nine of the thirteen autocomplete suggestions for "binance api ip" are about restriction, whitelist, trusted, dynamic and banned addresses. Binance's own API-key FAQ explains why. Since 30 January 2023, a system-generated API key whose IP access is unrestricted can only carry the Enable Reading permission. Adding IP access restrictions, in IPv4 format, is mandatory to enable withdrawal permission, and Binance recommends against any permission beyond reading without them. In plain terms: a key that trades or withdraws is bound to a fixed list of addresses.
A rotating residential pool is the wrong tool for that key by construction: the exit changes, the request arrives from an address the key has never seen, and Binance rejects it. What the allowlist wants is one address that never changes and that you can type into the form. That is a static ISP proxy: a dedicated IP from a real carrier range, datacenter-hosted, unlimited bandwidth per address, from $2.50 per IP per month at volume. One key, one address, entered once. Keep it separate from the pool you use for public reads, because the per-IP weight budget you spend on tickers is the same budget your keyed calls draw from.
The rule of thumb is short. Public market data: any exit, rotate freely, watch the weight header. Keyed access: one static IP per key, allowlisted, never rotated. The two jobs should not share addresses.
What robots.txt says
binance.com/robots.txt is 6,722 bytes in three groups: the major search engines, Yandex, and a default group whose own comment reads "all other crawlers (incl. AI crawlers, scrapers, etc.)". All three open with Allow: /. The paths they exclude are account, KYC, deposit and complaint surfaces, campaign landing pages, and, for every group, the API paths themselves: */api/, */bapi/, */fapi/. Fifteen sitemap indexes follow, from Trade and Market to Academy and Square.
Read that the way it is written. The crawler-facing site is open; the API is not a crawl target because it is an API, with its own documentation, its own hosts and its own per-IP limits. Binance is not telling you to stay out of market data. It is telling you to read it the documented way, and the documented way is the 558-byte call above.
The cost of a gigabyte on Binance
Every number below came through residential proxies on the Basic line at $0.80/GB, counting a gigabyte as 10^9 bytes. Byte figures are what our scraper metered per request, excluding TLS handshake overhead.
| Job | Bytes per request | Requests per GB | Cost per 1,000 requests |
|---|---|---|---|
| 24-hour ticker, one symbol | 558 | about 1,792,000 | $0.00045 |
| Price of every symbol, one call | 157,699 | about 6,340 | $0.13 |
| Exchange information, one symbol | 5,335 | about 187,000 | $0.0043 |
| Homepage, rendered | 444,189 | about 2,250 | $0.36 |
A million ticker reads is 558 MB, or $0.45 of bandwidth on the Basic line and $1.28 on mobile proxies at $2.30/GB. Nothing we measured on the public host looked at the network type, so the cheaper line is the right one for reads. The rendered homepage row is there to make the point one more time: 800 renders cost what 640,000 tickers cost, and return no prices.
When a raw feed is not what you want: 50 coins in 14.8 seconds
A Binance ticker is one venue's order book. If the question is the market rather than the exchange, we ran our crypto market data collector on the same afternoon with the default input, quote currency USD, ranked by market cap, 50 coins. It returned 50 rows in 14.8 seconds: price, market cap and rank, 24-hour volume, high, low and change, circulating and total supply, all-time high with its date, and the last-updated timestamp, at $0.0002 per delivered coin. Bitcoin came back at 83,631 against Binance's 83,650.01 last trade a few minutes earlier, which is what an aggregate across exchanges should look like next to a single venue.
The collector is not a Binance scraper; it reads CoinGecko's public markets endpoint. That is the point. For a price screen, a portfolio valuation or a daily snapshot, one row per coin with the columns already joined beats 50 ticker calls and a symbol-mapping table you maintain yourself. For order-book depth, per-venue spreads and trade counts, the 558-byte ticker on Binance's own host is the right feed, and it is cheap enough that the proxy bill rounds to zero. For the platform we measured next door, the same story with a different twist is in our OKX measurements.
The setting that works on Binance
- Network: for public market data, residential Basic at $0.80/GB, rotating, because the limit is per IP and every address in the pool brings its own weight budget. For keyed access, one static ISP IP per API key, from $2.50/IP per month at volume, entered in the key's allowlist and never rotated.
- Fetch mode:
engine: tls, plain HTTP. The public ticker is 558 bytes; the homepage without JavaScript is 26 words and the rendered homepage is 444,189 bytes of marketing copy. Do not render. - Country to pin: for
data-api.binance.vision, none; the 558-byte ticker was identical from Germany and the United States. Forapi.binance.com, an exit outside the United States; Germany returned 5,335 bytes of exchange information where a US exit gets a 224-byte notice. - When the proxy is not enough: for the market rather than one venue, the crypto market data collector returned 50 coins in 14.8 seconds at $0.0002 per coin; for any Binance page that must be read as a browser sees it, the web scraping API with rendering, from $0.001 per page, billed only on success.
- Every account gets $2 of free API usage per month.
Sources & further reading
- Binance Spot REST API, general API information (base endpoints, per-IP limits, 429 and 418)
- How to Create API Keys on Binance? (IP access restrictions, permissions since 2023-01-30)
- binance.com/robots.txt (fetched 28 September 2026)
- data-api.binance.vision, public market data host (fetched 28 September 2026)