FamspadOne 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.
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/0xYourTokenAddressbonding=on curve, listed=on Uniswap), pairAddress, logoURI.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
});
});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);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)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);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));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')?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.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);{ event, ts, data }.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 | Meaning |
|---|---|
address | Token contract address โ the unique id. |
symbol / name | Ticker and display name. |
status | bonding = on the curve ยท listed = trading on Uniswap. |
priceUsd | Current price in USD (null until first indexed). |
marketCapUsd | Market cap in USD. |
volume.h24Usd | 24-hour volume ยท volume.totalUsd all-time. |
pairAddress | Uniswap V2 pair โ present once listed. |
logoURI | Absolute logo URL ยท links.website/twitter/telegram. |
createdAt | Launch time (ms epoch). |
null market fields as “not indexed yet”, not zero.