← Blog

Introducing Tribulnation Catalogue: One ID for Every Asset, Everywhere

2026-06-30 · Marcel Claramunt ·
devcataloguepythonopen-source

Every exchange invented its own names for everything. Catalogue is the translation layer — a free, open API for crypto assets, networks, and instruments.

The naming problem

Every exchange invented its own names for everything.

Here's what six exchanges call the BNB Chain network:

Exchange Their string
Binance BSC
MEXC BNB Smart Chain(BEP20)
Bitget BEP20
KuCoin BSC
Bybit BSC (BEP20)
Kraken BNB Chain

Same story with assets. Kraken calls Bitcoin XXBT. Hyperliquid calls it 197. Everyone else calls it BTC.

If you've built anything that touches more than one exchange, you've spent time on this. Tribulnation Catalogue is the translation layer — a free, open dataset of canonical crypto assets, networks, and instruments, with per-exchange translation tables baked in.

API

Every record is available as a static JSON API — no auth, no rate limits, served from GitHub Pages.

Browse: catalogue.tribulnation.com

GET /api/assets.json
GET /api/assets/{id}.json
GET /api/platforms.json
GET /api/platforms/{id}.json
GET /api/instruments/spot/{platform}.json
GET /api/instruments/perpetual/{platform}.json
GET /api/indexes/symbols.json
GET /api/indexes/external/coingecko.json

Full route list and interactive try-it at catalogue.tribulnation.com/api.

You can also download everything at once:

Archive Contents
data.zip Raw catalogue data (JSON)
icons.zip SVG icons for assets, platforms, networks

Clients

Python

pip install tribulnation-catalogue
from tribulnation.catalogue import Catalogue

catalogue = Catalogue.load()

btc     = catalogue.assets['bitcoin']
binance = catalogue.platforms['binance']

Catalogue.load() downloads the catalogue on first use and caches it locally.

JavaScript / TypeScript

npm install @tribulnation/catalogue
import { Catalogue } from '@tribulnation/catalogue';

const client = new Catalogue();
const matches = await client.findBySymbol('BTC');
const bitcoin = await client.fetchAsset('bitcoin');
const pairs   = await client.getSpotInstruments('mexc');

Pricing

The MarketData SDK uses each asset's external IDs to route price requests to the right provider automatically:

from tribulnation.catalogue import Catalogue, MarketData

catalogue = Catalogue.load()
sdk = MarketData.new('usd', 'coingecko', 'twelvedata', 'alphavantage')

await sdk.current_price(catalogue.assets['bitcoin'])                  # → CoinGecko
await sdk.current_price(catalogue.assets['gold'])                     # → Twelve Data
await sdk.current_price(catalogue.assets['west-texas-intermediate'])  # → Alpha Vantage
Provider Source Covers
CoinGecko 'coingecko' Crypto — price, market cap, history
CoinMarketCap 'coinmarketcap' Crypto — price, market cap, history
Twelve Data 'twelvedata' Precious metals (XAU, XAG†), forex
Alpha Vantage 'alphavantage' Energy & agricultural commodities, forex

† XAG requires a paid Twelve Data plan.

What's inside

Assets — canonical records keyed by slug (e.g. bitcoin, usd-coin). Each carries a display name, symbol, icon, tags, peg information for stablecoins and wrapped tokens, and external IDs for CoinGecko, CoinMarketCap, Twelve Data, and Alpha Vantage.

Platforms — trading venues and blockchain networks keyed by slug (e.g. binance, ethereum). Blockchains carry namespace, chain ID, native asset, and EVM/SVM category.

Instruments — spot pairs, perpetual futures, debt positions, and liquidity pools — each mapped to canonical asset IDs. Resolves exchange-specific tickers like XBTUSDT back to ('bitcoin', 'tether').

Translations — per-exchange asset and network name mappings. The BNB Chain table above is real data from this.

Icons — square, maskable SVGs for assets, platforms, and networks. Designed to be displayed cropped to a circle or rounded square; API responses include absolute icon URLs.

Contributing

The data lives in plain JSON files — easy to read, easy to contribute to.

git clone https://github.com/tribulnation/catalogue.git
cd catalogue
python -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python scripts/validate.py

New assets, platforms, icons, translations, and corrections welcome on GitHub.