EVM network documentation

BNB Smart Chain RPC API reference

MainnetChain ID 5626 RPC methods

BNB Smart Chain mainnet RPC endpoint: https://triport.io/rpc/bsc (HTTPS), chain ID 56. Requests need a Triport API key in the x-token header; the Free plan is a 7-day trial. Endpoint, plans and limits: BNB Smart Chain RPC endpoint.

HTTPS endpointhttps://triport.io/rpc/bsc
BNB Smart Chain RPC endpointPlans, endpoints & pricing for BNB Smart ChainBNB Smart Chain chain ID, RPC URL & network configIdentifiers with sources, wallet setupBest BNB Smart Chain RPC providers comparedPrices, rate limits and features, each with its source
All BNB Smart Chain reference pages 31

JSON-RPC · bsc read rpc heavy

JSON-RPC · bsc read rpc

Streams

Guides & operations

Contracts

Capabilities

Statuses reflect checks up to 2026-10-31. Rate limits are plan policy, not measured capacity.

BSC provides read-only JSON-RPC 2.0 access over HTTPS. The published method catalog covers current chain data and supported historical reads; historical availability depends on the requested method and block.

Method / EndpointNetworkChain IDAuthenticationRequired scopeTier / rate limit
POST https://triport.io/rpc/bscBNB Smart Chain mainnet56x-token: $TRIPORT_API_KEYbsc:rpcCategory-specific RPS; see Limits

Endpoints

SurfaceEndpointReference
HTTPShttps://triport.io/rpc/bscBackend path /rpc/bsc

Quickstart

curl https://triport.io/rpc/bsc \
  -H "x-token: $TRIPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

What's available

29 JSON-RPC methods in the OpenRPC catalog:

  • bsc_read_rpc_heavy: 7
  • bsc_read_rpc: 22

Historical state reads are available within the retained history. Requests outside that history can return a pruned or unsupported-state error; handle these errors before retrying.

Limits

See network limits and Rate Limits & Tiers.

Finite request-rate budgets include a 2× burst buffer at no extra cost. It refills at sustained RPS; there is no quota on the number of bursts. Interval categories use seconds and have no RPS burst. See Burst capacity.

CategoryFreeBasicProBusinessEnterprise
bsc_read_rpc15 RPS sustained · up to 30 burst20 RPS sustained · up to 40 burst100 RPS sustained · up to 200 burst250 RPS sustained · up to 500 burstunlimited
bsc_read_rpc_heavy15 RPS sustained · up to 30 burst20 RPS sustained · up to 40 burst100 RPS sustained · up to 200 burst250 RPS sustained · up to 500 burstunlimited

eth_getLogs is served from the logs engine's recent-block window with deeper ranges split across archive-capable upstreams, so it is no longer bottlenecked on a single public node. Still use an address filter where possible and keep ranges bounded; the pool splits wide ranges automatically, but very large result sets are rejected rather than silently truncated. Consult the method reference and network limits for request budgets.

Errors

See network-specific errors and the shared error reference.

Upstream -32000 is ambiguous: header not found means a missing block, while pruned/unsupported text means missing historical state. Classify code and message together. invalid logs ranges or a missing required address are parameter errors.

Methods

bsc read rpc heavy (4)

bsc read rpc (22)

Streams

A JSON-RPC Pub/Sub WebSocket is mounted at wss://triport.io/ws/bsc (EU and CA). It carries three eth_subscribe types — newPendingTransactions (free), logs (basic) and newHeads (pro) — plus eth_unsubscribe, and it also serves ordinary JSON-RPC calls and batches on the same socket. The logs subscription requires a non-empty address/topics filter. See BSC Pub/Sub WebSocket and the streaming overview.

JavaScript (fetch)

The same request from JavaScript (Node 18+ or the browser):

const res = await fetch("https://triport.io/rpc/bsc", {
  method: "POST",
  headers: {
    "x-token": process.env.TRIPORT_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}),
});
const { result } = await res.json();
console.log(result);