BNB Smart Chain RPC — chain ID 56
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>/rpc/bsc |
| Authentication | x-token: $TRIPORT_API_KEY (Authorization: Bearer also accepted), scope bsc:rpc |
| WebSocket | Not part of the product |
| Transaction submission | Not part of the product |
What works today
| Capability | Status | Notes |
|---|---|---|
| JSON-RPC reads (BNB Smart Chain) | Available | Read-only product: no transaction submission. |
| eth_getLogs | Available | up to 100 blocks per request; 25/100 are source profiles, not one promised range |
| txpool (routed node view) | Limited | Local pool of the routed node, not the whole network mempool. |
| Debug and trace (best-effort) | Limited | — |
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.
There is no WebSocket for BSC
Not supported. Not part of the product; the AsyncAPI file is not a live service. A contract file in the repository is not a running service, and we would rather say so than let you discover it from a connection that never opens. For head tracking, poll eth_getBlockByNumber; for events, page eth_getLogs in 100-block windows.
Two limits worth knowing before you build
eth_getLogs covers at most 100 blocks per request. The 25 and 100 figures that appear in upstream sources are per-node profiles, not a single promised range — so chunk conservatively and handle a range error rather than assuming the maximum.
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. Building a mempool product on it would be building on a partial view.
debug_traceBlockByNumber, debug_traceTransaction and trace_block are served best-effort and share the heavy read budget.
Limits and plans
| Capability | Free trial (7 days) | Basic | Pro | Business | Enterprise |
|---|---|---|---|---|---|
| Reads (bsc_read_rpc) | 15 | 20 | 100 | 250 | no per-category cap |
| Heavy reads: logs, trace, archive state | 15 | 20 | 100 | 250 | no per-category cap |
| Transaction submission | — | — | — | — | — |
| WebSocket | — | — | — | — | — |
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 trace 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?
- No. WebSocket is not part of the BSC product: there is no /ws/bsc service, and the AsyncAPI file in the repository describes a contract that is not served. Poll eth_getBlockByNumber and eth_getLogs instead.
- 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?
- Up to 100 blocks per request. The 25 and 100 figures seen in sources are per-node profiles rather than one promised range, so a client that must not fail should chunk conservatively and handle a range error.
- 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?
- They are served best-effort: debug_traceBlockByNumber, debug_traceTransaction and trace_block are published, but without an availability commitment, 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.
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