Build a Solana Token Screener with Search Filters
Filter Solana tokens by liquidity, volume, curve percentage, risk, holders and market with the Search API.
Token screening is a filtered query problem
A token screener is a filtered query, searchTokens() on the Solana Data API accepts 60+ parameters (market, liquidity, volume, curve %, holder distribution, risk score) and returns matching tokens in one call.
What you need
- A Solana Tracker API key (free) and Datastream key (Premium+, same dashboard)
- Node.js 18+
Step 1: Near-graduation Pump.fun tokens
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: process.env.ST_API_KEY, baseUrl: 'https://data.solanatracker.io' });
const rows = await client.searchTokens({
market: 'pumpfun',
minCurvePercentage: 85,
maxCurvePercentage: 99,
minLiquidity: 5000,
sortBy: 'curvePercentage',
sortOrder: 'desc',
limit: 20,
});
for (const t of rows.data) {
console.log(t.symbol, t.curvePercentage + '%', '$' + Math.round(t.liquidityUsd));
}
Step 2: Safer high-volume tokens
const safer = await client.searchTokens({
minLiquidity: 50000,
minHolders: 500,
maxSnipers: 10,
maxTop10: 30,
minVolume_24h: 100000,
sortBy: 'volume_24h',
sortOrder: 'desc',
limit: 10,
});
Step 3: Full token objects
Pass format: 'full' when you need pools, risk, and txn stats in one response (max 100 rows):
const full = await client.searchTokens({
query: 'BONK',
format: 'full',
limit: 5,
});
Step 4: Paginate with cursor
let cursor: string | undefined;
do {
const page = await client.searchTokens({ market: 'pumpfun', limit: 50, cursor });
// process page.data
cursor = page.hasMore ? page.nextCursor : undefined;
} while (cursor);
Pitfall: stacking too many tight filters on new launches often returns zero rows. Relax
minHoldersorminLiquidityfirst, then tighten in your app layer.
FAQ
Can I search by mint address?
Yes, pass the full base58 mint as query; valid pubkeys match exactly.
How is this different from /tokens/latest?
Latest returns chronological new mints. Search is for filtered discovery across the indexed universe.
Does Memescope use the same data?
Memescope is built on the same index plus Datastream updates.
Related: Rug risk API -> · Solana Data API
Download the example
Clone the full runnable project on GitHub, npm install && npm start with your keys in .env. Or open it in StackBlitz to run in your browser (free). See the tutorial for step-by-step context.
Runnable Node.js project — clone from GitHub, add keys to .env, then npm start. StackBlitz runs REST and Datastream examples in your browser for free.