No authentication required. All endpoints are public. Data refreshes every 6 hours (00:00, 06:00, 12:00, 18:00 UTC). Rate limit: 60 requests/minute per IP. Need more? Contact us.
The Odds Raven API provides programmatic access to cross-platform prediction market consensus data. Every question that exists on 2+ platforms gets a consensus probability computed via six peer-reviewed aggregation models.
All responses are JSON. Probabilities are decimals between 0 and 1. Volumes are in USD. Timestamps are ISO 8601 with timezone.
Attribution: If you display our data publicly, include a visible “via Odds Raven” link or mention. No attribution needed for personal/research use.
Caching: Our data refreshes every 6 hours. Polling more frequently than that per question wastes your quota and ours. Please cache responses locally.
/api/v1/questionsList all cross-platform consensus questions. Returns paginated results with consensus probability, source breakdown, and metadata.
| Parameter | Type | Description | |
|---|---|---|---|
page | int | optional | Page number (default: 1) |
per_page | int | optional | Results per page (default: 20, max: 100) |
category | string | optional | Filter by category: politics, sports, crypto, economics, ai, science, weather, finance, entertainment, geopolitics, other |
platform | string | optional | Filter by platform: polymarket, manifold, predictit, gemini |
curl -s "https://oddsraven.com/api/v1/questions?page=1&per_page=2"{
"pagination": {
"page": 1,
"per_page": 2,
"total": 1060,
"total_pages": 530
},
"questions": [
{
"id": 1562,
"title": "Will England win the 2026 FIFA World Cup?",
"consensus": 0.129,
"consensus_model": "B",
"source_count": 3,
"max_prob_gap": 0.0365,
"category": "sports",
"resolution_date": "2026-07-20T00:00:00+00:00",
"sources": [
{
"source": "polymarket",
"probability": "0.1135",
"volume_usd": "9643530.52",
"url": "https://polymarket.com/event/..."
},
...
]
},
...
]
}/api/v1/questions/{id}Get full details for a single consensus question, including all matched source markets and their probabilities.
| Parameter | Type | Description | |
|---|---|---|---|
id | int | REQUIRED | Canonical question ID |
curl -s "https://oddsraven.com/api/v1/questions/1518"{
"id": 1518,
"title": "Will JD Vance win the 2028 US Presidential Election?",
"consensus": 0.206,
"consensus_model": "B",
"source_count": 4,
"max_prob_gap": 0.042,
"sources": [
{
"source": "polymarket",
"probability": "0.1760",
"volume_usd": "9699920.82"
},
{
"source": "manifold",
"probability": "0.2050"
},
{
"source": "predictit",
"probability": "0.2400"
},
{
"source": "gemini",
"probability": "0.2200"
}
]
}/api/v1/questions/{id}/historyProbability history over time for a consensus question. Returns per-platform time series plus a computed consensus line (geometric mean of odds). Used to power the charts on question detail pages.
| Parameter | Type | Description | |
|---|---|---|---|
id | int | REQUIRED | Canonical question ID |
curl -s "https://oddsraven.com/api/v1/questions/1518/history"{
"dates": ["2026-03-20", "2026-03-31", "2026-04-03", ...],
"datasets": [
{
"platform": "consensus",
"color": "#ffffff",
"data": [
{"date": "2026-03-20", "probability": 0.2088},
{"date": "2026-03-31", "probability": 0.1951},
...
]
},
{
"platform": "polymarket",
"color": "#6366f1",
"data": [...]
},
...
]
}/api/v1/questions/{id}/modelsAll six consensus models computed for a single question: current values and historical time series. Models: A (liquidity-weighted linear), B (geometric mean of odds — default), C (threshold imputation), D (equal-weight linear), E (Bayesian track record — pending), F (volume-weighted log-odds).
| Parameter | Type | Description | |
|---|---|---|---|
id | int | REQUIRED | Canonical question ID |
curl -s "https://oddsraven.com/api/v1/questions/1518/models"{
"current": {
"model_a": {"consensus": 0.1875, "label": "Liquidity-Weighted Linear", "available": true},
"model_b": {"consensus": 0.2062, "label": "Geometric Mean of Odds", "available": true},
"model_c": {"consensus": 0.2067, "label": "Threshold Imputation", "available": true},
"model_d": {"consensus": 0.2067, "label": "Equal Weight Linear", "available": true},
"model_e": {"consensus": null, "label": "Bayesian Track Record", "available": false},
"model_f": {"consensus": 0.1880, "label": "Volume-Weighted Log-Odds", "available": true}
},
"dates": ["2026-03-20", ...],
"series": {
"model_a": [{"date": "2026-03-20", "consensus": 0.373}, ...],
"model_b": [{"date": "2026-03-20", "consensus": 0.385}, ...],
...
}
}/api/v1/event/{slug}/historyProbability history for the top 5 candidates of a multi-outcome event. Slug is the Polymarket event slug (e.g. democratic-presidential-nominee-2028).
| Parameter | Type | Description | |
|---|---|---|---|
slug | string | REQUIRED | Event slug (from the /event/ page URL) |
curl -s "https://oddsraven.com/api/v1/event/democratic-presidential-nominee-2028/history"{
"dates": ["2026-03-20", "2026-03-31", ...],
"datasets": [
{"name": "Gavin Newsom", "color": "#7c75ff", "data": [...]},
{"name": "Alexandria Ocasio-Cortez", "color": "#22c55e", "data": [...]},
{"name": "Jon Ossoff", "color": "#f59e0b", "data": [...]},
...
]
}/api/v1/source/{id}/historyProbability history for a single source question (single-platform market). The ID is the source_questions.id from the database.
| Parameter | Type | Description | |
|---|---|---|---|
id | int | REQUIRED | Source question ID |
curl -s "https://oddsraven.com/api/v1/source/104/history"{
"dates": ["2026-03-20", "2026-03-31", ...],
"datasets": [
{
"platform": "polymarket",
"color": "#6366f1",
"data": [
{"date": "2026-03-20", "probability": 0.585},
...
]
}
]
}/api/v1/statsAggregate statistics: total questions, matches, and per-platform counts.
curl -s "https://oddsraven.com/api/v1/stats"{
"canonical_questions": 1060,
"question_matches": 2501,
"sources": [
{"name": "manifold", "display_name": "Manifold Markets", "question_count": 32368},
{"name": "polymarket", "display_name": "Polymarket", "question_count": 30891},
{"name": "gemini", "display_name": "Gemini Predictions", "question_count": 2518},
{"name": "predictit", "display_name": "PredictIt", "question_count": 229}
]
}All errors return a JSON object with error and message fields:
{"error": "NOT_FOUND", "message": "Prediction market not found"}
| HTTP Status | Meaning |
|---|---|
200 | Success |
400 | Bad request (invalid parameters) |
404 | Resource not found |
429 | Rate limit exceeded (wait 60s) |
500 | Internal server error (report to us) |
503 | Database unavailable (temporary) |
60 requests per minute per IP address. Exceeding the limit returns HTTP 429. The limit resets every 60 seconds.
For higher limits, bulk data exports, or real-time WebSocket feeds, contact us to discuss a partnership or data license.
/api/v1/event/{slug}/history and /api/v1/source/{id}/history endpoints./api/v1/questions/{id}/models endpoint (all 6 consensus models)./questions, /questions/{id}, /questions/{id}/history, and /stats.The only prediction market aggregator with academically validated cross-platform consensus.