Token data API
Every memestock launched on memestock.market, as data anyone can read: name, ticker, price, market cap, FDV, 24-hour volume, liquidity and the value of the basket behind it. Made for launchpads, screeners and wallets that list our tokens and want to show the same figures we do. Every figure is read from Base itself, not from a third party. Free, no key, CORS open: call it straight from a web page.
Integrating it? The developers page has everything in one place: a live console, code in curl, JavaScript and Python, the DexScreener format, how to verify a token, a ready-made price widget and every field.
Endpoints
- GET /api/v1/tokens: every token, biggest market cap first.
GET /api/v1/tokens/<id>: one token, with its basket holding by holding.idis the ticker (any case, with or without the dot:BRK.M,brkm), the token's address or the hook's.GET /api/v1/tokens/<id>/<field>: one number as plain text, for a widget or a supply endpoint (CoinGecko and CoinMarketCap ask for these):price,marketcap,fdv,volume,liquidity,basket,total-supply,circulating-supply,volume-7d,change-24h,change-7d,holders.?format=dexscreeneron either of the two above: the same data in DexScreener's pair shape (priceNative,priceUsd,txns,volume,priceChange,liquidity,fdv,marketCap,pairCreatedAt,info), so a site that already reads DexScreener reads us with the same code./api/v1/tokens?sort=marketcap(default),volume,neworchange.GET /api/v1/tokens/<id>/trades?limit=50: the last trades of the day, newest first (up to 100): time, side, amounts, the effective price and the transaction.GET /api/v1/tokens/<id>/chart?days=1: the price back in time, as the chain held it: every hour for a day, every six hours for 7, every day for 30. Enough for a sparkline or a small chart.GET /api/v1/tokens/<id>/logo: the token's logo as an image, for an<img>tag.
Responses are cached for 30 seconds at the edge, so polling more often than that returns the same figures. Amounts are in whole tokens and dollars, not raw units. A figure that cannot be read right now is null.
Example (illustrative figures)
curl https://memestock.market/api/v1/tokens/BRK.M
{
"ok": true,
"ticker": "BRK.M",
"name": "Berkshire Memeway",
"token": "0xb200…",
"priceUsd": 0.0000412,
"priceChange24hPct": 6.85,
"priceChange": { "m5": 0.1, "h1": 1.2, "h6": 3.9, "h24": 6.85, "d7": 18.4 },
"volume": { "m5": 12.5, "h1": 410.2, "h6": 1980.4, "h24": 5320.7, "d7": 31877.1 },
"txns": { "h24": { "buys": 121, "sells": 63 }, … },
"marketCapUsd": 31250.4,
"fdvUsd": 41200.0,
"volume24hUsd": 5320.7,
"trades24h": 184,
"liquidityUsd": 36410.2,
"basketValueUsd": 12950.8,
"backingPerTokenUsd": 0.0000171,
"supply": { "total": 1000000000, "burned": 0, "locked": 241500000, "circulating": 758500000, "inPool": 512300000 },
"quote": { "token": "0xb200…", "symbol": "BRK.Bc", "decimals": 8, "priceUsd": 492.31 },
"basket": [ { "symbol": "BRK.Bc", "weightBps": 2500, "valueUsd": 3240.1 }, … ],
"info": { "description": "…", "logo": "https://…", "website": "https://…", "x": "https://x.com/…", "telegram": null, "other": null },
"holders": { "count": 1284, "top10Pct": 18.4 },
"launchedAt": "2026-11-01T18:00:00.000Z",
"official": { "factory": "0x…", "isGenuine": true },
"fees": { "tradingBps": 100, "burnBps": 2500, "brokerageBps": 2500, "holdersBps": 2500, "managementBps": 2500, "brokerage": "0x…", "broker": "0x…" },
"links": { "trade": "https://memestock.market/…", "explorer": "https://basescan.org/token/0xb200…", "dexscreener": "…", "geckoterminal": "…" },
"updatedAt": "2026-11-02T12:00:00.000Z"
}// in a web page
const t = await fetch("https://memestock.market/api/v1/tokens/BRK.M").then((r) => r.json());
console.log(t.priceUsd, t.marketCapUsd, t.basketValueUsd);Fields
| Field | What |
|---|---|
name, ticker, symbol | The token's name and symbol; the ticker its IMO house fixed (BRK.M). |
token, hook, poolId | The memestock's contract (a B20 on Base), its Uniswap V4 hook (the market maker that holds the basket) and the pool's id. |
priceUsd, priceQuote | The pool's own price, from the hook's curve: in the quote (the tokenized stock the market trades against) and in dollars at the quote's USDC pool. |
priceChange, priceChangeQuote | The move over 5 minutes, 1 hour, 6 hours, 24 hours and 7 days (m5, h1, h6, h24, d7), in %, against the price the chain held at the start of each window: in dollars, and in the quote (the memestock's own move, without the stock's). priceChange24hPct is the 24-hour one. |
volume, txns | Dollars traded and the number of buys and sells in each window (m5, h1, h6, h24, d7), from the hook's own Buy and Sell events. volume24hUsd and trades24h are the 24-hour ones. |
marketCapUsd | price × circulating supply. |
fdvUsd | price × (total supply − burned). |
volume24hUsd, trades24h | Every buy and sell of the last 24 hours (43,200 blocks), from the hook's own Buy and Sell events: quote paid in on buys, quote paid out on sells. |
liquidityUsd | Both sides of the pool: the memestock the hook still holds for sale, at the price, plus the basket that pays every sell. |
basketValueUsd | The basket at the last realized prices of its holdings (the hook's reserveValue: the tokenized stock, ₸USD and the strategic holdings). |
backingPerTokenUsd | basketValueUsd ÷ circulating supply. |
supply | total (totalSupply), burned (at 0x…dEaD), locked (still in the IMO house: the backers' and the broker's tokens not yet vested or claimed), circulating (total − burned − locked: the tokens the pool holds for sale count, they can be bought), inPool. |
basket (one token only) | Each holding: its token and symbol, weight, amount and value in dollars. |
launchedAt | When the market launched. |
official | How to check the token is ours: its launch factory, and that factory's isGenuine(hook), read onchain. A token that copies a name, ticker or logo fails this. |
fees | The trading fee (bps) and how it is split, in bps of the fee: burn, the brokerage that launched it (and its address), the holders, the management the holders elect. |
info | What the token's broker published with its prospectus: description, logo (an image URL), website, X, Telegram and one more link. Presentation only. |
holders | Wallets holding it, and the share of the ten biggest (pools, burn addresses and contracts left out), from Blockscout, refreshed hourly. |
links | Its trading page, this API, Basescan, DexScreener and GeckoTerminal. |
feeBps, tradingOpen, liquidated | The trading fee (bps), whether public trading is open, and whether the holders voted the market's emergency exit. |
How the figures are read
A memestock trades in one Uniswap V4 pool whose hook makes the market: it holds the memestock not yet sold and a basket bought with what buyers pay (the tokenized stock, ₸USD and the strategic holdings), and pays every sell from that basket. The price is the pool's own, from the hook's curve. The quote's dollar price is its USDC pool, the first hop of the market's own route. The volume is counted from the hook's Buy and Sell events, so trades made through any router or aggregator count. See the basket and fees.
Attribution is welcome ("Data: memestock.market"). Market-wide data on every memecoin paired against a tokenized stock is in the market API. Nothing here is investment advice.