> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blockworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Perpetual Markets

> One row per perpetual futures contract on a centralized exchange, keyed by exchange and contract symbol: exchange, symbol, base asset, quote and settle currency, contract type and margin type. The id is the series key of the perpetual-markets timeseries model; filter by base asset to find every venue listing an asset's perpetual.



## OpenAPI

````yaml api-reference/data-api/openapi.json GET /query/tabular/perpetual-markets
openapi: 3.0.0
info:
  description: >-
    The Blockworks Data API is a unified, read-only REST interface to
    Blockworks' warehouse-modeled crypto dataset, powered by Messari's research
    and data infrastructure. It serves two kinds of models: tabular models,
    which return current, filterable, sortable rows for entities such as assets,
    networks, protocols, exchanges, stablecoins, and ETFs; and timeseries
    models, which return historical metric series at a chosen granularity for
    one or many entities. Every endpoint shares the same query grammar (column
    projection, per-column filters, sorting, and pagination) and returns the
    standard `{ "error": ..., "data": ... }` envelope. Authenticate by sending
    your API key in the `X-Blockworks-API-Key` header.
  title: Blockworks Data API
  version: 0.1.0
servers:
  - description: Blockworks API
    url: https://api.blockworks.com
security:
  - apiKey: []
tags:
  - description: 'Models documented under Acquisitions: Acquisition Deals (table).'
    name: Acquisitions
  - description: >-
      Models documented under Assets: Assets (table), Asset Marketcap
      (timeseries), Asset Price (timeseries), Asset Sharpe (timeseries), Asset
      Supply (timeseries), Asset Volatility (timeseries).
    name: Assets
  - description: >-
      Models documented under Blockchains: Blockchains (table), Blockchains
      (timeseries).
    name: Blockchains
  - description: >-
      Models documented under Derivatives: Perpetual Markets (table), Perpetual
      Markets (timeseries).
    name: Derivatives
  - description: >-
      Models documented under Digital Asset Treasuries: DAT Companies (table),
      DAT Company Assets (table), DAT Companies (timeseries), DAT Companies by
      Asset (timeseries).
    name: Digital Asset Treasuries
  - description: >-
      Models documented under ETFs: ETF Assets (table), ETF Providers (table),
      ETF Assets (timeseries), ETF Providers (timeseries).
    name: ETFs
  - description: >-
      Models documented under Exchanges: Exchange Country (timeseries), Exchange
      Region (timeseries), Exchange Type (timeseries), Exchanges (timeseries).
    name: Exchanges
  - description: >-
      Models documented under Funding Rounds: Funding Round Investors (table),
      Funding Rounds (table), Sector Fundraising (timeseries).
    name: Funding Rounds
  - description: >-
      Models documented under Funds & Investors: Fund Managers (table), Funds
      (table).
    name: Funds & Investors
  - description: >-
      Models documented under Launchpads: Launchpad Chains (table), Launchpads
      (table), Launchpads (timeseries), Launchpads by Chain (timeseries).
    name: Launchpads
  - description: >-
      Models documented under Lending Protocols: Lending Protocol Product
      Markets (table), Lending Protocol Products (table), Lending Protocols
      (table), Lending Protocols (timeseries), Lending Protocols by Product
      (timeseries), Lending Protocols by Product Market (timeseries).
    name: Lending Protocols
  - description: >-
      Models documented under Market Overview: Sector Marketdata (timeseries),
      Sub-Sector Marketdata (timeseries).
    name: Market Overview
  - description: 'Models documented under Markets: Market (BQEN) (timeseries).'
    name: Markets
  - description: >-
      Models documented under News & Research: News Feed (table), Research
      Reports (table), Topics (timeseries).
    name: News & Research
  - description: >-
      Models documented under Perp DEXes: Perp DEX Protocols (table), Perp DEX
      Protocols (timeseries).
    name: Perp DEXes
  - description: 'Models documented under Projects & Entities: Projects (timeseries).'
    name: Projects & Entities
  - description: >-
      Models documented under Protocol Revenue: Protocol Revenue (timeseries),
      Protocol Revenue by Product (timeseries).
    name: Protocol Revenue
  - description: >-
      Models documented under Social & Mindshare: Asset Group Sentiment
      (timeseries), Asset Investor Mentions (timeseries), Asset Mindshare
      (timeseries), Asset Sentiment (timeseries), Project Mindshare
      (timeseries), Sector Asset Mindshare (timeseries), Sector Asset Sentiment
      (timeseries), Sector Investor Mentions (timeseries), Sub-Sector Asset
      Mindshare (timeseries), Sub-Sector Asset Sentiment (timeseries).
    name: Social & Mindshare
  - description: >-
      Models documented under Spot DEXes: Spot DEX Protocol Chains (table), Spot
      DEX Protocols (table), Spot DEX Protocols (timeseries), Spot DEX Protocols
      by Chain (timeseries).
    name: Spot DEXes
  - description: >-
      Models documented under Stablecoins: Stablecoin Chains (table), Stablecoin
      Currencies (table), Stablecoin FX Pairs (table), Stablecoin Issuers
      (table), Stablecoin Products (table), Stablecoin Reserve Entities (table),
      Stablecoin FX (timeseries), Stablecoin Reserves (timeseries), Stablecoins
      by Chain (timeseries), Stablecoins by Currency (timeseries), Stablecoins
      by Issuer (timeseries), Stablecoins by Product (timeseries).
    name: Stablecoins
  - description: >-
      Models documented under TCG Platforms: TCG Platform Chains (table), TCG
      Platforms by Chain (timeseries).
    name: TCG Platforms
  - description: >-
      Discovery of the tabular models: one row per entity, with per-column
      filters, sorting and pagination.
    name: Tabular
  - description: >-
      Discovery of the timeseries models: one series per entity, as points at
      the granularities each model declares.
    name: Timeseries
  - description: >-
      Models documented under Token Transparency Framework: Token Transparency
      Filing Questions (table), Token Transparency Filing Schemas (table), Token
      Transparency Filings (table), Token Transparency Projects (table).
    name: Token Transparency Framework
  - description: >-
      Models documented under Tokenized Commodities: Tokenized Commodities
      (table), Tokenized Commodity Chains (table), Tokenized Commodity Issuers
      (table), Tokenized Commodity Products (table), Tokenized Commodities by
      Chain (timeseries), Tokenized Commodities by Commodity (timeseries),
      Tokenized Commodities by Issuer (timeseries), Tokenized Commodities by
      Product (timeseries).
    name: Tokenized Commodities
  - description: >-
      Models documented under Tokenized Equities: Tokenized Equities (table),
      Tokenized Equity Chains (table), Tokenized Equity Issuers (table),
      Tokenized Equity Products (table), Tokenized Equities by Chain
      (timeseries), Tokenized Equities by Equity (timeseries), Tokenized
      Equities by Issuer (timeseries), Tokenized Equities by Product
      (timeseries).
    name: Tokenized Equities
  - description: >-
      Models documented under Vaults: Vault Chains (table), Vault Curators
      (table), Vault Protocols (table), Vault Curators (timeseries), Vault
      Protocols (timeseries), Vaults by Chain (timeseries).
    name: Vaults
paths:
  /query/tabular/perpetual-markets:
    get:
      tags:
        - Derivatives
      summary: List Perpetual Markets
      description: >-
        One row per perpetual futures contract on a centralized exchange, keyed
        by exchange and contract symbol: exchange, symbol, base asset, quote and
        settle currency, contract type and margin type. The id is the series key
        of the perpetual-markets timeseries model; filter by base asset to find
        every venue listing an asset's perpetual.
      operationId: getTabular_perpetual_markets
      parameters:
        - description: Perpetual Market ID equals.
          in: query
          name: idEq
          schema:
            type: string
        - description: Perpetual Market ID is one of (comma-separated).
          in: query
          name: idIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Name equals.
          in: query
          name: nameEq
          schema:
            type: string
        - description: Name is one of (comma-separated).
          in: query
          name: nameIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Name contains (case-insensitive substring).
          in: query
          name: nameContains
          schema:
            type: string
        - description: Slug equals.
          in: query
          name: slugEq
          schema:
            type: string
        - description: Slug is one of (comma-separated).
          in: query
          name: slugIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Exchange equals.
          in: query
          name: exchangeEq
          schema:
            type: string
        - description: Exchange is one of (comma-separated).
          in: query
          name: exchangeIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Symbol equals.
          in: query
          name: symbolEq
          schema:
            type: string
        - description: Symbol is one of (comma-separated).
          in: query
          name: symbolIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Symbol contains (case-insensitive substring).
          in: query
          name: symbolContains
          schema:
            type: string
        - description: Normalized Symbol equals.
          in: query
          name: symbolNormalizedEq
          schema:
            type: string
        - description: Normalized Symbol is one of (comma-separated).
          in: query
          name: symbolNormalizedIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Normalized Symbol contains (case-insensitive substring).
          in: query
          name: symbolNormalizedContains
          schema:
            type: string
        - description: Base Asset ID equals.
          in: query
          name: baseAssetIDEq
          schema:
            type: string
        - description: Base Asset ID is one of (comma-separated).
          in: query
          name: baseAssetIDIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Base Asset Name equals.
          in: query
          name: baseAssetNameEq
          schema:
            type: string
        - description: Base Asset Name is one of (comma-separated).
          in: query
          name: baseAssetNameIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Base Asset Name contains (case-insensitive substring).
          in: query
          name: baseAssetNameContains
          schema:
            type: string
        - description: Base Asset Slug equals.
          in: query
          name: baseAssetSlugEq
          schema:
            type: string
        - description: Base Asset Slug is one of (comma-separated).
          in: query
          name: baseAssetSlugIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Base Asset Symbol equals.
          in: query
          name: baseAssetSymbolEq
          schema:
            type: string
        - description: Base Asset Symbol is one of (comma-separated).
          in: query
          name: baseAssetSymbolIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Base Asset Symbol contains (case-insensitive substring).
          in: query
          name: baseAssetSymbolContains
          schema:
            type: string
        - description: Base Asset Serial ID equals.
          in: query
          name: baseAssetSerialIDEq
          schema:
            format: int64
            type: integer
        - description: Base Asset Serial ID is one of (comma-separated).
          in: query
          name: baseAssetSerialIDIsOneOf
          schema:
            items:
              format: int64
              type: integer
            type: array
        - description: Quote Asset Serial ID equals.
          in: query
          name: quoteAssetSerialIDEq
          schema:
            format: int64
            type: integer
        - description: Quote Asset Serial ID is one of (comma-separated).
          in: query
          name: quoteAssetSerialIDIsOneOf
          schema:
            items:
              format: int64
              type: integer
            type: array
        - description: Settle Asset Serial ID equals.
          in: query
          name: settleAssetSerialIDEq
          schema:
            format: int64
            type: integer
        - description: Settle Asset Serial ID is one of (comma-separated).
          in: query
          name: settleAssetSerialIDIsOneOf
          schema:
            items:
              format: int64
              type: integer
            type: array
        - description: Exchange Serial ID equals.
          in: query
          name: exchangeSerialIDEq
          schema:
            format: int64
            type: integer
        - description: Exchange Serial ID is one of (comma-separated).
          in: query
          name: exchangeSerialIDIsOneOf
          schema:
            items:
              format: int64
              type: integer
            type: array
        - description: Quote Currency equals.
          in: query
          name: quoteCurrencyEq
          schema:
            type: string
        - description: Quote Currency is one of (comma-separated).
          in: query
          name: quoteCurrencyIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Settle Currency equals.
          in: query
          name: settleCurrencyEq
          schema:
            type: string
        - description: Settle Currency is one of (comma-separated).
          in: query
          name: settleCurrencyIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Contract Type equals.
          in: query
          name: contractTypeEq
          schema:
            type: string
        - description: Contract Type is one of (comma-separated).
          in: query
          name: contractTypeIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Margin Type equals.
          in: query
          name: marginTypeEq
          schema:
            type: string
        - description: Margin Type is one of (comma-separated).
          in: query
          name: marginTypeIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Exchange ID equals.
          in: query
          name: exchangeIDEq
          schema:
            type: string
        - description: Exchange ID is one of (comma-separated).
          in: query
          name: exchangeIDIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Exchange Name equals.
          in: query
          name: exchangeNameEq
          schema:
            type: string
        - description: Exchange Name is one of (comma-separated).
          in: query
          name: exchangeNameIsOneOf
          schema:
            items:
              type: string
            type: array
        - description: Exchange Name contains (case-insensitive substring).
          in: query
          name: exchangeNameContains
          schema:
            type: string
        - description: Field to sort by; defaults to the model's default sort column.
          in: query
          name: sortBy
          schema:
            default: name
            enum:
              - name
              - slug
              - exchange
              - symbol
              - baseAssetName
              - baseAssetSlug
              - baseAssetSymbol
              - quoteCurrency
            type: string
        - description: Sort direction.
          in: query
          name: sortDirection
          schema:
            default: asc
            enum:
              - asc
              - desc
            type: string
        - description: 1-based page number.
          in: query
          name: page
          schema:
            type: integer
        - description: Rows per page (max 1000, default 100).
          in: query
          name: pageSize
          schema:
            type: integer
        - description: Comma-separated fields to return; defaults to all fields.
          in: query
          name: selections
          schema:
            items:
              enum:
                - id
                - name
                - slug
                - exchange
                - symbol
                - symbolNormalized
                - baseAssetID
                - baseAssetName
                - baseAssetSlug
                - baseAssetSymbol
                - baseAssetSerialID
                - quoteAssetSerialID
                - settleAssetSerialID
                - exchangeSerialID
                - quoteCurrency
                - settleCurrency
                - contractType
                - marginType
                - exchangeID
                - exchangeName
              type: string
            type: array
        - description: >-
            Response format, overriding the Accept header: json (default), csv,
            or jsonl (NDJSON). csv and jsonl return the rows as a downloadable
            file.
          in: query
          name: acceptFormat
          schema:
            default: json
            enum:
              - json
              - csv
              - jsonl
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - baseAssetID: <baseAssetID>
                    baseAssetName: <baseAssetName>
                    baseAssetSerialID: 123
                    baseAssetSlug: <baseAssetSlug>
                    baseAssetSymbol: <baseAssetSymbol>
                    contractType: <contractType>
                    exchange: <exchange>
                    exchangeID: <exchangeID>
                    exchangeName: <exchangeName>
                    exchangeSerialID: 123
                    id: <id>
                    marginType: <marginType>
                    name: <name>
                    quoteAssetSerialID: 123
                    quoteCurrency: <quoteCurrency>
                    settleAssetSerialID: 123
                    settleCurrency: <settleCurrency>
                    slug: <slug>
                    symbol: <symbol>
                    symbolNormalized: <symbolNormalized>
                error: null
                metadata:
                  totalPages: 1
                  totalRows: 1
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/PerpetualMarketsRow'
                    type: array
                  error:
                    nullable: true
                    type: string
                  metadata:
                    description: >-
                      Pagination totals for the full filtered result set,
                      independent of the current page.
                    properties:
                      totalPages:
                        format: int64
                        type: integer
                      totalRows:
                        format: int64
                        type: integer
                    required:
                      - totalRows
                      - totalPages
                    type: object
                required:
                  - data
                  - metadata
                type: object
            application/x-ndjson:
              schema:
                description: JSON Lines (NDJSON); one JSON object per line.
                type: string
            text/csv:
              schema:
                description: CSV with a header row; one row per record.
                type: string
          description: >-
            One page of matching rows, with the totals for the whole filtered
            set.
        '400':
          content:
            application/json:
              example:
                data: null
                error: unknown query parameter "id"
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The request is malformed: an unknown query parameter (a filter needs
            its operator suffix, such as idEq), a filter value of the wrong
            type, a sortBy field that is not sortable, an unknown selections
            field, or a pageSize above 1000.
        '401':
          content:
            application/json:
              example:
                data: null
                error: this model requires authentication
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No API key was sent and the model requires one.
        '403':
          content:
            application/json:
              example:
                data: null
                error: this model requires the "market_data_unified" permission
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The API key is not valid, or does not hold the "market_data_unified"
            permission.
        '404':
          content:
            application/json:
              example:
                data: null
                error: tabular model "unknown-model" not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The path names a model that does not exist: the slug is mistyped or
            the model was removed.
components:
  schemas:
    PerpetualMarketsRow:
      properties:
        baseAssetID:
          description: >-
            The unique identifier of the asset the contract tracks. Null, along
            with the other base asset columns, where the contract's ticker
            matches no asset.
          nullable: true
          type: string
        baseAssetName:
          description: The name of the asset the contract tracks.
          nullable: true
          type: string
        baseAssetSerialID:
          description: >-
            The numeric serial identifier of the base asset, used by market data
            services. Join on it to reach the spot markets for the same asset.
          format: int64
          nullable: true
          type: integer
        baseAssetSlug:
          description: The URL slug of the asset the contract tracks.
          nullable: true
          type: string
        baseAssetSymbol:
          description: The ticker symbol of the asset the contract tracks.
          nullable: true
          type: string
        contractType:
          description: >-
            The contract type as reported by the exchange (perpetual or
            tradfi_perpetual).
          nullable: true
          type: string
        exchange:
          description: The exchange's short name as used in the id (binance, bybit, okx).
          nullable: true
          type: string
        exchangeID:
          description: The unique identifier of the exchange.
          nullable: true
          type: string
        exchangeName:
          description: The display name of the exchange.
          nullable: true
          type: string
        exchangeSerialID:
          description: >-
            The numeric serial identifier of the exchange, used by market data
            services.
          format: int64
          nullable: true
          type: integer
        id:
          description: >-
            The series key of the perpetual-markets timeseries model, the
            exchange and contract symbol joined with an underscore
            (binance_BTCUSDT).
          nullable: true
          type: string
        marginType:
          description: The margin type of the contract, linear or inverse.
          nullable: true
          type: string
        name:
          description: >-
            The display name of the market, the exchange name followed by the
            contract symbol.
          nullable: true
          type: string
        quoteAssetSerialID:
          description: >-
            The numeric serial identifier of the quote currency, used by market
            data services.
          format: int64
          nullable: true
          type: integer
        quoteCurrency:
          description: The currency the contract is quoted in.
          nullable: true
          type: string
        settleAssetSerialID:
          description: >-
            The numeric serial identifier of the settlement currency, used by
            market data services. It is what distinguishes an exchange's linear
            and inverse perpetuals on the same pair.
          format: int64
          nullable: true
          type: integer
        settleCurrency:
          description: The currency the contract settles in.
          nullable: true
          type: string
        slug:
          description: >-
            The exchange's slug, shared by every market on that exchange
            (gate-io, crypto-com).
          nullable: true
          type: string
        symbol:
          description: The exchange-native contract symbol.
          nullable: true
          type: string
        symbolNormalized:
          description: The normalized contract symbol, where the exchange provides one.
          nullable: true
          type: string
      type: object
    ErrorResponse:
      properties:
        data:
          description: Always null on an error.
          nullable: true
          type: object
        error:
          description: What went wrong, in one sentence.
          type: string
      required:
        - error
        - data
      type: object
  securitySchemes:
    apiKey:
      description: >-
        API key sent in the `X-Blockworks-API-Key` header; `x-messari-api-key`
        is accepted for existing integrations. The catalog endpoints and models
        on the public access tier need no key.
      in: header
      name: X-Blockworks-API-Key
      type: apiKey

````