Search markets
curl --request GET \
--url https://api.probsights.com/v1/search/markets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.probsights.com/v1/search/markets"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.probsights.com/v1/search/markets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"market_id": "<string>",
"exchange": "<string>",
"series_id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"question": "<string>",
"status": "<string>",
"volume": 123,
"liquidity": 123,
"last_yes_price": "<string>",
"last_no_price": "<string>",
"event_id": "<string>",
"event_title": "<string>",
"slug": "<string>",
"url": "<string>",
"discovered_at": "<string>",
"settled_at": "<string>",
"coin": "<string>",
"market_type": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"is_resolved": true
}Search
Search markets
Find markets by text query, series, or crypto interval browse.
GET
/
v1
/
search
/
markets
Search markets
curl --request GET \
--url https://api.probsights.com/v1/search/markets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.probsights.com/v1/search/markets"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.probsights.com/v1/search/markets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"market_id": "<string>",
"exchange": "<string>",
"series_id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"question": "<string>",
"status": "<string>",
"volume": 123,
"liquidity": 123,
"last_yes_price": "<string>",
"last_no_price": "<string>",
"event_id": "<string>",
"event_title": "<string>",
"slug": "<string>",
"url": "<string>",
"discovered_at": "<string>",
"settled_at": "<string>",
"coin": "<string>",
"market_type": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"is_resolved": true
}Find markets by text query, by
series_id, or by crypto asset (coin). Use series_id
from Search series to scope results to one product line,
or use coin + market_type to browse Kalshi and Polymarket interval markets without
a text query.
Request
https://api.probsights.com/v1/search/markets
Query parameters
string
Substring on question, title, subtitle, description, market id, slug, or exact
interval_code. Required unless series_id or coin is set.string
Filter to one series. Required unless
q or coin is set.string
Crypto asset filter:
BTC, ETH, or SOL. Works on both Kalshi and Polymarket.
Required for crypto browse mode unless q or series_id is set.string
Interval filter when
coin is set: 5m, 15m, 1hr (all coins); 4hr, 24hr
(BTC only).string
kalshi or polymarket.string
Exact category match.
string
default:"active"
active or closed.number
Minimum market volume.
number
Minimum market liquidity.
string
ISO 8601 lower bound on
discovered_at.string
ISO 8601; pair with
status=closed for backtests.string
ISO 8601 upper bound on
settled_at.string
relevance, newest, volume, liquidity, or start_time. Defaults to
relevance when q is set, newest when only series_id is set, and
start_time when only coin is set.integer
default:"20"
Number of results (1–100).
integer
default:"0"
Pagination offset.
Response
Returns a JSON array of market objects.string
Source market ticker / ID — use with historical endpoints.
string
kalshi or polymarket.string
Parent series source ID.
string
Formatted market headline (Kalshi); may be null for Polymarket.
string
Compact disambiguator (strike or close time).
string
Market question text.
string
active or closed.number
Traded volume.
number
Liquidity.
string
Last YES price as a four-decimal string (e.g.
"0.9990").string
Last NO price as a four-decimal string.
string
Parent event source ID.
string
Parent event title; may be null.
string
Polymarket slug when present, else null.
string
Exchange web page URL when available.
string
ISO 8601 timestamp when the market was first ingested.
string
Settlement time when closed, else null.
string
BTC, ETH, or SOL when populated on the market.string
Interval code in API form (
5m, 15m, 1hr, …) when interval_code is set.string
Market window start (
start_at or open_at).string
Market window end (
end_at or close_at).boolean
Whether the market is marked resolved in ProbSights.
Examples
Active markets in a series
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.probsights.com/v1/search/markets?series_id=KXBTC15M&status=active&limit=10"
import requests
response = requests.get(
"https://api.probsights.com/v1/search/markets",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"series_id": "KXBTC15M", "status": "active", "limit": 10},
)
markets = response.json()
Crypto interval browse
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.probsights.com/v1/search/markets?coin=BTC&market_type=15m&exchange=kalshi&status=closed&limit=50"
import requests
response = requests.get(
"https://api.probsights.com/v1/search/markets",
headers={"X-API-Key": "YOUR_API_KEY"},
params={
"coin": "SOL",
"market_type": "5m",
"exchange": "polymarket",
"status": "active",
"limit": 20,
},
)
markets = response.json()
Settled window for backtests
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.probsights.com/v1/search/markets?series_id=KXBTC15M&status=closed&settled_after=2026-04-25T00:00:00Z&limit=100"
import requests
response = requests.get(
"https://api.probsights.com/v1/search/markets",
headers={"X-API-Key": "YOUR_API_KEY"},
params={
"series_id": "KXBTC15M",
"status": "closed",
"settled_after": "2026-04-25T00:00:00Z",
"limit": 100,
},
)
markets = response.json()