Every trade. Every market. One query away.
Outcome is a warehouse of prediction market history: full price paths and transaction-level trades, from open to resolution. Bring SQL, get answers.
- Full price history for every market, trade by trade
- Transaction-level records, not daily rollups
- Saved queries and charts your team can share
-- Daily YES volume on PRES-2028SELECT toStartOfDay(created_time) AS day, sumIf(count, taker_side = 'yes') AS yes_volumeFROM tradesWHERE ticker = 'PRES-2028' AND created_time >= now() - INTERVAL 30 DAYGROUP BY dayORDER BY day| day | yes_volume |
|---|---|
| 2026-07-13 | 1,204,118 |
| 2026-07-14 | 982,440 |
| 2026-07-15 | 1,378,905 |
From first query to shared dashboard
Outcome is the warehouse, the API, and the workbench in one place, so exploring a market and shipping an analysis use the same tools.
Full history in SQL
Query a ClickHouse warehouse holding every market, price point, and trade from open to resolution. No sampling, no rollups you did not ask for.
An API of exactly one endpoint
POST your SQL to /v1/execute and JSON rows come back. No pagination to walk, no endpoint sprawl to memorize, no client library to babysit.
An analyst in the loop
The playground chat writes and runs ClickHouse SQL for you, reads the results, and stages query diffs you review before they apply.
Charts without the export
Turn any result set into a chart, tune scales and units, and keep it alongside the query that produced it.
Built for teams
One workspace for saved queries, members, and API keys, so the whole team works from the same numbers.
Pay for what you run
Credit-based billing with no seat pricing. Every response reports the bytes read and credits used, so cost is never a surprise.
The whole API is one endpoint.
Two tables, one route. POST ClickHouse SQL to /v1/execute and rows come back as JSON, with duration, bytes read, and credits used reported on every response. If you can write a SELECT, you already know the whole surface.
- venuetext
- tickertext
- titletext
- statustext
- close_timetimestamptz
- created_timetimestamptz
- venuetext
- tickertext
- taker_sidetext
- pricenumeric
- countbigint
- created_timetimestamptz
$ curl -X POST https://api.outcome.sh/v1/execute \
-H "Authorization: Bearer $OUTCOME_API_KEY" \
-d '{"query": "SELECT venue, count() AS trades FROM trades GROUP BY venue"}'| venue | trades |
|---|---|
| kalshi | 184,220,913 |
Stop scraping. Start querying.
Magic-link sign in, no password and no credit card. Your first query runs in minutes.
Get started