Skip to main content

BSC Transfers API

In this section we'll have a look at some examples using the BSC Transfers API.

Subscribe to Recent Whale Transactions of a particular currency

The subscription query below fetches the whale transactions on the BSC network. We have used WBNB address 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c. You can find the query here

subscription{
EVM(network: bsc) {
Transfers(
where: {Transfer: {Currency: {SmartContract: {is: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"}}, Amount: {ge: "10000"}}}
) {
Transaction {
From
Hash
}
Transfer {
Amount
Sender
Receiver
Currency {
SmartContract
Symbol
Name
Fungible
Native
}
Id
}
}
}
}


Sender is a particular address

This websocket retrieves transfers where the sender is a particular address 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c. For this subscription query we use where keyword and in that we specify {Transfer: {Sender: {is: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"}}} to get the desired data. You can find the query here

subscription {
EVM(network: bsc) {
Transfers(
where: {Transfer: {Sender: {is: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"}}}
) {
Transfer {
Amount
AmountInUSD
Currency {
Name
SmartContract
Native
Symbol
Fungible
}
Receiver
Sender
}
Transaction {
Hash
}
}
}
}

Transactions From/To An Address with Transfer Details

Run Query

query MyQuery {
EVM(dataset: archive, network: bsc) {
Transfers(
where: {any: [{Transaction: {From: {is: "0x2b9dfb290ad7b54a5b86da25c3a629bfc7152167"}}}, {Transaction: {To: {is: "0x2b9dfb290ad7b54a5b86da25c3a629bfc7152167"}}}], Transfer: {}, Block: {Date: {since: "2025-08-10", till: "2025-08-29"}}}
limit: {count: 10000}
orderBy: {descending: Block_Time}
) {
Transfer {
Amount
AmountInUSD
Sender
Receiver
Currency {
Symbol
Name
}
Index
}
Transaction {
Hash
}
Block {
Number
Time
}
}
}
}

Subscribe to the latest NFT token transfers on BSC

Let's see an example of NFT token transfers using GraphQL Subscription (Webhook). In the following NFT Token Transfers API, we will be subscribing to all NFT token transfers on BSC network. You can run the query here

subscription {
EVM(network: bsc) {
Transfers(
where: {
Transfer: {
Currency: {
Fungible: false
}
}
}
) {
Block {
Hash
Number
}
Transfer {
Amount
Currency {
Name
SmartContract
Symbol
Native
}
Sender
Receiver
}
}
}
}


Deterministic Pagination for Backfilling Transfers

When backfilling BSC transfer data or building a historical index, use deterministic pagination to guarantee no records are missed or duplicated.

Try it live: Deterministic Transfer API

{
EVM(dataset: combined, network: bsc) {
Transfers(
where: { Transfer: { Success: true } }
orderBy: {
ascending: [
Block_Number,
Transaction_Index,
Call_Index,
Log_Index,
Transfer_Index,
Transfer_Type
]
}
limit: { count: 10, offset: 0 }
) {
Block {
Time
Number
}
Transaction {
Hash
From
Index
}
Transfer {
Amount
AmountInUSD
Sender
Receiver
Index
Currency {
Symbol
Name
SmartContract
Decimals
Native
}
}
Call {
Index
}
Log {
LogAfterCallIndex
Index
}
Transfer {
Type
}
}
}
}

The composite orderBy across Block_Number, Transaction_Index, Call_Index, Log_Index, Transfer_Index, and Transfer_Type uniquely positions every transfer, making offset-based pagination safe for backfilling. Increment offset by the count value on each request. You can pull up to 25,000 records in a single request by setting count: 25000.

Why does my wallet inflow/outflow query miss some transactions on BSC?

Bitquery indexes all transactions from the blockchain. If you're missing inflow/outflow records in your query, first verify you're using the correct dataset—either realtime or combined—based on your needs. If your query still appears to miss transactions, please report the issue to the Bitquery team via Telegram.