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

# Market Screener

> Market Screener

 Single-call aggregate of per-pair market stats across all trading pairs.
 Returns current price plus quote-volume and percent price change for
 1h / 24h / 7d windows, and a 7-point UTC-day snapshot for sparkline
 rendering. Window fields are independently null when a pair lacks
 sufficient history. Results sorted by quoteVolume24h descending
 (nulls last) and paginated.



## OpenAPI

````yaml /proto-openapi/api/openapi.yaml get /api/v1/market/screener
openapi: 3.0.3
info:
  title: Monaco Protocol API
  description: REST API for the Monaco Protocol hybrid CLOB exchange.
  version: 1.0.0
servers:
  - url: https://staging.apimonaco.xyz
    description: Staging server (Testnet)
security: []
tags:
  - name: AccountsService
  - name: ApplicationsService
  - name: AuthService
  - name: BuildercodeRewardsService
  - name: CopyTradingService
  - name: DelegatedAgentsService
  - name: FaucetService
  - name: FeesService
  - name: HealthService
  - name: ManagedMarketsService
    description: |-
      Wallet-authenticated maker assignments. The signed session must match both
       configured maker user and application. Owner IDs are process fences, never auth.
       Only wallet sessions are supported; delegated-agent sessions receive 403.
  - name: MarginAccountsService
    description: |-
      Current public isolated-margin semantics:
       - a user has one parent margin account per application scope
       - opening orders create or reuse isolated position buckets under that parent
       - parent account creation is handled internally by margin workflows
  - name: MarketService
  - name: OrderbookService
  - name: OrdersService
  - name: PositionsService
    description: |-
      Current public isolated-margin semantics:
       - positions link to a parent margin account and, when applicable, a bucket id
       - opening orders create or reuse isolated position buckets under the parent
       - users can open another isolated position by reusing the parent account with a different market bucket
  - name: PulseService
  - name: SweeperService
  - name: TraderCodeService
  - name: TradesService
  - name: WhitelistService
  - name: WithdrawalsService
paths:
  /api/v1/market/screener:
    get:
      tags:
        - MarketService
        - Market
      summary: Market Screener
      description: |-
        Market Screener

         Single-call aggregate of per-pair market stats across all trading pairs.
         Returns current price plus quote-volume and percent price change for
         1h / 24h / 7d windows, and a 7-point UTC-day snapshot for sparkline
         rendering. Window fields are independently null when a pair lacks
         sufficient history. Results sorted by quoteVolume24h descending
         (nulls last) and paginated.
      operationId: get_screener
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: uint32
            minimum: 1
            maximum: 10000
          description: Page number (1-indexed)
        - name: pageSize
          in: query
          schema:
            type: integer
            format: uint32
            minimum: 1
            maximum: 100
            default: 50
          description: Items per page (max 100)
        - name: marketType
          in: query
          schema:
            type: string
            enum:
              - SPOT
              - MARGIN
            minLength: 1
          description: Filter by market type
        - name: isActive
          in: query
          schema:
            type: boolean
        - name: category
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetScreenerResponse'
        '400':
          description: Invalid query parameter (page, pageSize, marketType)
        '500':
          description: Internal server error
components:
  schemas:
    GetScreenerResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ScreenerItem'
          nullable: true
        page:
          example: 1
          type: integer
          description: Current page number
          format: uint32
          nullable: true
        pageSize:
          example: 50
          type: integer
          description: Items per page
          format: uint32
          nullable: true
        total:
          example: 37
          type: integer
          description: Total number of trading pairs after filtering
          format: uint32
          nullable: true
        totalPages:
          example: 1
          type: integer
          description: Total number of pages
          format: uint32
          nullable: true
      description: Paginated screener response sorted by quoteVolume24h desc (nulls last).
    ScreenerItem:
      type: object
      properties:
        tradingPairId:
          example: 123e4567-e89b-12d3-a456-426614174000
          type: string
          description: Trading pair UUID
          format: uuid
          nullable: true
        symbol:
          example: BTC/USDC
          type: string
          description: Trading pair symbol
          nullable: true
        baseIconUrl:
          example: https://assets.0xmonaco.com/icons/btc.svg
          type: string
          description: URL for the base token icon
          nullable: true
        quoteIconUrl:
          example: https://assets.0xmonaco.com/icons/usdc.svg
          type: string
          description: URL for the quote token icon
          nullable: true
        lastPrice:
          example: '95432.50'
          type: string
          description: Most recent close price
          nullable: true
        lastPriceTimestamp:
          example: '1745308800000'
          type: string
          description: Timestamp of the last candle (ms since epoch)
          nullable: true
        quoteVolume1h:
          example: '1178245.32'
          type: string
          description: Quote-token volume in the last 1 hour
          nullable: true
        quoteVolume24h:
          example: '117845632.18'
          type: string
          description: Quote-token volume in the last 24 hours
          nullable: true
        quoteVolume7d:
          example: '851234109.44'
          type: string
          description: Quote-token volume in the last 7 days
          nullable: true
        priceChangePercent1h:
          example: '0.42'
          type: string
          description: Percent price change over the last 1 hour
          nullable: true
        priceChangePercent24h:
          example: '1.31'
          type: string
          description: Percent price change over the last 24 hours
          nullable: true
        priceChangePercent7d:
          example: '-3.87'
          type: string
          description: Percent price change over the last 7 days
          nullable: true
        snapshot7d:
          type: array
          items:
            $ref: '#/components/schemas/ScreenerSnapshotPoint'
          description: Up to 7 UTC-day buckets (oldest first); empty when <1 day of history
          nullable: true
        category:
          example: crypto
          type: string
          description: 'Asset-class category: crypto, equities, commodities, or fx'
          nullable: true
        totalQuoteVolumeLtd:
          example: '9123456789.50'
          type: string
          description: >-
            Life-to-date cumulative quote-token volume (since market inception);
            "0" for a pair with no trades yet
          nullable: true
        totalTradeCountLtd:
          example: 482931
          type: integer
          description: >-
            Life-to-date cumulative number of trades (since market inception); 0
            for a pair with no trades yet
          format: int64
          nullable: true
        latestFundingRate:
          example: '0.000125'
          type: string
          description: >-
            Latest settled funding rate as a decimal fraction per funding window
            (the capped settled value); null for spot pairs and margin pairs
            with no settled funding window yet
          nullable: true
        lastFundingTime:
          example: '1745308800000'
          type: string
          description: >-
            Close time of the latest settled funding window (ms since epoch);
            null for spot pairs and margin pairs with no settled funding window
            yet
          nullable: true
        openInterestBase:
          example: '12345.67'
          type: string
          description: >-
            Gross open interest (longs plus shorts) in base-asset units (e.g.
            BTC); null for spot pairs, "0" for a margin pair with no open
            positions
          nullable: true
        openInterestNotional:
          example: '1172836500.00'
          type: string
          description: >-
            Gross open-interest notional (longs plus shorts) in quote units
            (openInterestBase x latest trade price); null for spot pairs. Valued
            at the pair's latest trade price (a snapshot); the mark-accurate
            notional lives on getPerpMarketSummary / getOpenInterest
          nullable: true
        openInterestNotionalAvg1h:
          example: '1172836500.00'
          type: string
          description: >-
            Arithmetic mean of the valued gross open-interest notional
            observations (one per completed UTC minute) over the last 60
            completed minutes ending at floor(now to minute); published once at
            least 95% of those minutes (57) carry a valued sample. Null for spot
            pairs or below that coverage; a minute without a trade price is
            unvalued, never zero; known zero is "0". Each sample is gross open
            position size x latest trade price in quote units. No historical
            backfill; this window warms after deployment.
          nullable: true
        openInterestNotionalAvg24h:
          example: '1172836500.00'
          type: string
          description: >-
            Arithmetic mean of the valued gross open-interest notional
            observations (one per completed UTC minute) over the last 1440
            completed minutes ending at floor(now to minute); published once at
            least 95% of those minutes (1368) carry a valued sample. Null for
            spot pairs or below that coverage; a minute without a trade price is
            unvalued, never zero; known zero is "0". Each sample is gross open
            position size x latest trade price in quote units. No historical
            backfill; this window warms after deployment.
          nullable: true
        openInterestNotionalAvg7d:
          example: '1172836500.00'
          type: string
          description: >-
            Arithmetic mean of the valued gross open-interest notional
            observations (one per completed UTC minute) over the last 10080
            completed minutes ending at floor(now to minute); published once at
            least 95% of those minutes (9576) carry a valued sample. Null for
            spot pairs or below that coverage; a minute without a trade price is
            unvalued, never zero; known zero is "0". Each sample is gross open
            position size x latest trade price in quote units. No historical
            backfill; this window warms after deployment.
          nullable: true
        estimatedNextFundingRate:
          example: '0.00012'
          type: string
          description: >-
            Estimated rate for the in-progress funding window, the same value as
            getFundingState / getPerpMarketSummary estimatedNextFundingRate (a
            decimal fraction per funding window). An estimate refreshed on each
            accepted premium sample, not a real-time stream. A window that ends
            with too few accepted samples settles at the previous settled rate
            instead (0 for a market that has never settled one), so the settled
            rate can differ from this estimate. Null for spot pairs and margin
            pairs whose current window has no samples yet
          nullable: true
      description: Per-pair screener row. Window fields null when insufficient history.
    ScreenerSnapshotPoint:
      type: object
      properties:
        bucketStart:
          example: '1744704000000'
          type: string
          description: UTC day boundary (ms since epoch)
          nullable: true
        quoteVolume:
          example: '105204321.11'
          type: string
          description: Quote-token volume for the day
          nullable: true
        priceChangePercent:
          example: '0.85'
          type: string
          description: Percent price change (close - open) / open * 100 for the day
          nullable: true
        openInterestNotionalAvg:
          example: '1172836500.00'
          type: string
          description: >-
            Arithmetic mean of the valued gross open-interest notional
            observations (one per completed UTC minute) in this completed UTC
            day; published once at least 95% of its 1440 minutes (1368) carry a
            valued sample, null for spot pairs or below that coverage. Samples
            use gross open position size x latest trade price in quote units; a
            minute without a trade price is unvalued, never zero; known zero
            remains "0". No historical backfill.
          nullable: true
      description: One UTC-day bucket in a pair's 7-day snapshot.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.