Skip to main content

BSC Transfers API

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

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

Transfers in Bitquery model token movements (BEP-20, etc.) and related rows—not every balance change or DEX leg you see in a block explorer. Native BNB moves, internal transfers, wrapped flows, or activity only visible under Calls / DEXTrades may be absent if you only query Transfers with narrow Sender/Receiver filters. Use the right primitive for the movement type (mental model), set dataset: combined or archive for history, and widen time bounds. If a specific hash is missing across primitives, contact support.

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.