curl --request GET \
--url https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets', 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.worldmonitor.app/api/prediction/v1/list-prediction-markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$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.worldmonitor.app/api/prediction/v1/list-prediction-markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
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.worldmonitor.app/api/prediction/v1/list-prediction-markets")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"dataAvailable": true,
"fetchedAt": 1717200000000,
"markets": [
{
"category": "cs.AI",
"closesAt": 1717200000000,
"id": "example-id",
"source": "MARKET_SOURCE_POLYMARKET",
"title": "example",
"url": "https://example.com/worldmonitor"
}
],
"pagination": {
"nextCursor": "next-page-token",
"totalCount": 1
}
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"code": "renewal_verification_pending",
"requiredTier": 123
}{
"message": "<string>"
}ListPredictionMarkets
ListPredictionMarkets retrieves active prediction markets from seeded market snapshots. Empty markets with fetched_at=0 or data_available=false means the seed snapshot is unavailable/degraded, not that there are confirmed zero markets.
curl --request GET \
--url https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets', 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.worldmonitor.app/api/prediction/v1/list-prediction-markets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$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.worldmonitor.app/api/prediction/v1/list-prediction-markets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
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.worldmonitor.app/api/prediction/v1/list-prediction-markets")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/prediction/v1/list-prediction-markets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"dataAvailable": true,
"fetchedAt": 1717200000000,
"markets": [
{
"category": "cs.AI",
"closesAt": 1717200000000,
"id": "example-id",
"source": "MARKET_SOURCE_POLYMARKET",
"title": "example",
"url": "https://example.com/worldmonitor"
}
],
"pagination": {
"nextCursor": "next-page-token",
"totalCount": 1
}
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"code": "renewal_verification_pending",
"requiredTier": 123
}{
"message": "<string>"
}Authorizations
User-issued WorldMonitor API key.
Query Parameters
Maximum items per page (1-100).
Cursor for next page. Accepted but currently ignored; no-op until this handler supports the parameter.
Optional category filter (e.g., "Politics").
ai, tech, crypto, science, economy, fed, inflation, interest-rates, recession, trade, tariffs, debt-ceiling Optional search query for market titles.
Optional JMESPath expression applied server-side to project or reduce the JSON response before it is returned (mirrors the MCP jmespath argument). Invalid expressions, expressions larger than 1024 UTF-8 bytes, or projections that exceed the 256 KB output cap return HTTP 400 with a {_jmespath_error, original_keys} envelope. Grammar and worked examples: https://www.worldmonitor.app/docs/mcp-jmespath.
Response
Successful response
ListPredictionMarketsResponse contains prediction markets matching the request.
Show child attributes
Show child attributes
PaginationResponse contains pagination metadata returned alongside list results.
Show child attributes
Show child attributes
Time the seed snapshot was fetched, as Unix epoch milliseconds. A value of 0 means the snapshot is unavailable/degraded, not that there are confirmed zero matching markets.. Warning: Values > 2^53 may lose precision in JavaScript
True when markets were evaluated against a seed snapshot. False means an empty payload is graceful degradation because the snapshot is unavailable.
Was this page helpful?
