Solana Tracker LogoSolana Tracker
Swap
Developers
⌘K
Affiliate
All Resources
Compare Solana Market Activity with Lighthouse API
Data APITypeScriptSeptember 20, 20263 min readSolana Tracker

Compare Solana Market Activity with Lighthouse API

Build a Solana market overview with Lighthouse. Compare volume, wallets, launches, and migrations without double-counting market-family rollups.

  • data-api,
  • lighthouse,
  • analytics

Lighthouse returns market-wide activity across rolling windows, letting a dashboard answer where activity is concentrated before drilling into individual tokens. Use it for venue and launchpad comparisons, not as a token price or trade execution feed.

Run the Node.js example

Use Node.js 24 LTS and keep the API credentials on your server. Create an empty directory, then install:

npm init -y
npm install @solana-tracker/[email protected]
npm install --save-dev tsx typescript @types/node

Save the TypeScript block as index.mts. Put ST_API_KEY in an uncommitted .env file. Streaming examples also need ST_DATASTREAM_URL, the full private WebSocket URL from your Data API dashboard. REST and streaming access depend on your plan.

node --env-file=.env --import tsx index.mts
import { Client } from '@solana-tracker/data-api';
const apiKey = process.env.ST_API_KEY;
if (!apiKey) throw new Error('Set ST_API_KEY');
const client = new Client({ apiKey });
const mint = process.env.TOKEN_MINT ?? 'So11111111111111111111111111111111111111112';
const markets = await client.getLighthouse();
const overall = markets.find((market) => market.market === 'all');
console.log('Overall 1h:', overall?.stats['1h']);
const ranked = markets.filter((market) => market.market !== 'all')
  .sort((a, b) => b.stats['1h'].volume.total - a.stats['1h'].volume.total);
for (const market of ranked.slice(0, 10)) {
  const stats = market.stats['1h'];
  console.log(market.market, market.label, stats.volume.total, stats.volume.changePct);
}

The output is a comparison list. It is deliberately not summed into a grand total because rows can overlap through market-family rollups.

Compare equal windows

Each market contains 5m, 1h, 6h, and 24h statistics. changePct compares a window with the immediately preceding window of the same duration. A one-hour change is not a change since midnight or a price return.

Display window labels beside metrics. Switching the view from 5m to 24h must switch both the value and its comparison; keeping the old percentage produces a misleading card.

Use the all row for the overall summary

Market IDs can represent an individual venue, a family such as raydium-all, or a child launchpad. Use market as the stable key and label for display. Keep parent relationships so the UI can distinguish a family rollup from a member.

Do not add every returned row to derive total volume or total wallets. Parent/child coverage can overlap, and a wallet can be active on several markets. Use the provided all row for the indexed overall view.

Read transactions, wallets, and launches separately

More transactions can come from more wallets, more activity per wallet, or automated behavior. Compare absolute volume, active-wallet count, and transaction count before interpreting a percentage change.

Tokens created and migrations measure different lifecycle activity. Dividing migrations in a window by tokens created in that same window does not produce a cohort graduation rate: the migrated tokens may have launched earlier.

Handle quiet periods and refreshes

A zero-activity window has zero-valued metrics. When there is no previous activity, the documented change value is zero; it does not necessarily mean a meaningful flat comparison. Show absolute values and avoid dramatic growth labels from tiny baselines.

Cache the shared overview on your backend. Retain the previous successful response during refresh and show its observation time. Treat empty icons and URLs as missing presentation data, not a reason to discard the market.

From a selected market, link to a token screener. That preserves the distinction between market-level discovery and token-level research.

FAQ

Can I sum every market row?

No. Family and child rows can overlap. Use the all row for an overall summary.

Is volume change the same as price change?

No. It compares traded volume in adjacent windows.

Can I calculate graduation success from one window?

Not directly. A cohort metric must follow the same launched tokens over time.

References

  • Lighthouse reference

Related Guides

Solana Wallet PnL History in USD, SOL, and EUR
Data API

Solana Wallet PnL History in USD, SOL, and EUR

Read more
Track Solana Liquidity Adds and Removes with SDK 0.5
Data API

Track Solana Liquidity Adds and Removes with SDK 0.5

Read more
Track Jupiter DCA Orders with REST and WebSocket
Data API

Track Jupiter DCA Orders with REST and WebSocket

Read more

Products

  • Data API
  • Pump.fun API
  • Solana RPC
  • Dedicated Nodes
  • Yellowstone gRPC
  • Raptor Swap API
  • Enterprise

Trading

  • Swap
  • Latest Tokens
  • Trending
  • Top Gainers
  • Memescope
  • Whale Watch
  • KOL Tracker

Tools

  • Wallet Tracker
  • Rugcheck
  • PnL Leaderboard
  • KOLScan
  • Axiom Leaderboard
  • Photon Leaderboard
  • Bloom Leaderboard
  • FOMO Leaderboard
  • GMGN Leaderboard
  • Pump.fun App Leaderboard
  • Terminal Leaderboard
  • Platform Compare
  • My Positions
  • Teams

Resources

  • Developer Guides
  • Blog
  • Documentation
  • API Reference
  • Status
  • Affiliate Program — 25% recurring, uncapped
Solana TrackerSolana Tracker© 2026
Terms of ServicePrivacy PolicyContact