Public API
Read BRUNE data from your own app, bot or dashboard. No key required.
Base URL
https://www.brune.techAll responses are JSON. Amounts are strings of base units: BNB in wei (18 decimals), BTCB in wei (18 decimals, with sats alongside where useful), coins in wei (18 decimals). Market figures are numbers in BTC, and marketCapUsd is the market cap in US dollars.
Endpoints
| Method | Path | Returns |
|---|---|---|
| GET | /api/site | Network facts: chain, quote token, launch settings, contract addresses |
| GET | /api/coins | A page of coins (see below) |
| GET | /api/coins/{token} | One coin with live market figures |
| GET | /api/coins/{token}/trades | Its latest trades |
| GET | /api/coins/{token}/holders | Its top holders on BNB Chain |
| GET | /api/coins/{token}/candles?interval={seconds} | Market-cap candles in BTC and USD (60, 300, 900, 3600, 14400 or 86400 seconds) |
| GET | /api/launch/{id} | Launch progress (BNB Chain, Rune, bridge) |
| GET | /api/launch/{id}/image | The coin's image |
| GET | /api/launch/dev-buy?wei={n} | Tokens a dev buy of n BNB wei gets at launch |
| GET | /api/portfolio?wallet={address} | Coins a wallet created (with creator fees) and holds |
| GET | /api/v1/runes | The price of every BRUNE Rune on Bitcoin, for wallets (see below) |
| GET | /api/v1/runes/{rune} | One Rune by Rune ID, name or BNB Chain token address |
| GET | /api/v1/stats | BRUNE in numbers: volume, traders, BTC paid out, bridge moves, custody backing |
| GET | /api/v1/activity | The latest trades, launches, BTC payouts and bridge moves, each with its transaction |
| GET | /api/bridge/verify | Custody of every Rune, with the co-signer's code hash and controllers |
| GET | /api/reserves | Proof of reserves for BTC payouts and BTC accounts (what the Reserves page shows) |
Rune prices for wallets
Bitcoin wallets and marketplaces price Runes from Bitcoin marketplace sales. A BRUNE Rune's market is its BNB Chain pool, where every token is backed 1:1 by the Rune in custody, so this feed is its price. Open to any website (CORS), no key, refreshed every 30 seconds.
GET /api/v1/runes
GET /api/v1/runes/972310:1187
GET /api/v1/runes/DOGE•ON•BTC (spacers optional: DOGEONBTC, DOGE.ON.BTC)
GET /api/v1/runes/0x…7777{
"runes": [
{
"runeId": "972310:1187",
"runeName": "DOGEONBTC",
"spacedRuneName": "DOGE•ON•BTC",
"symbol": "D",
"divisibility": 18,
"ticker": "DOGE",
"name": "Doge on Bitcoin",
"priceSats": 0.0061,
"priceUsd": 0.0000049,
"change24hPct": 4.1,
"marketCapSats": "6100000",
"marketCapUsd": 4980,
"volume24hSats": "1250000",
"volume24hUsd": 1020,
"maxSupply": "1000000000",
"url": "https://www.brune.tech/rune/0x…7777",
"bsc": { "token": "0x…7777", "venue": "FLAP", "pairedWith": "BTCB", "graduated": false },
"bridge": { "enabled": true, "onBitcoinPct": 4.8 }
}
]
}Prices are for one whole Rune (divisibility applied), in sats and US dollars. The 24-hour figures come from the Rune's trades on BNB Chain.
BRUNE in numbers
The figures on the home page, open to any website (CORS), no key. /api/v1/stats is refreshed every minute, /api/v1/activity every 15 seconds.
{
"runes": { "listed": 74, "onBitcoin": 74, "bridged": 41, "graduated": 3 },
"trading": { "trades": 24198, "traders": 3456, "volumeSats": "2244000000", "volumeUsd": 1830687, "volume24hUsd": 64210 },
"btcPaid": { "sats": "4224702", "usd": 3446, "addresses": 9, "payouts": 57 },
"bridge": { "toBitcoin": 10, "toBsc": 2 },
"custody": { "runes": 74, "backed": 74, "cosigned": 74, "cosignerOnline": true }
}custody is the verify page's summary: Runes whose custody holds at least the Rune for every token on BNB Chain, and Runes at their own 2-of-2 address. Each activity item carries its txHash or btcTxid, so every line can be checked on chain.
Listing coins
GET /api/coins?sort=mcap&limit=24&offset=0| Parameter | Values | Default |
|---|---|---|
sort | new, mcap, graduating | new |
bitcoin | 1 for coins whose Rune exists | all |
q | Name, ticker or token address | none |
limit | 1 to 100 | 48 |
offset | 0 or more | 0 |
{
"coins": [
{
"token": "0x…7777",
"ticker": "ORBIT",
"name": "Orbit",
"market": {
"priceBtc": 6.1e-11,
"marketCapBtc": 0.061,
"marketCapUsd": 4980,
"liquidityBtc": 0.0062,
"progressPct": 4,
"graduated": false
},
"flap": { "status": "TRADABLE", "progress": "40000000000000000", "reserveWei": "6200000000000000", "circulating": "…" },
"runeId": "<block>:<tx>",
"runeName": "AAAAAAAAAAAAAAAAAACHXEPFISW",
"bridgeEnabled": true
}
],
"total": 128,
"offset": 0,
"limit": 24
}Identify coins by token or runeId, never by name or ticker: names can repeat (why).
Limits
| Calls | Limit per IP |
|---|---|
| All reads | 600 per minute |
/api/v1/runes | 120 per minute |
/api/v1/stats, /api/v1/activity | 600 per minute |
/api/portfolio | 40 per minute |
Over the limit, the API answers 429 with {"error":"RATE_LIMITED"} and a Retry-After header. Endpoints that prepare transactions are reserved for the BRUNE website.