AlcorDocs

Market Feed

Every Alcor market on every chain in one feed, in the CoinGecko / CoinMarketCap shape.

One feed for aggregators (CoinGecko, CoinMarketCap and the like): every market Alcor runs on WAX, XPR, Vaulta (EOS) and Telos, AMM pools and order books alike, in the shape of the CoinGecko integration spec, which CoinMarketCap accepts too.

Base URL: https://api.alcor.exchange/v3/feed. It answers the same on any Alcor host (https://wax.alcor.exchange/api/v3/feed/... too). No key is needed; responses are refreshed every minute.

What is in it

  • AMM pools and order book markets holding at least $1,000: a pool's TVL, or for an order book the orders resting within 10% of the mid price, valued in its quote token.
  • No markets of tokens flagged as scam.

Identifiers

FieldFormatExample
currency<chain>:<symbol>-<contract>wax:tlm-alien.worlds
ticker_id<base currency>_<target currency>wax:tlm-alien.worlds_wax:wax-eosio.token
pool_id<chain>:<amm or orderbook>:<id>wax:orderbook:26

The chain is part of every id because one contract name can exist on several chains (usdt-wrap.alcor is on WAX, XPR and Telos). Chains: wax, xpr, eos, telos. Several pools can share a ticker_id (one pair, different fee tiers); pool_id tells them apart.

Pairs

GET https://api.alcor.exchange/v3/feed/pairs

[
  {
    "ticker_id": "wax:tlm-alien.worlds_wax:wax-eosio.token",
    "base": "wax:tlm-alien.worlds",
    "target": "wax:wax-eosio.token",
    "pool_id": "wax:orderbook:26"
  }
]

Tickers

GET https://api.alcor.exchange/v3/feed/tickers

[
  {
    "ticker_id": "wax:tlm-alien.worlds_wax:wax-eosio.token",
    "base_currency": "wax:tlm-alien.worlds",
    "target_currency": "wax:wax-eosio.token",
    "pool_id": "wax:orderbook:26",
    "type": "orderbook",
    "chain": "wax",
    "last_price": 0.25251933,
    "base_volume": 456391.87,
    "target_volume": 115877.58,
    "liquidity_in_usd": 1603.12,
    "bid": 0.24701200,
    "ask": 0.25100000,
    "high": 0.25653127,
    "low": 0.25025,
    "volume_usd_24h": 568.4,
    "base_cmc_ucid": 9119,
    "target_cmc_ucid": 2300,
    "global_ticker_id": "TLM-WAXP",
    "trade_url": "https://alcor.exchange/v/wax/spot/tlm-alien.worlds_wax-eosio.token"
  }
]
NameTypeDescription
ticker_id, base_currency, target_currency, pool_idstringSee Identifiers
typestringamm or orderbook
chainstringwax, xpr, eos or telos
last_pricenumberLast price of the base in the target
base_volume, target_volumenumber24h volume in each token
liquidity_in_usdnumberPool TVL, or order book depth within 10% of mid
bid, asknumberBest bid and ask. Order books only
high, lownumber or null24h range, null without a trade in 24h
volume_usd_24hnumber24h volume in USD
base_cmc_ucid, target_cmc_ucidnumber or nullCoinMarketCap ids of the tokens, when known
global_ticker_idstring or nullBASE-TARGET in CoinMarketCap symbols, when both tokens have a CoinMarketCap id
trade_urlstringThe market on alcor.exchange

Order book

Order book markets only; an AMM pool has no book.

GET https://api.alcor.exchange/v3/feed/orderbook?ticker_id=wax:tlm-alien.worlds_wax:wax-eosio.token&depth=100

NameTypeRequiredDescription
ticker_idstringyesA ticker of type orderbook
depthnumbernoLevels on both sides together: 100 is 50 bids and 50 asks. 0 (default) is the full book
{
  "ticker_id": "wax:tlm-alien.worlds_wax:wax-eosio.token",
  "pool_id": "wax:orderbook:26",
  "timestamp": 1792069684465,
  "bids": [["0.24701200", "14224.8352"]],
  "asks": [["0.25100000", "154048.5865"]]
}

Levels are [price, base quantity], best first.

Historical trades

Swaps in the pair's pools and fills on its order book, merged, oldest first.

GET https://api.alcor.exchange/v3/feed/historical_trades?ticker_id=wax:tlm-alien.worlds_wax:wax-eosio.token&limit=200

NameTypeRequiredDescription
ticker_idstringyesAny ticker of the feed
typestringnobuy or sell
limitnumbernoThe latest N trades. Default 200, at most 1000
start_time, end_timenumbernoUnix seconds
[
  {
    "trade_id": "wax:swap:110408849349",
    "ticker_id": "wax:waxusdc-eth.token_wax:parausd-parareserves",
    "pool_id": "wax:amm:10336",
    "price": 1.0025,
    "base_volume": 0.00198,
    "target_volume": 0.001985,
    "trade_timestamp": 1792045247,
    "type": "buy",
    "trx_id": "886cdd7c78f64f9febaf558bd076bb82ece83b4171986eb2b58f13922d8b4976"
  }
]

type is the side of the base token: buy took it out of the pool or the book, sell put it in.

Merged by asset (CoinMarketCap)

https://api.alcor.exchange/v3/feed/cmc/{pairs,tickers,orderbook,historical_trades} is the same feed with one market per pair of assets instead of one per pool. Every pool, fee tier, order book and chain that trades the same two assets is one market:

  • A token is its asset, named by the CoinMarketCap symbol. A token bridged through the Alcor Bridge or Metal X counts as its origin: usdc-wrap.alcor on WAX, XPR and Telos and xusdc-xtokens on XPR are all USDC.
  • Only pairs of two tokens with a known CoinMarketCap id are listed.
  • The pair is quoted in a stablecoin first, then in a chain coin (TLM_WAXP, WAXP_USDT); otherwise its assets go in alphabetical order. A pool trading one asset on both sides (usdc-wrap.alcor / xusdc-xtokens) is a bridge and is left out.
{
  "ticker_id": "USDC_USDT",
  "base_currency": "USDC",
  "target_currency": "USDT",
  "base_cmc_ucid": 3408,
  "target_cmc_ucid": 825,
  "global_ticker_id": "USDC-USDT",
  "last_price": 1.00057,
  "base_volume": 3874.18,
  "target_volume": 3854.25,
  "liquidity_in_usd": 15222.38,
  "high": null,
  "low": null,
  "volume_usd_24h": 3864.21,
  "pool_id": "wax:amm:12397",
  "pools": ["wax:amm:12397", "wax:amm:12498", "xpr:amm:0"],
  "trade_url": "https://alcor.exchange/v/wax/swap/usdc-wrap.alcor_usdt-wrap.alcor"
}

Volumes and liquidity are the sums over pools. last_price, pool_id and trade_url are the most liquid pool's; bid, ask and /orderbook are the most liquid order book's. /historical_trades merges the trades of every pool in pools, each naming its own pool_id.

On this page