> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.paradex.trade/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.paradex.trade/_mcp/server.

# List available markets

GET https://api.prod.paradex.trade/v1/markets

Get markets static data component


Reference: https://docs.paradex.trade/api/prod/markets/get-markets

## Request

### Query parameters

- `market` (string, optional) — Market Name - example: BTC-USD-PERP

## Response

### 200

OK

- `results` (list of responses.MarketResp, optional) — Array of results

## Errors

### 404 Not Found Error

Not Found

- `data` (ResponsesApiErrorData, optional) — any additional data related to the error
- `error` (enum, optional) — unique immutable string identifier for specific error
  - Allowed values: `VALIDATION_ERROR`, `BINDING_ERROR`, `INTERNAL_ERROR`, `NOT_FOUND`, `SERVICE_UNAVAILABLE`, `INVALID_REQUEST_PARAMETER`, `ORDER_ID_NOT_FOUND`, `ORDER_IS_CLOSED`, `ORDER_IS_NOT_OPEN`, `INVALID_ORDER_SIZE`, `CLIENT_ORDER_ID_NOT_FOUND`, `DUPLICATED_CLIENT_ID`, `INVALID_SYMBOL`, `INVALID_TOKEN`, `INVALID_ETHEREUM_ADDRESS`, `INVALID_ETHEREUM_SIGNATURE`, `INVALID_STARKNET_ADDRESS`, `INVALID_STARKNET_SIGNATURE`, `STARKNET_SIGNATURE_VERIFICATION_FAILED`, `ETHEREUM_SIGNER_MISMATCH`, `ETHEREUM_HASH_MISMATCH`, `NOT_ONBOARDED`, `INVALID_TIMESTAMP`, `INVALID_BLOCK_EXPIRATION`, `ACCOUNT_NOT_FOUND`, `MEDIA_NOT_FOUND`, `INVALID_ORDER_SIGNATURE`, `PUBLIC_KEY_INVALID`, `UNAUTHORIZED_ETHEREUM_ADDRESS`, `UNAUTHORIZED_ERROR`, `ETHEREUM_ADDRESS_ALREADY_ONBOARDED`, `EVM_ADDRESS_ALREADY_ONBOARDED`, `MARKET_NOT_FOUND`, `ALLOWLIST_ENTRY_NOT_FOUND`, `USERNAME_IN_USE`, `GEO_IP_BLOCK`, `ETHEREUM_ADDRESS_BLOCKED`, `PROGRAM_NOT_FOUND`, `PROGRAM_NOT_SUPPORTED`, `INVALID_DASHBOARD`, `MARKET_NOT_OPEN`, `MARKET_NOT_SETTLED`, `INVALID_REFERRAL_CODE`, `REQUEST_NOT_ALLOWED`, `PARENT_ADDRESS_ALREADY_ONBOARDED`, `INVALID_PARENT_ACCOUNT`, `INVALID_VAULT_OPERATOR_CHAIN`, `VAULT_OPERATOR_ALREADY_ONBOARDED`, `VAULT_NAME_IN_USE`, `VAULT_NOT_FOUND`, `VAULT_STRATEGY_NOT_FOUND`, `VAULT_LIMIT_REACHED`, `VAULT_DATA_PRIVATE`, `BATCH_SIZE_OUT_OF_RANGE`, `ISOLATED_MARKET_ACCOUNT_MISMATCH`, `NO_ACCESS_TO_MARKET`, `POINTS_SUMMARY_NOT_FOUND`, `ALGO_ID_NOT_FOUND`, `INVALID_DERIVATION_PATH`, `PROFILE_STATS_NOT_FOUND`, `INVALID_CHAIN`, `INVALID_LAYERSWAP_SWAP`, `SOCIAL_USERNAME_IN_USE`, `INVALID_OAUTH_REQUEST`, `RPI_ACCOUNT_NOT_WHITELISTED`, `SYSTEM_STATUS_POST_ONLY`, `SYSTEM_STATUS_CANCEL_ONLY`, `INVALID_MARKETING_CODE`, `OFFER_NOT_FOUND`, `MARKET_MARGIN_RESTRICTED`, `NOT_UNIQUE`, `ACCOUNT_ALREADY_REFERRED`, `ONBOARDING_PERIOD_EXPIRED`, `ONBOARDING_RATE_LIMITED`, `SUBACCOUNTS_LIMIT_EXCEEDED`, `INSUFFICIENT_MIN_CHAIN_BALANCE`, `INSUFFICIENT_EVM_BALANCE`, `PORTFOLIO_MARGIN_ONBOARDING_DISABLED`, `PORTFOLIO_MARGIN_INVALID_ACCOUNT_KIND`, `EVM_VAULT_OPERATORS_DISABLED`, `INVALID_EVM_SIGNATURE`, `EVM_SIGNATURE_VERIFICATION_FAILED`, `INVALID_SUBKEY`, `SUBKEY_NOT_ACTIVATABLE`, `TOKEN_LIMIT_REACHED`, `INVALID_TOKEN_SCOPE`, `IP_NOT_ALLOWED`, `INSUFFICIENT_TRANSFERRABLE_XP`, `TRANSFER_LIMIT_REACHED`, `XP_TRANSFERS_DISABLED`, `BLOCK_TRADE_NOT_FOUND`, `BLOCK_TRADE_NOT_ENABLED`, `BLOCK_TRADE_EXPIRED`, `BLOCK_TRADE_ALREADY_CANCELLED`, `BLOCK_TRADE_INVALID_STATUS`, `BLOCK_TRADE_UNAUTHORIZED`, `BLOCK_TRADE_MISSING_TRADES`, `BLOCK_TRADE_MISSING_SIGNERS`, `BLOCK_TRADE_MISSING_SIGNATURE`, `BLOCK_TRADE_ACCOUNT_MISMATCH`, `BLOCK_TRADE_INVALID_SIGNATURE`, `BLOCK_TRADE_SIGNER_KEY_UNAUTHORIZED`, `BLOCK_TRADE_REPLAYED_SIGNATURE`, `BLOCK_TRADE_SELF_TRADE`, `OFFER_ALREADY_CANCELLED`, `OFFER_INVALID_STATUS`, `OFFER_UNAUTHORIZED`, `OFFER_PARENT_MISMATCH`, `OFFER_PARENT_NOT_ACCEPTING`, `PORTFOLIO_MARGIN_CONFIG_NOT_FOUND`, `MARGIN_CONFIG_NOT_FOUND`, `MMP_CONFIG_INVALID`, `MMP_NOT_ENABLED`, `MMP_MIN_FREEZE_NOT_ELAPSED`, `MMP_NOT_CONFIGURED`
- `message` (string, optional) — detailed description of error and how to address it

## Types

### responses.MarketResp

- `asset_kind` (enum, optional) — Type of asset
  - Allowed values: `PERP`, `PERP_OPTION`, `SPOT`, `OPTION`, `FUTURE`
- `base_currency` (string, optional) — Base currency of the market
- `clamp_rate` (string, optional) — Clamp rate
- `delta1_cross_margin_params` (responses.Delta1CrossMarginParams, optional) — Delta1 Cross margin parameters
- `expiry_at` (integer, optional) — Market expiry time
- `fee_config` (responses.MarketFeeConfig, optional) — Fee config indicates override fee for the market. If not set, it will use the global exchange fee config
- `funding_multiplier` (double, optional) — Funding multiplier
- `funding_period_hours` (double, optional) — Funding period in hours
- `interest_rate` (string, optional) — Interest rate
- `iv_bands_width` (string, optional) — IV Bands Width
- `market_kind` (enum, optional) — Market's margin mode
  - Allowed values: ``, `cross`, `isolated`, `isolated_margin`
- `max_funding_rate` (string, optional) — Max funding rate
- `max_funding_rate_change` (string, optional) — Max funding rate change
- `max_open_orders` (integer, optional) — Max open orders
- `max_order_size` (string, optional) — Maximum order size in base currency
- `max_slippage` (string, optional) — Default max slippage allowed for the market
- `max_tob_spread` (string, optional) — The maximum TOB spread allowed to apply funding rate changes
- `min_notional` (string, optional) — Minimum order notional in USD. For futures: size*mark_price, for options: size*spot_price
- `open_at` (integer, optional) — Market open time in milliseconds
- `option_cross_margin_params` (responses.OptionCrossMarginParams, optional) — Option Cross margin parameters
- `option_spread_margin_params` (responses.OptionSpreadMarginParams, optional) — Same-expiry option spread offset scales
- `option_type` (enum, optional) — Type of option
  - Allowed values: `PUT`, `CALL`
- `oracle_ewma_factor` (string, optional) — Oracle EWMA factor
- `order_size_increment` (string, optional) — Minimum size increment for base currency
- `position_limit` (string, optional) — Position limit in base currency
- `price_bands_width` (string, optional) — Price Bands Width, 0.05 means 5% price deviation allowed from mark price
- `price_feed_id` (string, optional) — Price feed id. Pyth price account used to price underlying asset
- `price_tick_size` (string, optional) — Minimum price increment of the market in USD
- `quote_currency` (string, optional) — Quote currency of the market
- `settlement_currency` (string, optional) — Settlement currency of the market
- `strike_price` (string, optional) — Strike price for option market
- `symbol` (string, optional) — Market symbol
- `tags` (list of string, optional) — Market tags
- `trading_mode` (enum, optional) — Order-entry mode. STANDARD accepts on-book orders; RFQ_ONLY rejects them and accepts only block-trade legs from RFQ settlement.
  - Allowed values: `STANDARD`, `RFQ_ONLY`

### ResponsesApiErrorData

any additional data related to the error

### responses.Delta1CrossMarginParams

- `imf_base` (string, optional) — Initial Margin Base
- `imf_factor` (string, optional) — Initial Margin Factor, always 0.
- `imf_shift` (string, optional) — Initial Margin Shift, unused, always 0.
- `mmf_factor` (string, optional) — Maintenance Margin Factor

### responses.MarketFeeConfig

- `api_fee` (responses.MakerTakerFee, optional) — fee for order coming from API
- `interactive_fee` (responses.MakerTakerFee, optional) — fee for order coming from UI
- `rpi_fee` (responses.MakerTakerFee, optional) — fee for order coming from API with RPI instruction

### responses.OptionCrossMarginParams

- `imf` (responses.OptionMarginParams, optional)
- `mmf` (responses.OptionMarginParams, optional)

### responses.OptionSpreadMarginParams

- `unpaired_scale_im` (string, optional) — Initial-margin scale on the unpaired short call reserve
- `unpaired_scale_mm` (string, optional) — Maintenance-margin scale on the unpaired short call reserve

### responses.MakerTakerFee

- `maker_fee` (responses.FeeWithCap, optional) — fee for maker
- `taker_fee` (responses.FeeWithCap, optional) — fee for taker

### responses.OptionMarginParams

- `long_itm` (string, optional) — Margin fraction for long ITM options
- `premium_multiplier` (string, optional) — Multiplier for margin fraction for premium
- `short_itm` (string, optional) — Margin fraction for short ITM options
- `short_otm` (string, optional) — Margin fraction for short OTM options
- `short_put_cap` (string, optional) — Cap for margin fraction for short put options

### responses.FeeWithCap

- `fee` (string, optional) — fee rate
- `fee_cap` (string, optional) — fee cap (used for option)
- `fee_floor` (string, optional) — fee floor (used for option)

## Examples

**Response**

```json
{
  "results": [
    {
      "asset_kind": "PERP",
      "base_currency": "ETH",
      "clamp_rate": "0.05",
      "delta1_cross_margin_params": {
        "imf_base": "0.11",
        "imf_factor": "0",
        "imf_shift": "0",
        "mmf_factor": "0.51"
      },
      "expiry_at": 0,
      "fee_config": {
        "api_fee": {
          "maker_fee": {
            "fee": "0.0003",
            "fee_cap": "0.5",
            "fee_floor": "-0.5"
          },
          "taker_fee": {
            "fee": "0.0003",
            "fee_cap": "0.5",
            "fee_floor": "-0.5"
          }
        },
        "interactive_fee": {
          "maker_fee": {
            "fee": "0.0003",
            "fee_cap": "0.5",
            "fee_floor": "-0.5"
          },
          "taker_fee": {
            "fee": "0.0003",
            "fee_cap": "0.5",
            "fee_floor": "-0.5"
          }
        },
        "rpi_fee": {
          "maker_fee": {
            "fee": "0.0003",
            "fee_cap": "0.5",
            "fee_floor": "-0.5"
          },
          "taker_fee": {
            "fee": "0.0003",
            "fee_cap": "0.5",
            "fee_floor": "-0.5"
          }
        }
      },
      "funding_multiplier": 1,
      "funding_period_hours": 8,
      "interest_rate": "0.01",
      "iv_bands_width": "0.05",
      "market_kind": "cross",
      "max_funding_rate": "0.05",
      "max_funding_rate_change": "0.0005",
      "max_open_orders": 100,
      "max_order_size": "100",
      "max_slippage": "0.05",
      "max_tob_spread": "0.2",
      "min_notional": "3",
      "open_at": 0,
      "option_cross_margin_params": {
        "imf": {
          "long_itm": "0.2",
          "premium_multiplier": "1.2",
          "short_itm": "0.4",
          "short_otm": "0.25",
          "short_put_cap": "0.5"
        },
        "mmf": {
          "long_itm": "0.2",
          "premium_multiplier": "1.2",
          "short_itm": "0.4",
          "short_otm": "0.25",
          "short_put_cap": "0.5"
        }
      },
      "option_spread_margin_params": {
        "unpaired_scale_im": "1.0",
        "unpaired_scale_mm": "1.0"
      },
      "option_type": "PUT",
      "oracle_ewma_factor": "0.2",
      "order_size_increment": "0.001",
      "position_limit": "500",
      "price_bands_width": "0.05",
      "price_feed_id": "GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU",
      "price_tick_size": "0.01",
      "quote_currency": "USD",
      "settlement_currency": "USDC",
      "strike_price": "66500",
      "symbol": "ETH-USD-PERP",
      "tags": [
        "MEME",
        "DEFI"
      ],
      "trading_mode": "STANDARD"
    }
  ]
}
```

**SDK Code**

```python
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('https://api.prod.paradex.trade/v1/markets', headers = headers)

print(r.json())

```

```javascript
const headers = {
  'Accept':'application/json'
};

fetch('https://api.prod.paradex.trade/v1/markets',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

```

```go
package main
import (
      "bytes"
      "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.prod.paradex.trade/v1/markets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.prod.paradex.trade/v1/markets")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.prod.paradex.trade/v1/markets")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.prod.paradex.trade/v1/markets');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.prod.paradex.trade/v1/markets");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.prod.paradex.trade/v1/markets")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```