> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Lighthouse Market Overview

> Compare Solana DEXes, launchpads, and market families with rolling transaction, wallet, volume, token creation, and migration stats.

Lighthouse gives you a quick read on what is happening across Solana markets. One request returns rolling stats for venues, market families, and discovered launchpads across `5m`, `1h`, `6h`, and `24h` windows.

Use it to build:

* Market overview dashboards
* DEX and launchpad leaderboards
* “What is moving right now?” discovery pages
* Volume and transaction trend cards
* Pump.fun, Raydium, Meteora, and other venue comparisons

## Fetch market stats

```bash theme={null}
curl "https://data.solanatracker.io/lighthouse" \
  -H "x-api-key: YOUR_API_KEY"
```

The response is an array of market entries:

```json theme={null}
{
  "market": "pumpfun",
  "label": "Pump.fun",
  "icon": "https://...",
  "url": "https://pump.fun",
  "stats": {
    "5m": {
      "transactions": {
        "total": 120,
        "buys": 72,
        "sells": 48,
        "changePct": 18.4
      },
      "wallets": {
        "total": 96,
        "changePct": 11.2
      },
      "volume": {
        "total": 185000,
        "buys": 112000,
        "sells": 73000,
        "changePct": 24.7
      },
      "tokensCreated": {
        "total": 34,
        "changePct": 8.1
      },
      "migrations": {
        "total": 5,
        "changePct": 25
      }
    }
  }
}
```

Every market includes the same four windows:

```text theme={null}
5m   1h   6h   24h
```

`changePct` compares the current window with the previous window of the same length. For example, the `1h` change compares the latest hour with the hour immediately before it.

## Build a market leaderboard

Sort markets by a metric such as recent volume:

```javascript theme={null}
const response = await fetch(
  "https://data.solanatracker.io/lighthouse",
  {
    headers: {
      "x-api-key": process.env.SOLANA_TRACKER_API_KEY,
    },
  }
);

const markets = await response.json();

const byRecentVolume = markets
  .filter((market) => market.stats?.["1h"])
  .sort(
    (a, b) =>
      b.stats["1h"].volume.total - a.stats["1h"].volume.total
  );

for (const market of byRecentVolume.slice(0, 10)) {
  const stats = market.stats["1h"];
  console.log(
    `${market.label}: $${stats.volume.total.toLocaleString()} ` +
    `(${stats.volume.changePct >= 0 ? "+" : ""}${stats.volume.changePct}%)`
  );
}
```

## Create a market overview card

Use the `all` market for a site-wide summary, then compare individual markets:

```javascript theme={null}
const all = markets.find((market) => market.market === "all");
const pumpfun = markets.find((market) => market.market === "pumpfun");

function overview(market) {
  const stats = market?.stats?.["5m"];
  if (!stats) return null;

  return {
    label: market.label,
    volumeUsd: stats.volume.total,
    transactions: stats.transactions.total,
    wallets: stats.wallets.total,
    tokensCreated: stats.tokensCreated.total,
    migrations: stats.migrations.total,
    volumeChangePct: stats.volume.changePct,
  };
}

console.log(overview(all));
console.log(overview(pumpfun));
```

## Understand market IDs

The `market` field is a stable identifier you can use for links, filters, and UI state. Lighthouse can include:

| Market ID            | Meaning                                      |
| -------------------- | -------------------------------------------- |
| `all`                | All indexed markets                          |
| `pumpfun`            | Pump.fun activity                            |
| `raydium-all`        | Raydium family rollup                        |
| `meteora-curve:bags` | A discovered launchpad under a market family |

Each entry also includes:

* `label` — display name
* `icon` — branding URL when available
* `url` — project or venue URL when available
* `parent` — parent market for a launchpad child

Treat `icon` and `url` as optional presentation data; they may be empty when branding is unavailable.

## Handle zero-activity windows

Markets can have zero activity in a window. The API returns zero-valued metrics and a `changePct` of `0` when there is no previous activity to compare:

```javascript theme={null}
const volume = market.stats["5m"].volume;

if (volume.total === 0) {
  console.log(`${market.label} is quiet right now`);
} else {
  console.log(`${market.label} has $${volume.total} in recent volume`);
}
```

<CardGroup cols={2}>
  <Card title="Lighthouse API reference" href="/data-api/lighthouse" icon="gauge-high" iconType="duotone">
    Browse the endpoint, response schema, time windows, and market fields.
  </Card>

  <Card title="Token Discovery" href="/guides/token-discovery" icon="wand-magic-sparkles" iconType="duotone">
    Move from market-level signals to token-level research.
  </Card>

  <Card title="Pump.fun overview" href="/guides/pumpfun" icon="fire" iconType="duotone">
    Track Pump.fun launches, curves, graduations, and swaps.
  </Card>

  <Card title="Whale & KOL tracking" href="/guides/whale-kol" icon="whale" iconType="duotone">
    Follow the wallets driving high-value activity.
  </Card>
</CardGroup>
