Markets are individual tradeable contracts listed on a prediction market platform. While events represent real-world questions, markets are the specific instruments you can buy and sell.
What is a venue market?
A venue market is a single tradeable contract on either Kalshi or Polymarket. Each market belongs to an event and has its own pricing, volume, and liquidity data.
For example, the event “Super Bowl LIX 2025” might have these markets:
- “Kansas City Chiefs to win” (on Kalshi)
- “Chiefs win Super Bowl?” (on Polymarket)
- “Philadelphia Eagles to win” (on Kalshi)
- “Eagles win Super Bowl?” (on Polymarket)
- “Super Bowl MVP - Patrick Mahomes” (on Kalshi)
{
"venue": "kalshi",
"venue_market_id": "SUPERBOWL-2025-KC",
"venue_event_id": "SUPERBOWL-2025",
"pear_event_id": "pear_3f8a1b2c",
"title": "Kansas City Chiefs to win Super Bowl LIX",
"description": "Resolves Yes if the Kansas City Chiefs win Super Bowl LIX.",
"market_slug": "chiefs-win-superbowl-lix",
"outcomes": ["Yes", "No"],
"status": "active",
"end_date_iso": "2025-02-10T00:00:00Z",
"best_bid": 0.62,
"best_ask": 0.64,
"mid_price": 0.63,
"spread": 0.02,
"volume": 1845230,
"volume_24h": 234500,
"open_interest": 892100,
"liquidity": 156000,
"icon_url": null,
"image_url": "https://example.com/images/chiefs.png"
}
Pricing fields
All prices are on a 0 to 1 scale, where 1.00 represents $1.00 (or 100% probability). Here is what each pricing field means:
| Field | Description | Example |
|---|
best_bid | Highest price someone is willing to pay (buy). | 0.62 |
best_ask | Lowest price someone is willing to sell at. | 0.64 |
mid_price | Average of best bid and best ask. Often used as the market’s implied probability. | 0.63 |
spread | Difference between best ask and best bid. Lower spreads mean better liquidity. | 0.02 |
A mid_price of 0.63 on a Yes/No market means the market implies a 63% probability that the outcome will be “Yes.”
How to interpret prices
- Tight spread (0.01-0.02): Well-traded market with good liquidity. Prices are more reliable.
- Wide spread (0.05+): Less liquid market. The true probability likely falls somewhere between bid and ask.
- No spread data (null): The market may be newly listed or have no active orders.
Volume and liquidity fields
| Field | Description | Example |
|---|
volume | Total cumulative trading volume since the market opened. | 1,845,230 |
volume_24h | Trading volume in the last 24 hours. Indicates current market activity. | 234,500 |
open_interest | Total number of outstanding (unsettled) contracts. | 892,100 |
liquidity | Total value available in the order book. Higher liquidity means easier execution. | 156,000 |
Use min_volume and min_liquidity filters on the /api/markets endpoint to exclude thin or inactive markets from your results.
Market status
| Status | Description |
|---|
active | Trading is open. Prices and volume are being updated. |
closed | Trading has ended, but the market has not yet resolved. |
resolved | The outcome is determined and payouts have been (or are being) settled. |
Fetching markets
By event
Get all markets for a specific event:
curl "http://localhost:8000/api/events/super-bowl-lix-2025/markets" \
-H "Authorization: Bearer mk_live_..."
Filter by venue to see only one platform’s markets:
curl "http://localhost:8000/api/events/super-bowl-lix-2025/markets?venue=polymarket" \
-H "Authorization: Bearer mk_live_..."
By direct lookup
Get a specific market by venue and ID:
curl "http://localhost:8000/api/markets/kalshi/SUPERBOWL-2025-KC" \
-H "Authorization: Bearer mk_live_..."
By listing with filters
Browse all markets with optional filters:
# Active Polymarket markets with at least $10K volume
curl "http://localhost:8000/api/markets?venue=polymarket&status=active&min_volume=10000&limit=20" \
-H "Authorization: Bearer mk_live_..."
Markets and events
Every venue market is linked to a Pear event through the pear_event_id field. Use this to:
- Group markets by event for a unified view
- Find the same question on different platforms
- Compare pricing across venues for the same outcome
# Get an event's markets and compare pricing across venues
response = requests.get(
"http://localhost:8000/api/events/bitcoin-100k-2025",
headers={"Authorization": "Bearer mk_live_..."}
)
event = response.json()
for market in event["markets"]:
print(f"{market['venue']}: mid_price={market['mid_price']}, "
f"spread={market['spread']}, volume={market['volume']}")
For systematic cross-platform analysis, see the Comparisons guide.