Famspad

Connect your platform to Famspad in 5 minutes

One read-only HTTP API exposes every token launched on Famspad with live price, market cap, volume and status. No API key, no signup โ€” just fetch and go.

Base URLhttps://famspad.com/api/v1
๐Ÿ”“
No key, no authPublic & read-only. Start immediately.
๐ŸŒ
CORS openCall it straight from a browser.
โšก
Live dataIndexed from chain, cached ~15s.
๐Ÿ“ก
Real-timeLive trades over WebSocket / SSE.
๐Ÿ””
WebhooksGet pushed on new & graduated tokens.
1

Try it โ€” no code

Paste into a terminal. Every response is JSON.

# 1) list the 5 newest tokens already trading on Uniswap
curl "https://famspad.com/api/v1/tokens?status=listed&limit=5"

# 2) one token by contract address
curl https://famspad.com/api/v1/tokens/0xYourTokenAddress
Fields you'll use most: address (unique id), symbol, name, priceUsd, marketCapUsd, status (bonding=on curve, listed=on Uniswap), pairAddress, logoURI.
2

List every token on your platform

Fetch once, loop, add each token to your UI/database.

// Pull every Famspad token and add it to your platform.
const res = await fetch(`https://famspad.com/api/v1/tokens?limit=200`);
const { tokens } = await res.json();

tokens.forEach(t => {
  addToMyListing({
    address:    t.address,        // unique id (contract address)
    name:       t.name,
    symbol:     t.symbol,
    logo:       t.logoURI,
    priceUsd:   t.priceUsd,       // null until first trade is indexed
    marketCap:  t.marketCapUsd,
    status:     t.status,         // 'bonding' or 'listed'
    pair:       t.pairAddress,    // Uniswap V2 pair once listed
  });
});
3

Show a live price

Look up any single token by its contract address.

// Live price + market cap for a single token.
const ca = '0xd48A1Eed09696E389A3CC32E519224d6Bf4ffeEd';
const t  = await (await fetch(`https://famspad.com/api/v1/tokens/${ca}`)).json();

console.log(t.symbol, 'is $' + t.priceUsd, 'ยท mcap $' + t.marketCapUsd);
console.log('24h volume: $' + t.volume.h24Usd);

Auto-list new tokens (polling)

The simplest way to stay in sync: poll on an interval and diff by address.

// Auto-list brand-new tokens the moment they appear โ€” poll & diff.
const seen = new Set();
async function poll() {
  const { tokens } = await (await fetch(`https://famspad.com/api/v1/tokens?limit=200`)).json();
  for (const t of tokens) {
    if (!seen.has(t.address)) {
      seen.add(t.address);
      onNewToken(t);            // <- your code: add it to your platform
    }
  }
}
poll();
setInterval(poll, 20000);       // every 20s (data caches ~15s โ€” don't go faster)

Draw a price chart

OHLC candles, ready for TradingView / lightweight-charts / Chart.js.

// Price candles for a chart. resolution = 1m | 5m | 15m | 1h | 4h | 1d
const url = `https://famspad.com/api/v1/tokens/${ca}/ohlc?resolution=1h&limit=200`;
const { candles } = await (await fetch(url)).json();
// candles: [{ time(unix s), open, high, low, close, volumeUsd }]
drawChart(candles);

Recent trades (swaps)

Every buy/sell for a token, newest first โ€” build a trade feed, tape, or fill history.

// Recent trades (swaps) for one token โ€” newest first.
const ca = '0xd48A1Eed09696E389A3CC32E519224d6Bf4ffeEd';
const { trades } = await (await fetch(`https://famspad.com/api/v1/tokens/${ca}/trades?limit=100`)).json();
// trades: [{ ts(ms), side:'buy'|'sell', priceUsd, priceEth, volumeUsd, volumeEth }]
trades.forEach(t => console.log(t.side, '$' + t.volumeUsd, '@ $' + t.priceUsd));

Real-time โ€” live trades & launches (WebSocket + SSE)

Don't poll for trades โ€” subscribe and get pushed the instant a swap lands. Two transports carry the identical { type, ts, data } message (type = trade ยท token.created ยท token.graduated). Server-Sent Events needs no library and works in any browser:

// LIVE trades with zero polling โ€” Server-Sent Events (built into browsers).
const es = new EventSource('https://famspad.com/api/v1/stream');
es.onmessage = (e) => {
  const msg = JSON.parse(e.data);              // { type, ts, data }
  if (msg.type === 'trade')           onTrade(msg.data);
  if (msg.type === 'token.created')   onNewToken(msg.data);
  if (msg.type === 'token.graduated') onGraduated(msg.data);
};
// Filter: 'https://famspad.com/api/v1/stream?token=0xYourToken'  or  '?types=trade,token.created'

Prefer a raw WebSocket? Same messages, same filters, over wss://:

// Same messages over WebSocket. Browser: WebSocket is built-in. Node: npm i ws
const WebSocket = require('ws');
const ws = new WebSocket('wss://famspad.com/api/v1/ws');
ws.on('open',    () => console.log('connected'));
ws.on('message', (buf) => {
  const msg = JSON.parse(buf);                 // { type, ts, data }
  if (msg.type === 'trade') {
    const t = msg.data;
    console.log(t.symbol, t.side, '$' + t.volumeUsd, '@ $' + t.priceUsd);
  }
});
// One token only:  new WebSocket('wss://famspad.com/api/v1/ws?token=0xYourToken')
Filters (both transports): ?token=0xโ€ฆ for one token's trades, ?types=trade,token.created to subset events. A hello message greets you on connect and a heartbeat keeps the connection open. The feed is live-only โ€” for trades from before you connected, page /tokens/{ca}/trades.

Get pushed instead of polling (webhooks)

Prefer push? Register a URL and Famspad POSTs to it the instant a token is created or graduates to Uniswap. Registration is operator-managed โ€” send us your URL, or if you run the instance:

# Ask Famspad to register your endpoint (operator runs this once).
curl -X POST https://famspad.com/api/v1/webhooks \
  -H "x-admin-secret: $ADMIN_SECRET" \
  -H "content-type: application/json" \
  -d '{"url":"https://your.app/famspad-hook","events":["token.created","token.graduated"],"secret":"your-shared-secret"}'

Then verify the signature on your side so you know it's really from Famspad:

const express = require('express');
const crypto  = require('crypto');
const app = express();
const SECRET = 'your-shared-secret';        // the secret you registered

// Use the RAW body so the signature matches byte-for-byte.
app.post('/famspad-hook', express.raw({ type: '*/*' }), (req, res) => {
  const want = 'sha256=' + crypto.createHmac('sha256', SECRET).update(req.body).digest('hex');
  const got  = req.get('x-famspad-signature') || '';
  if (want.length !== got.length ||
      !crypto.timingSafeEqual(Buffer.from(want), Buffer.from(got))) {
    return res.status(401).send('bad signature');
  }
  const { event, data } = JSON.parse(req.body.toString());
  if (event === 'token.created')   addToken(data);     // new token launched
  if (event === 'token.graduated') markListed(data);   // now on Uniswap
  res.sendStatus(200);                                 // reply fast; we don't retry
});
app.listen(3000);
Each delivery has header x-famspad-event and, if you set a secret, x-famspad-signature: sha256=<hmac> over the raw body. Body: { event, ts, data }.

For DEX aggregators & trackers

A GeckoTerminal / DexScreener-shaped feed under /dex/*, so an aggregator can ingest Famspad with its standard adapter.

# GeckoTerminal / DexScreener-style feed for aggregators & trackers.
curl https://famspad.com/api/v1/dex/latest-block
curl "https://famspad.com/api/v1/dex/asset?id=0xYourTokenAddress"
curl "https://famspad.com/api/v1/dex/pair?id=0xPairOrTokenAddress"
curl "https://famspad.com/api/v1/dex/events?fromBlock=0&toBlock=999999999"

Field cheat-sheet

FieldMeaning
addressToken contract address โ€” the unique id.
symbol / nameTicker and display name.
statusbonding = on the curve ยท listed = trading on Uniswap.
priceUsdCurrent price in USD (null until first indexed).
marketCapUsdMarket cap in USD.
volume.h24Usd24-hour volume ยท volume.totalUsd all-time.
pairAddressUniswap V2 pair โ€” present once listed.
logoURIAbsolute logo URL ยท links.website/twitter/telegram.
createdAtLaunch time (ms epoch).
Rules of the road: responses cache ~15s โ€” please poll no faster. Field names are stable within v1 (we add, never rename). Treat null market fields as “not indexed yet”, not zero.
Open interactive reference โ†’Download openapi.json
Famspad Public API v1 ยท Robinhood Chain (chainId 4663) ยท famspad.com