Browse Active Markets
curl --request GET \
--url https://api.limitless.exchange/markets/activeimport requests
url = "https://api.limitless.exchange/markets/active"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.limitless.exchange/markets/active', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.limitless.exchange/markets/active",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.limitless.exchange/markets/active"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.limitless.exchange/markets/active")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/markets/active")
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{
"data": [
{
"id": 7495,
"address": "0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b",
"conditionId": "0x812f578437dc536def1412e4e593ef310884262c22868b30c1e58582e5f3e9bf",
"title": "DOGE Up or Down - Hourly",
"description": "This market will resolve to \"Up\" if the price of DOGE is above the opening price...",
"collateralToken": {
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6,
"symbol": "USDC"
},
"creator": {
"name": "Limitless",
"imageURI": "https://limitless.exchange/assets/images/logo.svg",
"link": "https://x.com/trylimitless"
},
"prices": [
42.8,
57.2
],
"categories": [
"Hourly"
],
"tags": [
"Lumy",
"Recurring",
"Hourly",
"Simple Mode"
],
"status": "FUNDED",
"expired": false,
"expirationDate": "Sep 1, 2025",
"expirationTimestamp": 1756728000000,
"volume": "164109293",
"volumeFormatted": "164.109293",
"openInterest": "48310707",
"openInterestFormatted": "48.310707",
"liquidity": "50000000",
"liquidityFormatted": "50.000000",
"tradeType": "amm",
"marketType": "single",
"slug": "doge-up-or-down-1-hour-1756724413009",
"feedEvents": [
{
"eventType": "NEW_TRADE",
"timestamp": "2025-09-01T11:30:31.000Z",
"user": {
"id": 7080,
"account": "0xea27f6788F083e6070961d3E52A2e596367E04CC",
"name": "GG",
"rankName": "Bronze",
"points": "0.00000000"
},
"data": {
"title": "DOGE Up or Down - Hourly",
"address": "0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b",
"strategy": "Buy",
"outcome": "Down",
"contracts": "9.071313",
"tradeAmount": "5",
"tradeAmountUSD": "4.999525",
"marketId": 7495
}
}
]
}
],
"totalMarketsCount": 150
}Markets
Browse Active Markets
Retrieves markets and groups that are active and not yet resolved, with optional category filtering
GET
/
markets
/
active
Browse Active Markets
curl --request GET \
--url https://api.limitless.exchange/markets/activeimport requests
url = "https://api.limitless.exchange/markets/active"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.limitless.exchange/markets/active', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.limitless.exchange/markets/active",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.limitless.exchange/markets/active"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.limitless.exchange/markets/active")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/markets/active")
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{
"data": [
{
"id": 7495,
"address": "0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b",
"conditionId": "0x812f578437dc536def1412e4e593ef310884262c22868b30c1e58582e5f3e9bf",
"title": "DOGE Up or Down - Hourly",
"description": "This market will resolve to \"Up\" if the price of DOGE is above the opening price...",
"collateralToken": {
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6,
"symbol": "USDC"
},
"creator": {
"name": "Limitless",
"imageURI": "https://limitless.exchange/assets/images/logo.svg",
"link": "https://x.com/trylimitless"
},
"prices": [
42.8,
57.2
],
"categories": [
"Hourly"
],
"tags": [
"Lumy",
"Recurring",
"Hourly",
"Simple Mode"
],
"status": "FUNDED",
"expired": false,
"expirationDate": "Sep 1, 2025",
"expirationTimestamp": 1756728000000,
"volume": "164109293",
"volumeFormatted": "164.109293",
"openInterest": "48310707",
"openInterestFormatted": "48.310707",
"liquidity": "50000000",
"liquidityFormatted": "50.000000",
"tradeType": "amm",
"marketType": "single",
"slug": "doge-up-or-down-1-hour-1756724413009",
"feedEvents": [
{
"eventType": "NEW_TRADE",
"timestamp": "2025-09-01T11:30:31.000Z",
"user": {
"id": 7080,
"account": "0xea27f6788F083e6070961d3E52A2e596367E04CC",
"name": "GG",
"rankName": "Bronze",
"points": "0.00000000"
},
"data": {
"title": "DOGE Up or Down - Hourly",
"address": "0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b",
"strategy": "Buy",
"outcome": "Down",
"contracts": "9.071313",
"tradeAmount": "5",
"tradeAmountUSD": "4.999525",
"marketId": 7495
}
}
]
}
],
"totalMarketsCount": 150
}For category- and property-based filtering (the structured filters Limitless uses to organize markets), use the Market Pages endpoints. Resolve a page with Get Market Page by Path to read its
baseFilter and filterGroups, then call List Markets for a Page. GET /markets/active returns a flat list with basic filtering.limit is capped at 25. Values above 25 are rejected with 400 (limit must not be greater than 25) — the endpoint never silently truncates. To read more than 25 markets, page with the page parameter; the response’s totalMarketsCount tells you how many are available in total.tradeType filter values. Selects the market’s trading model:amm— Automated market maker. Prices are set algorithmically against a liquidity pool, and you trade directly against the curve.clob— Central limit order book. Independent YES/NO bids and asks match at prices set by makers and takers. Supports market and limit orders. See CLOB Overview.group— Multi-outcome group (also called NegRisk / category markets). Multiple outcomes are bundled and only one can win; the NO shares across outcomes are linked, which makes collateral more efficient. See NegRisk Markets.
automationType filter values. Selects how a market is created and resolved:lumy— Price-oracle-driven markets created by the recurring launch jobs (for example crypto or stock price ladders). Individual markets carry aprice_oracle_id; group markets qualify when any child does. These resolve automatically at the deadline via the oracle (typically Pyth). TheLumycategory tag is a branding label and is not the same signal — always filter byautomationType, not by tag.manual— Markets that are not oracle-driven and not sports/esports fixtures. Resolved by the Limitless team against the criteria on the market page, typically within 24–72 hours of the deadline. See Market Resolution.sports— Sports fixture markets (identified by afixtureIdor the sports event provider). Resolved from the fixture result feed.
includeNextMarket (optional). Opt in to receive the next round of upfront-scheduled markets, such as crypto price ladders that run in back-to-back windows. When true, each affected market includes a navigation.nextMarket object with the successor’s slug, startAt, deadline, and tradable flag. The current market also stays listed briefly during the activation gap, so the series is always represented by exactly one row.Use this when you want to prefetch the next round or open a websocket subscription before the current market expires. Leave it unset for the default listing behavior. Cursor tokens are scoped to this option, so do not switch it mid-pagination.GET /markets/active?includeNextMarket=true
tradable flag is conservative in listings — a successor that has not yet activated reports false. Fetch the successor directly with Get Market before submitting an order.Query Parameters
Page number for pagination
Example:
1
Number of items per page
Example:
10
Sort by query parameter
Filter by trade type (amm, clob, or group)
Available options:
amm, clob, group Filter by automation type (manual, lumy, or sports)
Available options:
manual, lumy, sports Include upfront-scheduled successor navigation
Filter markets by category ID
Response
Active markets and groups with volume and liquidity data
Array of active markets with complete trading data including volume, liquidity, and recent feed events
Example:
[
{
"id": 7495,
"address": "0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b",
"conditionId": "0x812f578437dc536def1412e4e593ef310884262c22868b30c1e58582e5f3e9bf",
"title": "DOGE Up or Down - Hourly",
"description": "This market will resolve to \"Up\" if the price of DOGE is above the opening price...",
"collateralToken": {
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6,
"symbol": "USDC"
},
"creator": {
"name": "Limitless",
"imageURI": "https://limitless.exchange/assets/images/logo.svg",
"link": "https://x.com/trylimitless"
},
"prices": [42.8, 57.2],
"categories": ["Hourly"],
"tags": [
"Lumy",
"Recurring",
"Hourly",
"Simple Mode"
],
"status": "FUNDED",
"expired": false,
"expirationDate": "Sep 1, 2025",
"expirationTimestamp": 1756728000000,
"volume": "164109293",
"volumeFormatted": "164.109293",
"openInterest": "48310707",
"openInterestFormatted": "48.310707",
"liquidity": "50000000",
"liquidityFormatted": "50.000000",
"tradeType": "amm",
"marketType": "single",
"slug": "doge-up-or-down-1-hour-1756724413009",
"feedEvents": [
{
"eventType": "NEW_TRADE",
"timestamp": "2025-09-01T11:30:31.000Z",
"user": {
"id": 7080,
"account": "0xea27f6788F083e6070961d3E52A2e596367E04CC",
"name": "GG",
"rankName": "Bronze",
"points": "0.00000000"
},
"data": {
"title": "DOGE Up or Down - Hourly",
"address": "0x76d3e2098Be66Aa7E15138F467390f0Eb7349B9b",
"strategy": "Buy",
"outcome": "Down",
"contracts": "9.071313",
"tradeAmount": "5",
"tradeAmountUSD": "4.999525",
"marketId": 7495
}
}
]
}
]
Total number of active markets available for pagination
Example:
150