Skip to main content

LetsBonk.fun API

In this document, we will explore several examples related to LetsBonk.fun. You can also check out our Pump Fun API Docs and FourMeme API Docs.

note

LetsBonk.fun tokens are created and traded on Raydium Launchlab.

Need zero-latency LetsBonk.fun data? Read about our Shred Streams and Contact us for a Trial.

note

To query or stream data via graphQL outside the Bitquery IDE, you need to generate an API access token.

Follow the steps here to create one: How to generate Bitquery API token ➤

If you want fastest data without any latency, we can provide Kafka streams, please fill this form for it. Our Team will reach out.

Track LetsBonk.fun Token Creation

Using this query, we can get the most recently created LetsBonk.fun tokens.

Click to expand GraphQL query
{
Solana {
InstructionBalanceUpdates(
where: {
BalanceUpdate: { Currency: { MintAddress: { endsWith: "bonk" } } }
Instruction: {
Program: {
Address: { is: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj" }
Method: { is: "initialize" }
}
}
Transaction: { Result: { Success: true } }
}
orderBy: { descending: Block_Time }
) {
BalanceUpdate {
Currency {
MintAddress
Name
Symbol
Decimals
UpdateAuthority
Uri
VerifiedCollection
Wrapped
ProgramAddress
}
PostBalance
}
Block {
Time
}
Transaction {
Signature
Signer
}
}
}
}

Bonding Curve Progress API for LetsBonk.fun token

Below query will give you amount of left tokens put it in the below given simplied formulae and you will get Bonding Curve progress for the token.

Bonding Curve Progress Formula

  • Formula: BondingCurveProgress = 100 - ((leftTokens * 100) / initialRealTokenReserves)

Where:

  • leftTokens = realTokenReserves - reservedTokens

  • initialRealTokenReserves = totalSupply - reservedTokens

  • Definitions:

    • initialRealTokenReserves = totalSupply - reservedTokens
      • totalSupply: 1,000,000,000 (LetsBonk.fun Token)
      • reservedTokens: 206,900,000
      • Therefore, initialRealTokenReserves: 793,100,000
    • leftTokens = realTokenReserves - reservedTokens
      • realTokenReserves: Token balance at the market address.
note

Simplified Formula: BondingCurveProgress = 100 - (((balance - 206900000) * 100) / 793100000)

Additional Notes

  • Balance Retrieval:
    • The balance is the token balance at the market address.
    • Use this query to fetch the balance: Query Link.
Click to expand GraphQL query
query GetLatestLiquidityForPool {
Solana {
DEXPools(
where: {
Pool: {
Market: {
BaseCurrency: { MintAddress: { is: "token Mint Address" } }
}
Dex: {
ProgramAddress: {
is: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"
}
}
}
}
orderBy: { descending: Block_Slot }
limit: { count: 1 }
) {
Pool {
Market {
MarketAddress
BaseCurrency {
MintAddress
Symbol
Name
}
QuoteCurrency {
MintAddress
Symbol
Name
}
}
Dex {
ProtocolFamily
ProtocolName
}
Quote {
PostAmount
PriceInUSD
PostAmountInUSD
}
Base {
PostAmount
}
}
}
}
}

Track LetsBonk.fun Tokens above 95% Bonding Curve Progress in realtime

We can use above Bonding Curve formulae and get the Balance of the Pool needed to get to 95% and 100% Bonding Curve Progress range. And then track liquidity changes which result in Base{PostAmount} to fall in this range. You can run and test the saved query here.

Click to expand GraphQL query
subscription MyQuery {
Solana {
DEXPools(
where: {
Pool: {
Base: { PostAmount: { gt: "206900000", lt: "246555000" } }
Dex: {
ProgramAddress: {
is: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"
}
}
Market: {
QuoteCurrency: {
MintAddress: {
in: [
"11111111111111111111111111111111"
"So11111111111111111111111111111111111111112"
]
}
}
}
}
Transaction: { Result: { Success: true } }
}
) {
Pool {
Market {
BaseCurrency {
MintAddress
Name
Symbol
}
MarketAddress
QuoteCurrency {
MintAddress
Name
Symbol
}
}
Dex {
ProtocolName
ProtocolFamily
}
Base {
PostAmount
}
Quote {
PostAmount
PriceInUSD
PostAmountInUSD
}
}
}
}
}

Top 100 About to Graduate LetsBonk.fun Tokens

We can use below query to get top 100 About to Graduate LetsBonk.fun Tokens. You can run and test the saved query here.

Click to expand GraphQL query
{
Solana {
DEXPools(
limitBy: { by: Pool_Market_BaseCurrency_MintAddress, count: 1 }
limit: { count: 100 }
orderBy: { ascending: Pool_Base_PostAmount }
where: {
Pool: {
Base: { PostAmount: { gt: "206900000" } }
Dex: {
ProgramAddress: {
is: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"
}
}
Market: {
QuoteCurrency: {
MintAddress: {
in: [
"11111111111111111111111111111111"
"So11111111111111111111111111111111111111112"
]
}
}
}
}
Transaction: { Result: { Success: true } }
Block: { Time: { since: "2025-07-11T13:45:00Z" } }
}
) {
Pool {
Market {
BaseCurrency {
MintAddress
Name
Symbol
}
MarketAddress
QuoteCurrency {
MintAddress
Name
Symbol
}
}
Dex {
ProtocolName
ProtocolFamily
}
Base {
PostAmount(maximum: Block_Time)
}
Quote {
PostAmount
PriceInUSD
PostAmountInUSD
}
}
}
}
}

Get all the instructions of Raydium LaunchLab

Below query will get you all the instructions that the Raydium LaunchLab Program has. You can test the API here.

Click to expand GraphQL query
query MyQuery {
Solana {
Instructions(
where: {Instruction: {Program: {Address: {is: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"}}}}
) {
Instruction {
Program {
Method
}
}
count
}
}
}

Track LetsBonk.fun Token Migrations to Raydium DEX and Raydium CPMM in Realtime

Using above get all instructions api, you will figure out that there are 2 instructions migrate_to_amm, migrate_to_cpswap whose invocations migrate the Raydium LaunchLab Token to Raydium V4 AMM and Raydium CPMM Dexs respectively.

Thats why we have filtered for these 2 instructions in the below API, and tracking these.

Test out the API here.

Click to expand GraphQL query
subscription MyQuery {
Solana {
Instructions(
where: {Instruction: {Program: {Address: {is: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"}, Method: {in: ["migrate_to_amm","migrate_to_cpswap"]}}}, Transaction: {Result: {Success: true}}}
) {
Block{
Time
}
Instruction {
Program {
Method
AccountNames
Address
Arguments {
Value {
... on Solana_ABI_Json_Value_Arg {
json
}
... on Solana_ABI_Float_Value_Arg {
float
}
... on Solana_ABI_Boolean_Value_Arg {
bool
}
... on Solana_ABI_Bytes_Value_Arg {
hex
}
... on Solana_ABI_BigInt_Value_Arg {
bigInteger
}
... on Solana_ABI_Address_Value_Arg {
address
}
... on Solana_ABI_Integer_Value_Arg {
integer
}
... on Solana_ABI_String_Value_Arg {
string
}
}
Type
Name
}
Name
}
Accounts {
Address
IsWritable
Token {
ProgramId
Owner
Mint
}
}
}
Transaction {
Signature
Signer
}
}
}
}

Latest Trades of a LetsBonk.fun token on Launchpad

This query fetches the most recent trades of a LetsBonk.fun Token token Mint Address on the Raydium Launchpad. You can run the query here

Click to expand GraphQL query
query LatestTrades {
Solana {
DEXTradeByTokens(
orderBy: { descending: Block_Time }
limit: { count: 50 }
where: {
Trade: {
Dex: { ProtocolName: { is: "raydium_launchpad" } }
Currency: { MintAddress: { is: "token Mint Address" } }
}
}
) {
Block {
Time
}
Transaction {
Signature
}
Trade {
Market {
MarketAddress
}
Dex {
ProtocolName
ProtocolFamily
}
AmountInUSD
PriceInUSD
Amount
Currency {
Name
}
Side {
Type
Currency {
Symbol
MintAddress
Name
}
AmountInUSD
Amount
}
}
}
}
}

Similarly, you can subscribe to trades on launchpad in real-time using subscription query. The same can be tracked using Bitquery Kafka Streams

Latest Price of a LetsBonk.fun Token on Raydium Lanchlab

This query provides the most recent price data for a specific LetsBonk.fun token token Mint Address launched on Raydium Launchpad. You can filter by the token’s MintAddress, and the query will return the last recorded trade price. You can run the query here

Click to expand GraphQL query
{
Solana {
DEXTradeByTokens(
orderBy: { descending: Block_Time }
limit: { count: 1 }
where: {
Trade: {
Dex: { ProtocolName: { is: "raydium_launchpad" } }
Currency: { MintAddress: { is: "token Mint Address" } }
}
}
) {
Block {
Time
}
Transaction {
Signature
}
Trade {
Market {
MarketAddress
}
Dex {
ProtocolName
ProtocolFamily
}
AmountInUSD
PriceInUSD
Amount
Currency {
Name
}
Side {
Type
Currency {
Symbol
MintAddress
Name
}
AmountInUSD
Amount
}
}
}
}
}

Top Buyers of a LetsBonk.fun Token on LaunchPad

This API endpoint returns the top 100 buyers for a token, which is token Mint Address in this case.

Click to expand GraphQL query
query MyQuery {
Solana {
DEXTradeByTokens(
where: {
Trade: {
Dex: { ProtocolName: { is: "raydium_launchpad" } }
Currency: { MintAddress: { is: "token Mint Address" } }
Side: { Type: { is: buy } }
}
}
orderBy: { descendingByField: "buy_volume" }
limit: { count: 100 }
) {
Trade {
Currency {
MintAddress
Name
Symbol
}
}
Transaction {
Signer
}
buy_volume: sum(of: Trade_Side_AmountInUSD)
}
}
}

Top Sellers of a Token on LaunchPad

Using this query top 100 sellers for the token with Mint Address as token Mint Address could be retrieved.

Click to expand GraphQL query
query MyQuery {
Solana {
DEXTradeByTokens(
where: {
Trade: {
Dex: { ProtocolName: { is: "raydium_launchpad" } }
Currency: { MintAddress: { is: "token Mint Address" } }
Side: { Type: { is: sell } }
}
}
orderBy: { descendingByField: "sell_volume" }
limit: { count: 100 }
) {
Trade {
Currency {
MintAddress
Name
Symbol
}
}
Transaction {
Signer
}
sell_volume: sum(of: Trade_Side_AmountInUSD)
}
}
}

OHLCV for specific LetsBonk.fun Token on Raydium Launchlab

This API end point returns the OHLCV vlaues for a LetsBonk.fun token with the currency mint address as token mint address when traded against WSOL.

Click to expand GraphQL query
query MyQuery {
Solana {
DEXTradeByTokens(
where: {
Trade: {
Dex: { ProtocolName: { is: "raydium_launchpad" } }
Currency: { MintAddress: { is: "token Mint Address" } }
Side: {
Currency: {
MintAddress: { is: "So11111111111111111111111111111111111111112" }
}
}
}
Transaction: { Result: { Success: true } }
}
limit: { count: 100 }
orderBy: { descendingByField: "Block_Timefield" }
) {
Block {
Timefield: Time(interval: { count: 1, in: minutes })
}
Trade {
open: Price(minimum: Block_Slot)
high: Price(maximum: Trade_Price)
low: Price(minimum: Trade_Price)
close: Price(maximum: Block_Slot)
}
volumeInUSD: sum(of: Trade_Side_AmountInUSD)
count
}
}
}

Get Pair Address for a LetsBonk.fun Token

This query returns the pair address for the LetsBonk.fun token with mint address as token Mint Address on the LaunchPad exchange. The liquidity pool address is denoted by MarketAddress.

Click to expand GraphQL query
query MyQuery {
Solana {
DEXTradeByTokens(
where: {
Trade: {
Dex: { ProtocolName: { is: "raydium_launchpad" } }
Currency: { MintAddress: { is: "token Mint Address" } }
}
}
) {
Trade {
Market {
MarketAddress
}
Currency {
Name
Symbol
MintAddress
}
Side {
Currency {
Name
Symbol
MintAddress
}
}
}
count
}
}
}

Get Liquidity for a LetsBonk.fun Token Pair Address

Using this query we can get the liquidity for a LaunchPad Token Pair, where Base_PostBalance is the amount of LaunchPad tokens present in the pool and Quote_PostBalance is the amount of WSOL present in the pool. For the purpose of filtering we are applying the condition that the MarketAddress is insert pool address.

Click to expand GraphQL query
{
Solana {
DEXPools(
where: {
Pool: { Market: { MarketAddress: { is: "token pool address" } } }
Transaction: { Result: { Success: true } }
}
orderBy: { descending: Block_Time }
limit: { count: 1 }
) {
Pool {
Base {
PostAmount
}
Quote {
PostAmount
}
Market {
BaseCurrency {
MintAddress
Name
Symbol
}
QuoteCurrency {
MintAddress
Name
Symbol
}
}
}
}
}
}

Video Tutorial | How to get Bonding Curve Progress of any LetsBonk.fun Token