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

# Get Markets

> Filter by market status. Possible values: `unopened`, `open`, `closed`, `settled`. Leave empty to return markets with any status.
 - Only one `status` filter may be supplied at a time.
 - Timestamp filters will be mutually exclusive from other timestamp filters and certain status filters.

 | Compatible Timestamp Filters | Additional Status Filters| Extra Notes |
 |------------------------------|--------------------------|-------------|
 | min_created_ts, max_created_ts | `unopened`, `open`, *empty* | |
 | min_close_ts, max_close_ts | `closed`, *empty* | |
 | min_settled_ts, max_settled_ts | `settled`, *empty* | |
 | min_updated_ts, max_updated_ts | *empty* | Incompatible with all filters besides `mve_filter=exclude`. May be combined with `series_ticker`, which requires `mve_filter=exclude` |

 Markets that settled before the historical cutoff are only available via `GET /historical/markets`. See [Historical Data](https://docs.kalshi.com/getting_started/historical_data) for details.




## OpenAPI

````yaml /openapi.yaml get /markets
openapi: 3.0.0
info:
  title: Kalshi Trade API Manual Endpoints
  version: 3.34.0
  description: >-
    Manually defined OpenAPI spec for endpoints being migrated to spec-first
    approach
servers:
  - url: https://external-api.kalshi.com/trade-api/v2
    description: Production Trade API server
  - url: https://api.elections.kalshi.com/trade-api/v2
    description: Production shared API server, also supported
  - url: https://external-api.demo.kalshi.co/trade-api/v2
    description: Demo Trade API server
  - url: https://demo-api.kalshi.co/trade-api/v2
    description: Demo shared API server, also supported
security: []
tags:
  - name: api-keys
    description: API key management endpoints
  - name: orders
    description: Order management endpoints
  - name: order-groups
    description: Order group management endpoints
  - name: portfolio
    description: Portfolio and balance information endpoints
  - name: communications
    description: Request-for-quote (RFQ) endpoints
  - name: multivariate
    description: Multivariate event collection endpoints
  - name: exchange
    description: Exchange status and information endpoints
  - name: live-data
    description: Live data endpoints
  - name: markets
    description: Market data endpoints
  - name: milestone
    description: Milestone endpoints
  - name: search
    description: Search and filtering endpoints
  - name: incentive-programs
    description: Incentive program endpoints
  - name: fcm
    description: FCM member specific endpoints
  - name: events
    description: Event endpoints
  - name: structured-targets
    description: Structured targets endpoints
paths:
  /markets:
    get:
      tags:
        - market
      summary: Get Markets
      description: >
        Filter by market status. Possible values: `unopened`, `open`, `closed`,
        `settled`. Leave empty to return markets with any status.
         - Only one `status` filter may be supplied at a time.
         - Timestamp filters will be mutually exclusive from other timestamp filters and certain status filters.

         | Compatible Timestamp Filters | Additional Status Filters| Extra Notes |
         |------------------------------|--------------------------|-------------|
         | min_created_ts, max_created_ts | `unopened`, `open`, *empty* | |
         | min_close_ts, max_close_ts | `closed`, *empty* | |
         | min_settled_ts, max_settled_ts | `settled`, *empty* | |
         | min_updated_ts, max_updated_ts | *empty* | Incompatible with all filters besides `mve_filter=exclude`. May be combined with `series_ticker`, which requires `mve_filter=exclude` |

         Markets that settled before the historical cutoff are only available via `GET /historical/markets`. See [Historical Data](https://docs.kalshi.com/getting_started/historical_data) for details.
      operationId: GetMarkets
      parameters:
        - $ref: '#/components/parameters/MarketLimitQuery'
        - $ref: '#/components/parameters/CursorQuery'
        - $ref: '#/components/parameters/SingleEventTickerQuery'
        - $ref: '#/components/parameters/SeriesTickerQuery'
        - $ref: '#/components/parameters/MinCreatedTsQuery'
        - $ref: '#/components/parameters/MaxCreatedTsQuery'
        - $ref: '#/components/parameters/MinUpdatedTsQuery'
        - $ref: '#/components/parameters/MaxUpdatedTsQuery'
        - $ref: '#/components/parameters/MaxCloseTsQuery'
        - $ref: '#/components/parameters/MinCloseTsQuery'
        - $ref: '#/components/parameters/MinSettledTsQuery'
        - $ref: '#/components/parameters/MaxSettledTsQuery'
        - $ref: '#/components/parameters/MarketStatusQuery'
        - $ref: '#/components/parameters/TickersQuery'
        - $ref: '#/components/parameters/MveFilterQuery'
      responses:
        '200':
          description: Markets retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMarketsResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
components:
  parameters:
    MarketLimitQuery:
      name: limit
      in: query
      description: Number of results per page. Defaults to 100. Maximum value is 1000.
      schema:
        type: integer
        format: int64
        minimum: 0
        maximum: 1000
        default: 100
        x-oapi-codegen-extra-tags:
          validate: omitempty,gte=0,lte=1000
    CursorQuery:
      name: cursor
      in: query
      description: >-
        Pagination cursor. Use the cursor value returned from the previous
        response to get the next page of results. Leave empty for the first
        page.
      schema:
        type: string
        x-go-type-skip-optional-pointer: true
    SingleEventTickerQuery:
      name: event_ticker
      in: query
      description: Event ticker to filter by. Only a single event ticker is supported.
      schema:
        type: string
        x-go-type-skip-optional-pointer: true
    SeriesTickerQuery:
      name: series_ticker
      in: query
      description: Filter by series ticker
      schema:
        type: string
        x-go-type-skip-optional-pointer: true
    MinCreatedTsQuery:
      name: min_created_ts
      in: query
      description: Filter items that created after this Unix timestamp
      schema:
        type: integer
        format: int64
    MaxCreatedTsQuery:
      name: max_created_ts
      in: query
      description: Filter items that created before this Unix timestamp
      schema:
        type: integer
        format: int64
    MinUpdatedTsQuery:
      name: min_updated_ts
      in: query
      description: >-
        Return markets with metadata updated later than this Unix timestamp (in
        seconds). Tracks non-trading changes only. May be combined with
        max_updated_ts and mve_filter=exclude. May also be combined with
        series_ticker, which requires mve_filter=exclude. Incompatible with
        other filters.
      schema:
        type: integer
        format: int64
    MaxUpdatedTsQuery:
      name: max_updated_ts
      in: query
      description: >-
        Return markets with metadata updated at or before this Unix timestamp
        (in seconds). Tracks non-trading changes only. May be combined with
        min_updated_ts and mve_filter=exclude. May also be combined with
        series_ticker, which requires mve_filter=exclude. Incompatible with
        other filters.
      schema:
        type: integer
        format: int64
    MaxCloseTsQuery:
      name: max_close_ts
      in: query
      description: Filter items that close before this Unix timestamp
      schema:
        type: integer
        format: int64
    MinCloseTsQuery:
      name: min_close_ts
      in: query
      description: Filter items that close after this Unix timestamp
      schema:
        type: integer
        format: int64
    MinSettledTsQuery:
      name: min_settled_ts
      in: query
      description: Filter items that settled after this Unix timestamp
      schema:
        type: integer
        format: int64
    MaxSettledTsQuery:
      name: max_settled_ts
      in: query
      description: Filter items that settled before this Unix timestamp
      schema:
        type: integer
        format: int64
    MarketStatusQuery:
      name: status
      in: query
      description: Filter by market status. Leave empty to return markets with any status.
      schema:
        type: string
        enum:
          - unopened
          - open
          - paused
          - closed
          - settled
    TickersQuery:
      name: tickers
      in: query
      description: >-
        Filter by specific market tickers. Comma-separated list of market
        tickers to retrieve.
      schema:
        type: string
    MveFilterQuery:
      name: mve_filter
      in: query
      description: >-
        Filter by multivariate events (combos). 'only' returns only multivariate
        events, 'exclude' excludes multivariate events.
      schema:
        type: string
        enum:
          - only
          - exclude
  schemas:
    GetMarketsResponse:
      type: object
      required:
        - markets
        - cursor
      properties:
        markets:
          type: array
          items:
            $ref: '#/components/schemas/Market'
        cursor:
          type: string
    Market:
      type: object
      required:
        - ticker
        - event_ticker
        - market_type
        - yes_sub_title
        - no_sub_title
        - created_time
        - updated_time
        - open_time
        - close_time
        - latest_expiration_time
        - settlement_timer_seconds
        - status
        - notional_value_dollars
        - yes_bid_dollars
        - yes_ask_dollars
        - no_bid_dollars
        - no_ask_dollars
        - yes_bid_size_fp
        - yes_ask_size_fp
        - last_price_dollars
        - previous_yes_bid_dollars
        - previous_yes_ask_dollars
        - previous_price_dollars
        - volume_fp
        - volume_24h_fp
        - open_interest_fp
        - result
        - can_close_early
        - expiration_value
        - rules_primary
        - rules_secondary
        - price_level_structure
        - price_ranges
        - settlement_bounds_type
      properties:
        ticker:
          type: string
        event_ticker:
          type: string
        market_type:
          type: string
          enum:
            - binary
            - scalar
          description: Identifies the type of market
        title:
          type: string
          deprecated: true
          x-go-type-skip-optional-pointer: true
        subtitle:
          type: string
          deprecated: true
          x-go-type-skip-optional-pointer: true
        yes_sub_title:
          type: string
          description: Shortened title for the yes side of this market
        no_sub_title:
          type: string
          description: Shortened title for the no side of this market
        created_time:
          type: string
          format: date-time
        updated_time:
          type: string
          format: date-time
          description: Time of the last non-trading metadata update.
        open_time:
          type: string
          format: date-time
        close_time:
          type: string
          format: date-time
        expected_expiration_time:
          type: string
          format: date-time
          nullable: true
          x-omitempty: true
          description: Time when this market is expected to expire
        expiration_time:
          type: string
          format: date-time
          deprecated: true
          x-go-type-skip-optional-pointer: true
        latest_expiration_time:
          type: string
          format: date-time
          description: Latest possible time for this market to expire
        settlement_timer_seconds:
          type: integer
          description: The amount of time after determination that the market settles
        status:
          type: string
          enum:
            - initialized
            - inactive
            - active
            - closed
            - determined
            - disputed
            - amended
            - finalized
          description: The current status of the market in its lifecycle.
        yes_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the highest YES buy offer on this market in dollars
        yes_bid_size_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: >-
            Total contract size of orders to buy YES at the best bid price
            (fixed-point count string).
        yes_ask_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the lowest YES sell offer on this market in dollars
        yes_ask_size_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: >-
            Total contract size of orders to sell YES at the best ask price
            (fixed-point count string).
        no_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the highest NO buy offer on this market in dollars
        no_ask_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the lowest NO sell offer on this market in dollars
        last_price_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the last traded YES contract on this market in dollars
        volume_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the market volume in contracts
        volume_24h_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the 24h market volume in contracts
        result:
          type: string
          enum:
            - 'yes'
            - 'no'
            - scalar
            - ''
        can_close_early:
          type: boolean
        open_interest_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: >-
            String representation of the number of contracts bought on this
            market disconsidering netting
        notional_value_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: The total value of a single contract at settlement in dollars
        previous_yes_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: >-
            Price for the highest YES buy offer on this market a day ago in
            dollars
        previous_yes_ask_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: >-
            Price for the lowest YES sell offer on this market a day ago in
            dollars
        previous_price_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: >-
            Price for the last traded YES contract on this market a day ago in
            dollars
        settlement_value_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          nullable: true
          x-omitempty: true
          description: >-
            The settlement value of the YES/LONG side of the contract in
            dollars. Only filled after determination
        settlement_ts:
          type: string
          format: date-time
          nullable: true
          x-omitempty: true
          description: >-
            Timestamp when the market was settled. Only filled for settled
            markets
        settlement_bounds_type:
          type: string
          enum:
            - default
            - floor
          description: >-
            Which settlement bounds apply to this market. default means the
            market has no settlement bounds
        settlement_floor_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          nullable: true
          x-omitempty: true
          description: >-
            The lowest value the YES/LONG side of the contract can settle at in
            dollars. Only filled when settlement_bounds_type is floor
        expiration_value:
          type: string
          description: The value that was considered for the settlement
        occurrence_datetime:
          type: string
          format: date-time
          nullable: true
          description: >-
            The recorded datetime when the underlying event occurred, if
            available
        fee_waiver_expiration_time:
          type: string
          format: date-time
          nullable: true
          x-omitempty: true
          description: Time when this market's fee waiver expires
        early_close_condition:
          type: string
          nullable: true
          x-omitempty: true
          description: The condition under which the market can close early
          x-go-type-skip-optional-pointer: true
        strike_type:
          type: string
          enum:
            - greater
            - greater_or_equal
            - less
            - less_or_equal
            - between
            - functional
            - custom
            - structured
          x-omitempty: true
          description: Strike type defines how the market strike is defined and evaluated
          x-go-type-skip-optional-pointer: true
        floor_strike:
          type: number
          format: double
          nullable: true
          x-omitempty: true
          description: Minimum expiration value that leads to a YES settlement
        cap_strike:
          type: number
          format: double
          nullable: true
          x-omitempty: true
          description: Maximum expiration value that leads to a YES settlement
        functional_strike:
          type: string
          nullable: true
          x-omitempty: true
          description: Mapping from expiration values to settlement values
        custom_strike:
          type: object
          nullable: true
          x-omitempty: true
          description: Expiration value for each target that leads to a YES settlement
        rules_primary:
          type: string
          description: A plain language description of the most important market terms
        rules_secondary:
          type: string
          description: A plain language description of secondary market terms
        mve_collection_ticker:
          type: string
          x-omitempty: true
          description: The ticker of the multivariate event collection
          x-go-type-skip-optional-pointer: true
        mve_selected_legs:
          type: array
          x-omitempty: true
          items:
            $ref: '#/components/schemas/MveSelectedLeg'
          x-go-type-skip-optional-pointer: true
        primary_participant_key:
          type: string
          nullable: true
          x-omitempty: true
        price_level_structure:
          type: string
          description: >-
            Price level structure for this market, defining price ranges and
            tick sizes
        price_ranges:
          type: array
          description: Valid price ranges for orders on this market
          items:
            $ref: '#/components/schemas/PriceRange'
        is_provisional:
          type: boolean
          x-omitempty: true
          description: >-
            If true, the market may be removed after determination if there is
            no activity on it
          x-go-type-skip-optional-pointer: true
        exchange_index:
          allOf:
            - $ref: '#/components/schemas/ExchangeIndex'
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
    FixedPointDollars:
      type: string
      description: >-
        Fixed-point US dollar string. Most request fields accept 2-4 decimal
        places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote
        intervals for a given market are constrained by that market's price
        level structure.
      example: '0.5600'
    FixedPointCount:
      type: string
      description: >-
        Fixed-point contract count string (2 decimals, e.g., "10.00"; referred
        to as "fp" in field names). Requests accept 0-2 decimal places (e.g.,
        "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional
        contract values (e.g., "2.50") are supported; the minimum granularity is
        0.01 contracts.
      example: '10.00'
    MveSelectedLeg:
      type: object
      properties:
        event_ticker:
          type: string
          description: Unique identifier for the selected event
          x-go-type-skip-optional-pointer: true
        market_ticker:
          type: string
          description: Unique identifier for the selected market
          x-go-type-skip-optional-pointer: true
        side:
          type: string
          description: The side of the selected market
          x-go-type-skip-optional-pointer: true
        yes_settlement_value_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          nullable: true
          x-omitempty: true
          description: >-
            The settlement value of the YES/LONG side of the contract in
            dollars. Only filled after determination
    PriceRange:
      type: object
      required:
        - start
        - end
        - step
      properties:
        start:
          type: string
          description: Starting price for this range in dollars
        end:
          type: string
          description: Ending price for this range in dollars
        step:
          type: string
          description: Price step/tick size for this range in dollars
    ExchangeIndex:
      type: integer
      description: Identifier for an exchange shard.
      example: 0

````

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