UNPKG

coingecko-tokens

Version:

Aggregated list of Token Lists from CoinGecko

53 lines (45 loc) 1.5 kB
export const COINGECKO_API = 'https://api.coingecko.com/api/v3/coins/markets'; // https://docs.coingecko.com/reference/coins-markets export interface CoinGeckoMarket { id?: string; symbol?: string; name?: string; current_price?: number; market_cap?: number; market_cap_rank?: number; total_volume?: number; high_24h?: number; low_24h?: number; } // Get list of top 1000 market cap tokens symbol from CoinGecko export async function getTopTokens(): Promise<{ topTokens: CoinGeckoMarket[]; topTokenSet: Set<string> }> { const params: string[] = []; for (let i = 1; i < 5; ++i) { params.push( new URLSearchParams({ vs_currency: 'usd', order: 'market_cap_desc', per_page: String(250), page: String(i), }).toString(), ); } const topTokens = ( await Promise.all( params.map(async (param) => { const resp = await fetch(`${COINGECKO_API}?${param}`, { method: 'GET', signal: AbortSignal.timeout(60 * 1000), }); if (!resp.ok) { throw new Error(resp.statusText); } return resp.json() as Promise<CoinGeckoMarket[]>; }), ) ).flat(); return { topTokens, topTokenSet: new Set(topTokens.map((l) => l.symbol?.toLowerCase() || '').flat()), }; }