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

# List Markets

> Query markets with filtering, sorting, and cursor-based pagination

Fetch Polymarket prediction markets with filtering, sorting, and pagination.

<Tip>**Free & Unlimited.** This endpoint does not count toward your monthly usage limits on any plan.</Tip>

### Pagination

This endpoint uses cursor-based (keyset) pagination, which stays stable for large backfills and long-running crawls and does not return a `total` count. To fetch the next page, pass the returned `pagination.pagination_key` as the next request's `pagination_key`, keeping the same filter and sort parameters across pages.

| Constraint       | Value                                      |
| ---------------- | ------------------------------------------ |
| `limit`          | 1–100 (default 20)                         |
| `pagination_key` | Cursor returned from the previous response |


## OpenAPI

````yaml GET /v2/polymarket/markets/keyset
openapi: 3.1.0
info:
  title: Predexon API
  description: Prediction market data aggregation and matching API
  version: 2.0.0
servers:
  - url: https://api.predexon.com
security:
  - apiKey: []
paths:
  /v2/polymarket/markets/keyset:
    get:
      tags:
        - polymarket
      summary: Get Markets
      description: |-
        List markets with filtering and sorting.

        Consolidates active and closed markets into a single endpoint.
        Use status=open for active markets only.

        Rolling metrics (volume_1d/7d/30d, trades, OI) are refreshed hourly.
      operationId: get_markets_v2_polymarket_markets_keyset_get
      parameters:
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/StatusOption'
              - type: 'null'
            description: 'Filter by status: open or closed'
            title: Status
          description: 'Filter by status: open or closed'
        - name: min_price
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                maximum: 1
                minimum: 0
              - type: 'null'
            description: Minimum price
            title: Min Price
          description: Minimum price
        - name: max_price
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                maximum: 1
                minimum: 0
              - type: 'null'
            description: Maximum price
            title: Max Price
          description: Maximum price
        - name: min_open_interest
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                minimum: 0
              - type: 'null'
            description: Minimum open interest (USD)
            title: Min Open Interest
          description: Minimum open interest (USD)
        - name: min_volume
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                minimum: 0
              - type: 'null'
            description: Minimum volume (USD)
            title: Min Volume
          description: Minimum volume (USD)
        - name: tags
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by tag(s)
            title: Tags
          description: Filter by tag(s)
        - name: event_slug
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by event slug(s)
            title: Event Slug
          description: Filter by event slug(s)
        - name: search
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                minLength: 3
                maxLength: 100
              - type: 'null'
            description: Search in title (minimum 3 characters)
            title: Search
          description: Search in title (minimum 3 characters)
        - name: condition_id
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by condition ID(s)
            title: Condition Id
          description: Filter by condition ID(s)
        - name: question_id
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by question ID(s)
            title: Question Id
          description: Filter by question ID(s)
        - name: market_id
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by market ID(s)
            title: Market Id
          description: Filter by market ID(s)
        - name: market_slug
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by market slug(s)
            title: Market Slug
          description: Filter by market slug(s)
        - name: token_id
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by token ID(s) - matches either side_a or side_b
            title: Token Id
          description: Filter by token ID(s) - matches either side_a or side_b
        - name: predexon_id
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                maxItems: 50
              - type: 'null'
            description: Filter by predexon ID(s) - matches either side_a or side_b
            title: Predexon Id
          description: Filter by predexon ID(s) - matches either side_a or side_b
        - name: end_after
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                minimum: 0
              - type: 'null'
            description: Filter to markets ending after this Unix timestamp
            title: End After
          description: Filter to markets ending after this Unix timestamp
        - name: end_before
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                minimum: 0
              - type: 'null'
            description: Filter to markets ending at or before this Unix timestamp
            title: End Before
          description: Filter to markets ending at or before this Unix timestamp
        - name: sort
          in: query
          required: false
          schema:
            $ref: >-
              #/components/schemas/app__api__v1__polymarket__markets_list__SortOption
            description: Sort by
            default: volume
          description: Sort by
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            description: Number of markets to return
            default: 20
            title: Limit
          description: Number of markets to return
        - name: pagination_key
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Cursor returned from the previous response
            title: Pagination Key
          description: Cursor returned from the previous response
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            description: >-
              Deprecated. Offset pagination has been removed; only 0 is
              accepted.
            default: 0
            title: Offset
          description: Deprecated. Offset pagination has been removed; only 0 is accepted.
          deprecated: true
        - name: min_volume_1d
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                minimum: 0
              - type: 'null'
            description: Minimum rolling 1-day volume (USD)
            title: Min Volume 1D
          description: Minimum rolling 1-day volume (USD)
        - name: min_volume_7d
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                minimum: 0
              - type: 'null'
            description: Minimum rolling 7-day volume (USD)
            title: Min Volume 7D
          description: Minimum rolling 7-day volume (USD)
        - name: min_volume_30d
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                minimum: 0
              - type: 'null'
            description: Minimum rolling 30-day volume (USD)
            title: Min Volume 30D
          description: Minimum rolling 30-day volume (USD)
        - name: min_trades_1d
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                minimum: 0
              - type: 'null'
            description: Minimum rolling 1-day trade count
            title: Min Trades 1D
          description: Minimum rolling 1-day trade count
        - name: min_trades_7d
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                minimum: 0
              - type: 'null'
            description: Minimum rolling 7-day trade count
            title: Min Trades 7D
          description: Minimum rolling 7-day trade count
        - name: min_trades_30d
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                minimum: 0
              - type: 'null'
            description: Minimum rolling 30-day trade count
            title: Min Trades 30D
          description: Minimum rolling 30-day trade count
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolymarketMarketsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    StatusOption:
      type: string
      enum:
        - open
        - closed
      title: StatusOption
    app__api__v1__polymarket__markets_list__SortOption:
      type: string
      enum:
        - volume
        - open_interest
        - price_desc
        - price_asc
        - expiration
        - expiration_asc
        - created
        - created_asc
        - relevance
        - volume_1d
        - volume_7d
        - volume_30d
        - trades_1d
        - trades_7d
        - trades_30d
        - oi_change_1d
        - oi_change_7d
        - oi_change_30d
      title: SortOption
    PolymarketMarketsResponse:
      properties:
        markets:
          items:
            $ref: '#/components/schemas/PolymarketMarket'
          type: array
          title: Markets
        pagination:
          $ref: '#/components/schemas/CursorPagination'
      type: object
      required:
        - markets
        - pagination
      title: PolymarketMarketsResponse
      description: Response for Polymarket markets list endpoint.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PolymarketMarket:
      properties:
        condition_id:
          type: string
          title: Condition Id
        question_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Question Id
        market_id:
          type: string
          title: Market Id
        market_slug:
          type: string
          title: Market Slug
        title:
          type: string
          title: Title
        description:
          type: string
          title: Description
          default: ''
        status:
          type: string
          title: Status
        winning_side:
          anyOf:
            - type: string
            - type: 'null'
          title: Winning Side
        start_time:
          anyOf:
            - type: string
            - type: 'null'
          title: Start Time
          description: ISO 8601 timestamp
        end_time:
          anyOf:
            - type: string
            - type: 'null'
          title: End Time
          description: ISO 8601 timestamp
        close_time:
          anyOf:
            - type: string
            - type: 'null'
          title: Close Time
          description: ISO 8601 timestamp
        created_time:
          anyOf:
            - type: string
            - type: 'null'
          title: Created Time
          description: ISO 8601 timestamp
        image_url:
          type: string
          title: Image Url
          default: ''
        event_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Event Id
        event_slug:
          anyOf:
            - type: string
            - type: 'null'
          title: Event Slug
        event_title:
          anyOf:
            - type: string
            - type: 'null'
          title: Event Title
        outcomes:
          items:
            $ref: '#/components/schemas/PolymarketOutcome'
          type: array
          title: Outcomes
        total_volume_usd:
          type: number
          title: Total Volume Usd
          default: 0
        liquidity_usd:
          type: number
          title: Liquidity Usd
          default: 0
        tags:
          items:
            type: string
          type: array
          title: Tags
        is_neg_risk:
          type: boolean
          title: Is Neg Risk
          default: false
        rolling_metrics:
          anyOf:
            - $ref: '#/components/schemas/MarketRollingMetrics'
            - type: 'null'
          description: Rolling window metrics (1D/7D/30D) from hourly cron refresh
      type: object
      required:
        - condition_id
        - market_id
        - market_slug
        - title
        - status
        - outcomes
      title: PolymarketMarket
      description: Polymarket market in list response.
    CursorPagination:
      properties:
        limit:
          type: integer
          title: Limit
          description: Requested limit
        count:
          type: integer
          title: Count
          description: Number of items in current response
        pagination_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Pagination Key
          description: Base64-encoded cursor for next page
        has_more:
          type: boolean
          title: Has More
          description: Whether there are more items available
      type: object
      required:
        - limit
        - count
        - has_more
      title: CursorPagination
      description: Cursor-based pagination for endpoints that don't support offset.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    PolymarketOutcome:
      properties:
        label:
          type: string
          title: Label
        token_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Token Id
        predexon_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Predexon Id
        price:
          anyOf:
            - type: number
            - type: 'null'
          title: Price
      type: object
      required:
        - label
      title: PolymarketOutcome
      description: Outcome for a Polymarket market.
    MarketRollingMetrics:
      properties:
        volume_1d:
          type: number
          title: Volume 1D
          description: Volume in USD over last 24 hours
          default: 0
        volume_7d:
          type: number
          title: Volume 7D
          description: Volume in USD over last 7 days
          default: 0
        volume_30d:
          type: number
          title: Volume 30D
          description: Volume in USD over last 30 days
          default: 0
        buy_volume_1d:
          type: number
          title: Buy Volume 1D
          description: Buy volume (USD) last 24h
          default: 0
        buy_volume_7d:
          type: number
          title: Buy Volume 7D
          description: Buy volume (USD) last 7d
          default: 0
        buy_volume_30d:
          type: number
          title: Buy Volume 30D
          description: Buy volume (USD) last 30d
          default: 0
        sell_volume_1d:
          type: number
          title: Sell Volume 1D
          description: Sell volume (USD) last 24h
          default: 0
        sell_volume_7d:
          type: number
          title: Sell Volume 7D
          description: Sell volume (USD) last 7d
          default: 0
        sell_volume_30d:
          type: number
          title: Sell Volume 30D
          description: Sell volume (USD) last 30d
          default: 0
        trades_1d:
          type: integer
          title: Trades 1D
          description: Trade count last 24h
          default: 0
        trades_7d:
          type: integer
          title: Trades 7D
          description: Trade count last 7d
          default: 0
        trades_30d:
          type: integer
          title: Trades 30D
          description: Trade count last 30d
          default: 0
        buys_1d:
          type: integer
          title: Buys 1D
          description: Buy trades last 24h
          default: 0
        buys_7d:
          type: integer
          title: Buys 7D
          description: Buy trades last 7d
          default: 0
        buys_30d:
          type: integer
          title: Buys 30D
          description: Buy trades last 30d
          default: 0
        sells_1d:
          type: integer
          title: Sells 1D
          description: Sell trades last 24h
          default: 0
        sells_7d:
          type: integer
          title: Sells 7D
          description: Sell trades last 7d
          default: 0
        sells_30d:
          type: integer
          title: Sells 30D
          description: Sell trades last 30d
          default: 0
        oi_change_1d:
          type: number
          title: Oi Change 1D
          description: OI change over last 24h (USD)
          default: 0
        oi_change_7d:
          type: number
          title: Oi Change 7D
          description: OI change over last 7d (USD)
          default: 0
        oi_change_30d:
          type: number
          title: Oi Change 30D
          description: OI change over last 30d (USD)
          default: 0
        computed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Computed At
          description: ISO 8601 timestamp when metrics were last computed
      type: object
      title: MarketRollingMetrics
      description: >-
        Rolling window metrics from market_metrics_summary (hourly cron
        refresh).
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````