Overview
Polymarket is a prediction market built on the Polygon blockchain using a Central Limit Order Book (CLOB) model. Traders buy and sell binary outcome shares — YES and NO — for events like "BTC above $80k by March 31." The price of a YES share represents the market's implied probability that the event occurs.
Kwery ingests Polymarket's CLOB data and normalizes it into time-series snapshots. Each snapshot captures the midpoint price, spread, and full order book depth for both sides of a market.
What we ingest
- CLOB midpoint prices for UP (YES) and DOWN (NO) shares
- Full order book snapshots with bids and asks arrays
- Spread and depth metrics derived from the book
- Reference prices (e.g. BTC spot) for context
Currently tracked assets: BTC, ETH, SOL, XRP. Each asset can have multiple active markets simultaneously — for example, "BTC above $70k by Friday" and "BTC above $80k by end of month."
Data semantics
| Concept | Detail |
|---|---|
| Price range | 0 to 1 (implied probability) |
close field | Midpoint of the best bid/ask for the YES side |
price_up | YES share price (probability event occurs) |
price_down | NO share price (1 - price_up, probability event does not occur) |
| Book format | Arrays of [price, size] tuples for bids and asks |
| Settlement | Binary — pays 1.00 if the event occurs, 0.00 otherwise |
Polymarket prices are probabilities, not dollar amounts. A price_up of 0.72 means the market implies a 72% chance the event occurs.
Available endpoints
List markets
GET /v1/markets
Returns all tracked Polymarket markets and their metadata.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
limit | integer | No | 100 | Maximum number of markets to return |
offset | integer | No | 0 | Number of records to skip |
curl "https://kwery-api.com/v1/markets?api-key=YOUR_KEY&limit=10"
{
"markets": [
{
"identifier": "will-btc-hit-80k-by-march-31",
"title": "Will BTC hit $80k by March 31?",
"source": "polymarket",
"asset": "BTC",
"status": "active",
"expiration": "2026-03-31T23:59:59Z"
}
],
"total": 42,
"limit": 10,
"offset": 0
}
Get snapshots
GET /v1/snapshots/{identifier}
Returns time-series snapshots for a specific Polymarket market.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
identifier | string | Yes | — | Market slug or identifier |
interval | string | Yes | — | Snapshot interval: 500ms, 5m, 15m, 1h, 4h, 24h |
start | string | No | — | ISO 8601 start time |
end | string | No | — | ISO 8601 end time |
limit | integer | No | 100 | Maximum snapshots to return |
offset | integer | No | 0 | Number of records to skip |
curl "https://kwery-api.com/v1/snapshots/will-btc-hit-80k-by-march-31?api-key=YOUR_KEY&interval=1h&limit=3"
{
"identifier": "will-btc-hit-80k-by-march-31",
"source": "polymarket",
"interval": "1h",
"snapshots": [
{
"timestamp": "2026-03-09T12:00:00Z",
"price_up": 0.72,
"price_down": 0.28,
"mid_price": 0.72,
"spread": 0.02,
"orderbook_up": {
"bids": [[0.71, 1500], [0.70, 3200], [0.69, 4800]],
"asks": [[0.73, 1200], [0.74, 2800], [0.75, 5100]]
},
"orderbook_down": {
"bids": [[0.27, 1200], [0.26, 2800], [0.25, 5100]],
"asks": [[0.29, 1500], [0.30, 3200], [0.31, 4800]]
},
"btc_price": 78542.30
},
{
"timestamp": "2026-03-09T11:00:00Z",
"price_up": 0.71,
"price_down": 0.29,
"mid_price": 0.71,
"spread": 0.02,
"orderbook_up": {
"bids": [[0.70, 1400], [0.69, 3100], [0.68, 4700]],
"asks": [[0.72, 1100], [0.73, 2700], [0.74, 5000]]
},
"orderbook_down": {
"bids": [[0.28, 1100], [0.27, 2700], [0.26, 5000]],
"asks": [[0.30, 1400], [0.31, 3100], [0.32, 4700]]
},
"btc_price": 78210.15
}
],
"total": 720,
"limit": 3,
"offset": 0
}
Point-in-time snapshot
GET /v1/snapshots/{identifier}/at
Returns the single closest snapshot to a given timestamp.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
identifier | string | Yes | — | Market slug or identifier |
timestamp | string | Yes | — | ISO 8601 timestamp to query |
interval | string | Yes | — | Snapshot interval: 500ms, 5m, 15m, 1h, 4h, 24h |
curl "https://kwery-api.com/v1/snapshots/will-btc-hit-80k-by-march-31/at?api-key=YOUR_KEY×tamp=2026-03-09T12:00:00Z&interval=5m"
{
"identifier": "will-btc-hit-80k-by-march-31",
"source": "polymarket",
"interval": "5m",
"snapshot": {
"timestamp": "2026-03-09T12:00:00Z",
"price_up": 0.72,
"price_down": 0.28,
"mid_price": 0.72,
"spread": 0.02,
"orderbook_up": {
"bids": [[0.71, 1500], [0.70, 3200]],
"asks": [[0.73, 1200], [0.74, 2800]]
},
"orderbook_down": {
"bids": [[0.27, 1200], [0.26, 2800]],
"asks": [[0.29, 1500], [0.30, 3200]]
},
"btc_price": 78542.30
}
}
Source-specific fields
| Field | Type | Description |
|---|---|---|
price_up | float | YES share price (implied probability, 0–1) |
price_down | float | NO share price (1 − price_up) |
mid_price | float | Midpoint of best bid and ask for the YES side |
spread | float | Difference between best ask and best bid |
orderbook_up | object | Order book for YES shares: { bids: [[price, size]], asks: [[price, size]] } |
orderbook_down | object | Order book for NO shares: same structure as orderbook_up |
btc_price | float | Reference BTC spot price at snapshot time |
Available intervals
| Interval | Description | Minimum plan |
|---|---|---|
500ms | 500-millisecond granularity | Business |
5m | 5-minute aggregates | Free |
15m | 15-minute aggregates | Free |
1h | Hourly aggregates | Free |
4h | 4-hour aggregates | Free |
24h | Daily aggregates | Free |
Limitations & notes
- Multiple markets per asset. A single asset like BTC can have many concurrent markets with different strike prices and expirations. Each market has a unique
identifier(slug). Use/v1/marketsto discover active markets. - Order book depth varies. Illiquid markets may have sparse books. The
orderbook_upandorderbook_downarrays reflect whatever depth is available at snapshot time. - Prices are probabilities, not dollar amounts. A
price_upof0.65is not $0.65 — it's a 65% implied probability. Do not mix these with spot prices from other sources without conversion. - 500ms interval requires Business plan. Sub-second snapshots are only available on Business and Enterprise tiers.
- Settlement is binary. All Polymarket contracts resolve to exactly 1.00 or 0.00. There are no partial payoffs.
btc_priceis a reference field. It reflects the approximate BTC spot price at the time of each snapshot, useful for correlating prediction market movement with underlying price action.