Market metadata includes descriptive and reference data about the listed markets on an exchange. The market metadata can include data about the trading parameters that govern valid orders such as amount and price precision, fees, current status, and several fields that describe a derivatives market contract specifications.
Coin Metrics collects and serves metadata for spot, futures, and options markets.
Some metadata is available for all three market types. This includes data about the base asset and quote asset (or underlying base asset and quote asset for derivatives), the exchange-reported symbol, the market status, amount precision, maximum and minimum amount size, price precision, maximum and minimum price, and fee fields.
Spot markets also have a field that indicates whether the market allows margin trading.
Futures markets have several fields that describe the futures market's contract specifications. Futures markets trade in standardized contracts that allow counterparties to enter into an agreement to buy or sell a standardized asset under contract specifications that are defined by the exchange. The futures contract specifications include information such as the underlying base and quote asset, the margin asset, the contract size, the listing time, expiration time, and other terms. Here we define futures to include both non-perpetual futures that expire and perpetual futures (sometimes called perpetual swaps).
Options markets also trade in standardized contracts similar to futures markets described above. Options markets have several fields that are specific to options such as the strike price and whether the option is an European or American style option.
API Endpoints
Market Metadata can be accessed using the reference-data/markets and catalog/markets endpoint.
Markets
get
/reference-data/markets
Returns a list of markets metadata.
Authorizations
api_keystringRequired
Coin Metrics API key can be specified as ?api_key= query parameter.
Query parameters
marketsstring[]Optional
Comma separated list of markets. By default all markets are returned.
exchangestringOptional
Unique name of an exchange.
typestring · enumOptional
Type of markets.
Possible values:
basestringOptional
Base asset of markets.
quotestringOptional
Quote asset of markets.
assetstringOptional
Any asset of markets.
symbolstringOptional
Symbol of derivative markets, full instrument name.
Number of items per single page of results. The value of this parameter is ignored if the endpoint supports the format parameter and its value is set to json_stream.
Default: 100
paging_fromstring · enumOptional
Where does the first page start, at the start of the interval or at the end. The value of this parameter is ignored if the endpoint supports the format parameter and its value is set to json_stream.
Default: startPossible values:
next_page_tokenstringOptional
Token for receiving the results from the next page of a query. Should not be used directly. To iterate through pages just use next_page_url response field.
formatstringOptional
Format of the response. Supported values are json, json_stream.
Default: json
prettybooleanOptional
Human-readable formatting of JSON responses.
Default: false
Responses
200
List of markets metadata.
application/json
400
Market not found.
application/json
401
Requested resource requires authorization.
application/json
414
Provided URI is too long. It must not be greater than 10000 symbols.
No content
get
/reference-data/markets
Deprecated
Available markets
get
/catalog/markets
Returns a list of available markets along with time ranges of available data.
Authorizations
api_keystringRequired
Coin Metrics API key can be specified as ?api_key= query parameter.
Query parameters
marketsstring[]Optional
Comma separated list of markets. By default all markets are returned.
exchangestringOptional
Unique name of an exchange.
typestring · enumOptional
Type of markets.
Possible values:
basestringOptional
Base asset of markets.
quotestringOptional
Quote asset of markets.
assetstringOptional
Any asset of markets.
symbolstringOptional
Symbol of derivative markets, full instrument name.
includestring[]Optional
Comma separated list of fields to include in response. Supported values are trades, orderbooks, quotes, funding_rates, openinterest, liquidations. Included by default if omitted.
excludestring[]Optional
Comma separated list of fields to exclude from response. Supported values are trades, orderbooks, quotes, funding_rates, openinterest, liquidations. Included by default if omitted.
formatstringOptional
Format of the response. Supported values are json, json_stream.
Default: json
limitstringOptional
Limit of response items. none means no limit. Maximum value is 100.
Default: none
prettybooleanOptional
Human-readable formatting of JSON responses.
Default: false
Responses
200
List of markets.
application/json
401
Requested resource requires authorization.
application/json
414
Provided URI is too long. It must not be greater than 10000 symbols.
No content
get
/catalog/markets
Example
A sample of the futures and options contract specification data from our /catalog/markets and /catalog-all/markets API endpoints is shown below.
market: Unique name of the market. \
min_time: Minimal available time for data from this market in ISO 8601 date-time format.\
max_time: Maximal available time for data from this market in ISO 8601 date-time format.\
exchange: Name of the exchange.\
type: The type of the market. Can take values spot or future or option.\
base: The contract’s underlying base asset.\
quote: The contract's underlying quote asset.\
symbol: The exchange-reported symbol for the market.\
status: Indicates whether the market is online. Can only take values online or offline.\
order_amount_increment: The minimum increment that the trade amount of an order can change in units of the base currency if a spot market or in contract units if a derivatives market.\
order_amount_min: The minimum trade amount of an order in units of the base currency if a spot market or in contract units if a derivatives market.\
order_amount_max: The maximum trade amount of an order in units of the base currency if a spot market or in contract units if a derivatives market.\
order_price_increment: The minimum increment that the price of an order can change. The price is quoted in units of the quote currency.\
order_price_min: The minimum price of an order. The price is quoted in units of the quote currency.\
order_price_max: The maximum price of an order. The price is quoted in units of the quote currency.\
order_size_min: The minimum order size amount in units of the quote currency. The order size is the order amount multiplied by the order price.\
order_taker_fee: The taker order fee in raw units (not percent units).\
order_maker_fee: The maker order fee in raw units (not percent units).\
market_margin_trading_enabled: Indicates whether the market allows margin trading. Can take values true or false.\
size_asset: The asset that the contract’s size is denominated in.\
margin_asset: The name of the asset that the contract’s margin is denominated in.\
contract_size: The number of units of size_asset that one contract represents. \
tick_size: The minimum price increment of the contract’s price.\
listing: The timestamp that the contract first became available for trading\
expiration: The timestamp that the contract expires; equals null if the contract is a perpetual future that never expires.\
is_european: Shows if the options contract is european or not.\
option_contract_type: The type of option. Can take values call or put.\
strike: Strike price for option contract.\
settlement_price: The settlement price of a derivatives contract at expiration. Only populated for derivatives markets that have expired. Also sometimes referred to as "delivery price".
Frequently Asked Questions
Do all exchanges offer these metadata fields?
Exchanges vary in which fields they offer through their API. If an exchange does not offer a particular field, Coin Metrics will consult the exchange's published documentation and manually populate some fields. If neither the exchange's API nor documentation can be used to populate a field, then that field is omitted from the response for that particular market.
Is the margin_asset the asset of settlement?
Yes, the margin_asset is the asset of settlement. A trader must post this asset as the initial margin when opening a position**.** Unrealized gains and losses are calculated in this asset, and a trader receives gains or losses denominated in this asset when the trader closes the position or the contract expires.
Is there a way to filter between perpetual, coin-margined, and tether-margined futures in the catalog?
We are working on adding filtering parameters for the various futures contract types. In the meantime, perp contracts can be identified by null expiration time. Coin margined contracts can be identified where the base is identical to margin_asset. Tether margined contracts can be identified where the margin_asset is usdt.
Harmonization Discussion
Harmonization of derivatives contracts in the cryptoasset domain is difficult because there is wide disparity in contract design and exchange conventions. Some of the sources of difficulty include:
The margin asset can be in the form of the underlying base asset, a stablecoin such as Tether, or a fiat currency. \
The contract size (the amount of notional exposure that a single contract is worth) can be in the form of varying units such as the underlying base asset or a fiat currency. Some exchanges use exotic futures design (such as BitMEX's quanto contracts) where the contract size is not fixed but rather a function of the current price. \
Some exchanges offer exotic futures contracts where the underlying is not a cryptoasset. Instead, it could be a custom index, an equity, or something else like Bitcoin's hash rate. \
Some exchanges hide the complexity involved with contract sizes and do not use contract sizes. Instead, they allow users to define the amount of units of the underlying base asset when trading and allow users to purchase fractional contracts (representing fractional units of the underlying) to simulate spot trading. Other exchanges explicitly define contract sizes and do not allow users to purchase fractional contracts.\
Some exchanges separate perpetual swap contracts that have no expiration date and traditional futures contracts with a specified expiration date. These exchanges serve contract information via two different endpoints with different response schema.\
Some exchanges do not provide all contract specification data via their API but instead define it in documentation.
We harmonize the data in the following way:
For exchanges that do not explicitly define the contract size and implicitly use a contract size of 1 unit of the underlying base asset, we set the contract size to 1.\
In instances where the exchange's API does not contain all fields that we wish to capture, we consult the exchange's documentation and manually populate the data.
Release History
CM MDF v2.2 on December 2, 2020: Added futures contract specification data for Binance, BitMEX, bitFlyer, Bitfinex, Deribit, FTX, Huobi, and OKEx.\
CM MDF v2.3 on April 25, 2021: Added futures contract specifications data for CME and Bybit. Added options contract specifications for Deribit and OKEx.\
Contract specification data is available through our community API. Community data is available via HTTP API only and is limited to 10 API requests per 6 seconds per IP address. All of our contract specification data is available through our professional API with higher rate limits.