Prediction markets
Prediction markets let traders buy and sell shares in the outcome of a future event, with prices that track the crowd’s implied probability. QuantConomy mirrors markets from platforms such as Polymarket and links each one to related news entries, so you can read the market’s probability alongside the coverage driving it.
The model
Section titled “The model”A prediction market is a question with a set of outcomes. Each market has a platform (e.g. polymarket), a question, a category, a status, and trading metrics (volume, volume24h, liquidity).
Each outcome carries a name (e.g. Yes, No), a price between 0 and 1 that represents the market’s implied probability, and — once the market resolves — a winner flag. The bid/ask spread is exposed via bestBid and bestAsk.
Market status is one of:
| Status | Meaning |
|---|---|
active | Open for trading (the default filter) |
closed | Trading ended, not yet resolved |
resolved | Outcome decided; resolvedAt is set and the winning outcome’s winner is true |
cancelled | Voided |
Endpoints
Section titled “Endpoints”| Method & path | Description | Credits |
|---|---|---|
GET /prediction-markets | List markets (filter by status, category, search) | 1 |
GET /prediction-markets/:id | Single market with outcomes and related news entries | 2 |
GET /prediction-markets defaults to status=active. Filter by category (politics, crypto, sports, …), search by question text, and sort with sortBy (volume default, liquidity, or endDate). It uses page-based pagination (page + limit).
GET /prediction-markets/:id returns the full market — including description, tags, feesEnabled, resolvedAt, and topicSlugs — plus up to 20 related news entries, each scored by semantic similarity and labeled with how it was matched (matchType: embedding or keyword).
Example
Section titled “Example”List the highest-volume active politics markets, then open one for its outcomes and related coverage:
# 1. List active politics markets by volumecurl "https://api.quantconomy.com/api/v1/prediction-markets?status=active&category=politics&sortBy=volume&limit=5" \ -H "Authorization: Bearer mtk_your_key_here"
# 2. Inspect a single market (2 credits)curl "https://api.quantconomy.com/api/v1/prediction-markets/550e8400-e29b-41d4-a716-446655440000" \ -H "Authorization: Bearer mtk_your_key_here"const list = await fetch( 'https://api.quantconomy.com/api/v1/prediction-markets?status=active&category=politics&sortBy=volume&limit=5', { headers: { Authorization: 'Bearer mtk_your_key_here' } },).then((r) => r.json());
const marketId = list.data[0].id;const detail = await fetch( `https://api.quantconomy.com/api/v1/prediction-markets/${marketId}`, { headers: { Authorization: 'Bearer mtk_your_key_here' } },).then((r) => r.json());
for (const outcome of detail.data.outcomes ?? []) { console.log(outcome.name, `${(outcome.price * 100).toFixed(1)}%`);}console.log('Related entries:', detail.data.relatedEntries.length);import requests
headers = {"Authorization": "Bearer mtk_your_key_here"}base = "https://api.quantconomy.com/api/v1"
markets = requests.get( f"{base}/prediction-markets", headers=headers, params={"status": "active", "category": "politics", "sortBy": "volume", "limit": 5},).json()["data"]
detail = requests.get( f"{base}/prediction-markets/{markets[0]['id']}", headers=headers,).json()["data"]
for outcome in detail.get("outcomes") or []: print(outcome["name"], f"{outcome['price'] * 100:.1f}%")print("Related entries:", len(detail["relatedEntries"]))A sample outcome from the detail response:
{ "name": "Yes", "price": 0.62, "bestBid": 0.61, "bestAsk": 0.63, "winner": null}A price of 0.62 means the market is implying a 62% probability for that outcome.