Skip to Content
Yodao 2.0 soon ... πŸš€
Yodao Pump.fun API

Yodao Pump.fun API

Real-time, structured, machine-ready data for building trading bots, scanners and automated strategies on top of the Pump.fun ecosystem.

Instead of parsing RPC logs or parsing Meme feed of Axiom you get a clean data layer with:

  • live new-token streams
  • token metrics & early buyer data
  • migration progress
  • real-time trades

This removes all manual monitoring and turns the Pump Fun flow into something machines can act on β€” every 1–2 seconds, without noise or delays.

If you trade or build on Pump Fun, this API is the fastest way to go from attention β†’ edge β†’ execution.


Use Cases

πŸš€ Instantly Identify Potential Runners from Newly Created Tokens on Pump.Fun

Use Case A: Fetch the newest tokens every 2 seconds with real-time early token metrics.

POST /api/v2/meme

Use Case B: Fetch Potential Runners.

POST /api/v2/meme

Use Case C: Fetch New Tokens from Proven/Migrated Creators.

POST /api/v2/meme

View Request Structure

typescript
type RangeFilter = {
min?: number
max?: number
}

type SocialsFilter = {
twitter?: boolean
telegram?: boolean
website?: boolean
discord?: boolean
atLeastOne?: boolean
}

type FiltersDto = {
xReuses?: RangeFilter
ageMinutes?: RangeFilter
mCapUsd?: RangeFilter
volumeUsd?: RangeFilter
txsBuys?: RangeFilter
txsSells?: RangeFilter
top10HoldingPct?: RangeFilter
devHoldingPct?: RangeFilter
snipersHoldingPct?: RangeFilter
insidersHoldingPct?: RangeFilter
bundlersHoldingPct?: RangeFilter
freshWalletsHoldingPct?: RangeFilter
holders?: RangeFilter
proTradersAmount?: RangeFilter
devMigrations?: RangeFilter
devCreations?: RangeFilter
devSoldAll?: boolean
noXReuses?: boolean
dexPaid?: boolean
caEndsWithPump?: boolean
socials?: SocialsFilter
}

type FiltersMemeDto = {
type?: 'new' | 'completing' | 'graduated' | 'all'
newPools?: FiltersDto
completing?: FiltersDto
graduated?: FiltersDto
}

View Response Structure

typescript
type MemeTablePoolDto = {
name: string
symbol: string
timestamp: string
mint: string
creator: string
pool: string
description?: string
image?: string
discord?: string
website?: string
telegram?: string
video?: string
twitter?: string
holders: number
top_10_percent: number
market_cap: number
pct_completion: number
liqudity: number
tx_24h: number
tx_24h_buy: number
tx_24h_sell: number
vol_24h: number
vol_24_buy: number
vol_24_sell: number
fresh_wallets_holding: number
insiders_holding: number
bundle_holding: number
snipers_holding: number
creator_holding: number
pro_traders_holding: number
creator_completed_pools: number
creator_completing_pools: number
}

type MemeTablesResponseDto = {
new?: MemeTablePoolDto[]
completing?: MemeTablePoolDto[]
graduated?: MemeTablePoolDto[]
}

View Code

javascript
async function fetchMemeTables(filters) {
const response = await fetch('https://api2.yodao.io/api/v2/meme', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(filters)
})

if (!response.ok) throw new Error(`Request failed: ${response.status}`)

return response.json()
}

// Example 1: Conservative Filter
fetchMemeTables({
type: 'new',
newPools: {
  holders: { min: 20 },
  volumeUsd: { min: 5000 },
  devHoldingPct: { max: 10 },
  bundlersHoldingPct: { max: 10 },
  freshWalletsHoldingPct: { max: 10 },
  snipersHoldingPct: { max: 10 }
}
})
.then(console.log)
.catch(console.error)

// Example 2: Experienced Creator Filter
fetchMemeTables({
type: 'new',
newPools: {
  holders: { min: 20 },
  volumeUsd: { min: 5000 },
  devMigrations: { min: 1 }
}
})
.then(console.log)
.catch(console.error)

🎯 Predict and Track Migrations to Pump Fun AMM

Use Case A: Fetch all β€œCompleting” tokens younger than 60 minutes every 2 seconds.

POST /api/v2/meme

Use Case B: Subscribe to live migration events via WebSocket.

wss://api2.yodao.io

View Subscription Message

json
{
"event": "mint_migration",
"data": {
  "action": "subscribe",
  "id": "USER ID"
}
}

View Example Response

json
{
"channel": "mint_migration",
"data": {
  "signature": "4r9cEa34WaGyTCk9RybwyVEHVZqZDP3yoeRFfPwZiQeKnei5gvPe41zBDD8zvsaioEmVDAZLywYp2osa5wmMb6bF",
  "timestamp": "2025-11-18 03: 01: 05",
  "bonding_curve": "CY6WgqVnYsZGbdTUJ41KDdw5VQkyNbRX7BfjBDrbaxzP",
  "mint": "BkCyCNvtbT2nRceACzvrQMC7hSwV1QDdXNQ5XDqwpump",
  "pool_amm": "2VTdi7zqY7AXjcd4sjCqqSCHT6CKt8yDdrA2nqFMKnxv"
}
}

View Code

javascript
const userId = 'your-wallet-or-unique-id'
const wsUrl = new URL('wss://api2.yodao.io')
wsUrl.searchParams.set('id', userId)
const ws = new WebSocket(wsUrl.toString())

// Open websocket connection
ws.addEventListener('open', () => {
console.log('βœ“ Connected to WebSocket')

// Subscribe to mint_migration channel
ws.send(JSON.stringify({
  event: 'mint_migration',
  data: {
    action: 'subscribe',
    id: userId
  }
}))
})

// Handle incoming messages
ws.addEventListener('message', (event) => {
const message = JSON.parse(event.data)

// Handle ping/pong
if (message.type === 'ping') {
  ws.send(JSON.stringify({ type: 'pong' }))
  return
}

// Handle migration events
if (message.channel === 'mint_migration') {
  const migration = message.data

  console.log('Token migrated:', {
    mint: migration.mint,
    timestamp: migration.timestamp,
    pool_amm: migration.pool_amm
  })

  // Your logic here
}
})

ws.addEventListener('error', (error) => {
console.error('WebSocket error:', error)
})

ws.addEventListener('close', () => {
console.log('WebSocket disconnected')
})

// Cleanup on page unload
window.addEventListener('beforeunload', () => ws.close())

πŸ“Š Check Pro-Level Data About Any Pump.Fun Token

Use Case: Fetch all critical indicators for decision-making in one request.

GET /api/v2/search/tokens/:mint/market-data

View Response Structure

typescript
type TokenMarketData = {
pool: string
name: string
symbol: string
creator: string
timestamp: string
mint: string
image: string | null
video: string | null
twitter: string | null
website: string | null
discord: string | null
telegram: string | null
description: string | null
pct_completion: number
market_cap: number
liquidity: number
token_price_sol: number
token_price_usd: number
tx_24h: number
tx_24h_buy: number
tx_24h_sell: number
vol_24h: number
vol_24_buy: number
vol_24_sell: number
holders: number
top_10_percent: number
creator_holding_pct: number
bundle_holding: number
insiders_holding: number
snipers_holding: number
pro_traders: number
fresh_wallet_holding: number
}

View Code

javascript
async function getMarketData(mint) {
const url = new URL(`https://api2.yodao.io/api/v2/search/tokens/${mint}/market-data`)

const response = await fetch(url)
if (!response.ok) throw new Error(`Request failed: ${response.status}`)

return response.json()
}

// Single token
getMarketData('7dGQq8Lk9Vw3bjJpGP3Qt9o4ZvBqN2MmqNTUuJJ3M5bX')
.then(console.log)
.catch(console.error)

// Multiple tokens
async function getMultipleMarketData(mints) {
const url = new URL('https://api2.yodao.io/api/v2/search/tokens/placeholder/market-data')
url.searchParams.set('mints', mints.join(','))

const response = await fetch(url)
if (!response.ok) throw new Error(`Request failed: ${response.status}`)

return response.json()
}

getMultipleMarketData([
'7dGQq8Lk9Vw3bjJpGP3Qt9o4ZvBqN2MmqNTUuJJ3M5bX',
'GqLhiiuAioeeAhqoUfDCB3aCWAfA4T73DKfTVUVbpump'
])
.then(console.log)
.catch(console.error)

πŸ“Œ Detect Entry Points for a Specific Pump Token

Use Case A: Fetch a fresh price/volume chart every 2 seconds.

GET /api/v2/meme/chart/ohlcv

View Response

json
{
"t": [1704067200, 1704067500, 1704067800, 1704068100, 1704068400],
"o": [0.0000123, 0.0000125, 0.0000124, 0.0000126, 0.0000125],
"h": [0.0000128, 0.0000129, 0.0000127, 0.0000130, 0.0000128],
"l": [0.0000121, 0.0000123, 0.0000122, 0.0000124, 0.0000123],
"c": [0.0000125, 0.0000124, 0.0000126, 0.0000125, 0.0000127],
"v": [15000, 12500, 18000, 14200, 16800],
"o_sol": [0.000245, 0.000248, 0.000247, 0.000250, 0.000248],
"h_sol": [0.000252, 0.000253, 0.000251, 0.000254, 0.000252],
"l_sol": [0.000241, 0.000245, 0.000244, 0.000246, 0.000245],
"c_sol": [0.000248, 0.000247, 0.000249, 0.000248, 0.000250],
"v_sol": [300, 250, 360, 284, 336]
}

Use Case B: Subscribe to all trades for a token in real time.

wss://api2.yodao.io

View Subscription Message

json
{
"event": "update_mint_info",
"data": {
  "action": "subscribe",
  "id": "USER ID",
  "mint": "9pgKQ4tG88y6XbUUZUnMpUjdRakDUvmdGwMLAvqNxwpH"
}
}

View Response

json
{
"channel": "update_mint_info",
"pool": "6CuawiapYCcD3hyuHL73QseLGyPaKFQGymMsAVVUuPUw",
"data": {
  "slot": 380818976,
  "tx_index": 1131,
  "signature": "hGbsbzzqpNTs3Vx1va7Yb8ukuBaUbMFcRQWgoiRUBWhdK9GA1amTr4dRjsv1YzDvUSnUK6ZsG6w7eKDR6efrAUw",
  "source": "pump",
  "timestamp": "2025-11-18 04: 26: 04",
  "signer": "75KApSebYNvBk8cRfQkYCT3wXyN6gZJ5WcnsGpLdTvLn",
  "mint": "9pgKQ4tG88y6XbUUZUnMpUjdRakDUvmdGwMLAvqNxwpH",
  "pool": "6CuawiapYCcD3hyuHL73QseLGyPaKFQGymMsAVVUuPUw",
  "direction": "buy",
  "base_mint_amount": 1000000,
  "quote_mint_amount": 50000,
  "base_mint_price_usd": 0.0000123,
  "sol_price_usd": 185.50,
  "volume_usd": 12.30,
  "m_cap_usd": 45000.75,
  "bonding_curve_progress": 0.35,
  "liquidity_usd": 8500.20,
  "chain_fee": 5000,
  "pump_fee": 12300,
  "creator_fee": 0,
  "base_balance_before": 5000000,
  "base_balance_after": 6000000,
  "fresh_wallet": false,
  "sniper_wallet": false,
  "pro_trader": true
}
}

View Code

javascript
// Use Case A: Fetch OHLCV chart data
async function fetchOHLCV(mint, from, to, resolution = '5') {
const url = new URL('https://api2.yodao.io/api/v2/meme/chart/ohlcv')
url.searchParams.set('mint', mint)
url.searchParams.set('from', from)
url.searchParams.set('to', to)
url.searchParams.set('resolution', resolution)

const response = await fetch(url)
if (!response.ok) throw new Error(`HTTP ${response.status}`)

return response.json()
}

// Get last 24 hours of 5-minute candles
const now = Math.floor(Date.now() / 1000)
const yesterday = now - 86400

const ohlcv = await fetchOHLCV(
'GqLhiiuAioeeAhqoUfDCB3aCWAfA4T73DKfTVUVbpump',
yesterday,
now,
'5'
)

// Convert to chart format
const candles = ohlcv.t.map((timestamp, i) => ({
time: timestamp,
open: ohlcv.o[i],
high: ohlcv.h[i],
low: ohlcv.l[i],
close: ohlcv.c[i],
volume: ohlcv.v[i]
}))

console.log(`Loaded ${candles.length} candles`)

// Use Case B: Subscribe to token trades via WebSocket
const userId = 'your-wallet-or-unique-id'
const mint = '9pgKQ4tG88y6XbUUZUnMpUjdRakDUvmdGwMLAvqNxwpH'
const wsUrl = new URL('wss://api2.yodao.io')
wsUrl.searchParams.set('id', userId)
const ws = new WebSocket(wsUrl.toString())

ws.addEventListener('open', () => {
console.log('βœ“ Connected to WebSocket')

// Subscribe to specific token updates
ws.send(JSON.stringify({
  event: 'update_mint_info',
  data: {
    action: 'subscribe',
    id: userId,
    mint
  }
}))
})

ws.addEventListener('message', (event) => {
const message = JSON.parse(event.data)

// Handle ping/pong
if (message.type === 'ping') {
  ws.send(JSON.stringify({ type: 'pong' }))
  return
}

// Handle trade updates
if (message.channel === 'update_mint_info') {
  const trade = message.data
  console.log('New trade:', {
    direction: trade.direction,
    price_usd: trade.base_mint_price_usd,
    volume_usd: trade.volume_usd,
    timestamp: trade.timestamp
  })

  // Your trading logic here
}
})

ws.addEventListener('error', (error) => {
console.error('WebSocket error:', error)
})

ws.addEventListener('close', () => {
console.log('WebSocket disconnected')
})

// Cleanup on page unload
window.addEventListener('beforeunload', () => ws.close())

πŸ€– Build Degen Agents for Pump.Fun

Combine real-time feeds, migrations, trades and pro metrics to build targeted automation with real edge.

A) Auto-Copytrader

Track the best-performing wallets (last 24 hours) and automatically copytrade their trades within seconds.

B) Creators Scout

Automatically enter tokens created by wallets with the highest 7-D creation β†’ migration success ratio.

C) Dip-Catcher

Listen tokens in β€œCompleting” state and automatically flag/preset entries when price dips 60–80% and migration progress remains high.

D) LowCap Buyer

Enter within first 3–10 buyers for low market cap tokens that show strong velocity and clean liquidity.

Auto-copytraders, creator-based auto-buyers, dip-catchers, first-buyer snipers, momentum-shift detectors β€” everything your edge needs can be automated using real-time data from the Yodao Pump.fun API.

If you need support designing your system β€” contact @yodao_supportΒ .

Last updated on