BNB Smart Chain (BSC) RPC endpoint — node URL
Last updated:
Get API key Read the documentation
Network details
| Network | BNB Smart Chain mainnet |
|---|---|
| Chain ID | 56 |
| Currency | BNB |
| RPC URL | https://triport.io/rpc/bsc |
| Keyed URL for wallets | https://triport.io/r/<API_KEY>/bsc |
| Authentication | x-token: $TRIPORT_API_KEY (Authorization: Bearer also accepted), scope bsc:rpc |
| WebSocket | wss://triport.io/ws/bsc — newHeads, logs, newPendingTransactions |
| Transaction submission | Not part of the product |
Try it without a key
https://triport.io/public/bsc — 15 req/s reads; reads only, no transaction sends — one budget shared by every caller. JSON-RPC over HTTPS POST with no key and no account; it is not a plan, and there is no WebSocket.
Reads only: eth_sendRawTransaction is refused with method_unknown, with a key or without one.
curl https://triport.io/public/bsc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# -> {"jsonrpc":"2.0","id":1,"result":"0x38"}Checked by a live probe on 2026-11-01. Bodies up to 256 KiB; a batch of 20 calls is answered.
A wallet added with this URL can read balances but cannot send, because BNB Smart Chain is read-only on Triport. For reads in code, the URL works.
What works today
| Capability | Status | Notes |
|---|---|---|
| JSON-RPC reads (BNB Smart Chain) | Available | Read-only product: no transaction submission. |
| eth_getLogs | Available | primary heavy class up to 50,000 blocks and up to 50,000 logs per response; secondary class chunked at 10,000 blocks; wide ranges split automatically |
| txpool (routed node view) | Available | Local pool of the routed node, not the whole network mempool. |
| Debug and trace (best-effort) | Available | Served through a deterministic trace router across the trace-capable nodes; best-effort, no SLA. |
| WebSocket logs subscription (basic+) | Available | Requires a non-empty address or topics filter; orphaned-block removed:true notifications are not sent. |
| WebSocket newHeads subscription (pro+) | Available | There is no syncing channel. |
Read-only, and why that is stated first
BSC on Triport serves reads. There is no submission category on any plan, so eth_sendRawTransaction is not available here at all — if your application signs and broadcasts transactions, this endpoint covers the reading half only. Saying that up front is cheaper for both of us than a failed integration on the day you ship.
The /ws/bsc WebSocket
wss://triport.io/ws/bsc is mounted on both production regions. It speaks the standard EVM JSON-RPC Pub/Sub shape used by the BSC streaming channel: eth_subscribe for newHeads (pro), logs (basic, with a non-empty address or topics filter) and newPendingTransactions (free, mempool hashes), plus eth_unsubscribe and ordinary JSON-RPC and batch calls over the same socket. Reorg handling pushes the new canonical block's logs; orphaned-block removed: true notifications are not sent, and there is no syncing channel. For head tracking it replaces a polling loop against eth_getBlockByNumber.
Limits worth knowing before you build
eth_getLogs covers up to 50,000 blocks and 50,000 logs per response on the primary heavy class, with a secondary class chunked at 10,000 blocks and wide ranges split automatically. A result set that would exceed the logs ceiling is rejected with an upstream limit error rather than silently truncated, so page large scans by block range, keep an address filter where possible, and treat a range error as a signal to split.
txpool_* is one node's pool. txpool_content, txpool_inspect and txpool_status return the local pool of whichever node served the request, which is a sample of pending activity and not the network mempool. For a live pending feed use the /ws/bsc newPendingTransactions subscription, and still treat it as partial.
debug_traceBlockByNumber, debug_traceTransaction and trace_block are served through a deterministic trace router across the trace-capable nodes — best-effort, no SLA, and they share the heavy read budget.
What teams run on it
- Balance and history trackers. BEP-20 balances and transfer logs, read only.
- Deposit monitoring. Confirming incoming transfers from receipts.
Testnet
BNB Smart Chain testnets: BSC testnet (chain ID 97). Triport serves mainnet only; switch the URL and chain ID for test work — BNB Smart Chain testnet connection values.
opBNB is a different network and is not served.
Terms on this page: Event log · Archive node · Transaction receipt.
Limits and plans
2× burst buffer, included. Finite request-rate limits show sustained RPS and short burst capacity. A full buffer at 20 RPS can absorb up to 40 requests at once and refills at 20 requests per second. There is no quota on the number of bursts and no extra charge for them. Size ongoing traffic to sustained RPS. Categories with no per-category cap have no numeric burst ceiling. How burst capacity works.
| Capability | Free trial (7 days) | Basic | Pro | Business | Enterprise |
|---|---|---|---|---|---|
| Reads (bsc_read_rpc) | 15 RPS sustained · up to 30 burst | 20 RPS sustained · up to 40 burst | 100 RPS sustained · up to 200 burst | 250 RPS sustained · up to 500 burst | no per-category cap |
| Heavy reads: logs, archive state | 15 RPS sustained · up to 30 burst | 20 RPS sustained · up to 40 burst | 100 RPS sustained · up to 200 burst | 250 RPS sustained · up to 500 burst | no per-category cap |
| Transaction submission | — | — | — | — | — |
| WebSocket /ws/bsc (per-method floor) | pending tx | + logs | + newHeads | + newHeads | + newHeads |
Both BSC rows are operational defaults inherited from Polygon of the same plan — they are not the result of a BSC load test, and we publish them as per-category RPS limits rather than measured capacity. Unusually for our networks, the heavy budget equals the ordinary read budget here, so logs and archive reads are not rationed separately. Plans: Basic $20, Pro $249, Business $499, Enterprise from $999 per month; Free is a 7-day trial with a single key in the EU region. See BSC limits.
Every plan with its limits on every network, and what a plan costs at its cap: RPC pricing.
Quickstart
# curl
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":[]}'
# viem
import { createPublicClient, http } from "viem";
import { bsc } from "viem/chains";
const client = createPublicClient({
chain: bsc,
transport: http("https://triport.io/r/<API_KEY>/bsc"),
});
# Hardhat / Foundry
networks: { bsc: { url: "https://triport.io/r/<API_KEY>/bsc", chainId: 56 } }
rpc_endpoints = { bsc = "https://triport.io/r/<API_KEY>/bsc" }FAQ
- What is the BNB Smart Chain RPC URL?
- https://triport.io/rpc/bsc for JSON-RPC over HTTPS. Authenticate with the x-token header, or use the keyed URL https://triport.io/r/<API_KEY>/bsc where a custom header is impossible, such as in a wallet or hardhat.config.
- What is chain ID 56?
- 56 is BNB Smart Chain mainnet, an EVM chain that pays gas in BNB. Standard eth_* JSON-RPC and the usual EVM tooling (viem, ethers, Hardhat, Foundry) work against it.
- Is there a WebSocket endpoint for BSC on Triport?
- Yes. wss://triport.io/ws/bsc is mounted on both production regions and speaks the standard EVM JSON-RPC Pub/Sub shape: eth_subscribe for newHeads (pro), logs (basic, with a non-empty address or topics filter) and newPendingTransactions (free, mempool hashes), plus eth_unsubscribe and ordinary JSON-RPC and batch over the same socket. There is no syncing channel.
- Can I send transactions on BSC through Triport?
- No. BSC is published as a read-only surface — there is no submission category on any plan, so eth_sendRawTransaction is not served. Use your own node or another provider for broadcasting.
- What is the eth_getLogs block range limit on BSC?
- The primary heavy class accepts up to 50,000 blocks and up to 50,000 logs per response; a secondary class is chunked at 10,000 blocks, and wide ranges are split automatically. A result set that would exceed the logs ceiling is rejected rather than silently truncated, so a correct client still pages by block range, keeps an address filter where possible, and treats a range error as a signal to split.
- Does txpool_content show the whole BSC mempool?
- No. txpool_content, txpool_inspect and txpool_status return the local pool of the node your request was routed to — a partial view, not the network mempool. Treat it as a sample.
- Are debug_traceTransaction and trace_block available on BSC?
- Yes, served through a deterministic trace router across the trace-capable nodes of the pool: debug_traceBlockByNumber, debug_traceTransaction and trace_block are published and answered, but best-effort — there is no availability commitment or SLA, and they draw on the heavy read budget.
- What are the BSC rate limits?
- Reads 15/20/100/250 RPS on Free trial/Basic/Pro/Business, and the heavy budget is the same on each plan. Enterprise has no per-category cap. These are per-category RPS limits inherited from Polygon defaults and are unmeasured for BSC.
- Can I add Triport's BSC endpoint to MetaMask?
- Yes for reading, but a send will fail: BNB Smart Chain is read-only on Triport, so wallets need a send-capable RPC for transactions.
- What is the official BSC rate limit?
- BNB Chain states 10K/5min for its own endpoints (checked 2026-11-01). Ours is 15 reads per second keyless and shared, or your plan's limit with a key.
- Is there a free BSC RPC?
- Yes, for reads: https://triport.io/public/bsc needs no key and allows 15 requests per second, shared by every caller. A key starts with a 7-day trial.
BNB Smart Chain read methods
- eth_blockNumber
- eth_call
- eth_chainId
- eth_estimateGas
- eth_feeHistory
- eth_gasPrice
- eth_getBalance
- eth_getBlockByNumber
- eth_getBlockReceipts
- eth_getBlockTransactionCountByNumber
- eth_getCode
- eth_getProof
- eth_getStorageAt
- eth_getTransactionByHash
- eth_getTransactionCount
- eth_getTransactionReceipt
- eth_maxPriorityFeePerGas
- eth_syncing
- net_listening
- net_peerCount
- net_version
- web3_clientVersion