Product

Historical Polymarket depth, as an API

Find a market, then pull prices, liquidity, and full order books from one archive. Built for research stacks that need real depth — not just the last tick.

CaptureEvery 1s
HistoryPrices · metrics · books
ResolvedStays queryable
AccessREST API

Why PolyOrderbooks

Live data ends when the moment passes

Exchange APIs are built for now. PolyOrderbooks is built for later — what the book looked like at a time you choose.

CapabilityLive exchange APIPolyOrderbooks
Order book historyCurrent snapshot onlyTimestamped ladders
Prices and liquidityLive / limited historySame window for every series
Resolved marketsEasy to lose after closeStays queryable with winner
How you read dataCalls the exchange liveCalls our API only

Data layers

Three layers, one timeline

Markets, prices, metrics, and books share the same time window and resolution — so joins stay straightforward.

  1. Find the market

    Search markets, events, and series. Get the slug and outcome labels you need for history calls.

    GET /markets · /events · /series · /tags
  2. Pull prices and liquidity

    Request prices and metrics for the same time window so charts and filters stay in sync.

    GET /markets/{slug}/prices · /metrics
  3. Replay the order book

    Load historical bid/ask levels to estimate fills from real depth — not a single mid price.

    GET /markets/{slug}/books

Data model

How markets are organized

A clear hierarchy: series → event → market → outcomes.

  1. 01
    Series

    Optional parent theme (for example a recurring BTC up/down family).

  2. 02
    Event

    A concrete question window. Markets always belong to an event.

  3. 03
    Market

    The tradable contract: slug, status, volume, and resolution fields.

  4. 04
    Outcomes

    Yes/No (or more). Prices and books are keyed by outcome label.

Resolutions you can request

Capture is every second on open markets. Starter can query down to 1m; paid plans unlock 1s. Coarser buckets are available on every plan. The API also accepts 60s as an alias for 1m.

1sAll plans1mStarter5m10m15m1h6h1d

Integration

A typical workflow

Four steps most clients repeat.

  1. 01

    Discover

    Search until you have a market slug.

  2. 02

    Pick a window

    Set start time, end time, and resolution. Reuse them on every history call.

  3. 03

    Join the series

    Fetch prices and metrics first if you need filters, then books for depth.

  4. 04

    Replay

    Walk ladders in time order. Keep resolved markets for later review.

Backtest AI

From a sentence to a replayed strategy

The live Polymarket API answers with now; replay needs an archive. PolyOrderbooks keeps the archive, and Backtest AI runs on it: describe a crypto up/down strategy in plain English and get a backtest over resolved markets.

Describe, don’t code

“Buy DOWN on BTC 15m below 0.40, take profit at 0.55, stop loss at 0.30” parses into entry and exit rules — no Python script, no CSV wrangling.

Fill simulation, not midpoints

The engine walks the historical bid/ask ladder at each tick, so entries and exits model available size, partial fills, and slippage — the depth a mid-price backtest cannot see.

Report + AI analysis

Net P&L, win rate, profit factor, max drawdown, exit reasons, and fill sources — then an AI readback with a Summary, Key Observations, and an Actionable Takeaway.

Keep what you learn

Save runs to your workspace, export the trade log to CSV or the full report to JSON, and revisit the same strategy conversation later.

Resolved markets118,251 crypto up/down
Order book snapshots143.5M L2
Capture1 second
Coverage8 coins · 5m / 15m / 4h

Natural-language backtesting is available as a +$19/mo add-on on any data window or a standalone $29/mo plan, with 500 backtests a month. Starter stays free for the historical API. See the Polymarket backtesting guide for how replay and fill simulation work.

Response shape

What a books response looks like

Outcomes are keys in data. Each point is a timestamp plus bid and ask ladders as [price, size].

  • Same query parameters as prices and metrics
  • Token routes when you already have token IDs
  • Cursors when you page a long window
books · sampleJSON
GET /markets/bitcoin-all-time-high-by-december-31-2026/books
  ?start_ts=2026-04-01T00:00:00Z
  &end_ts=2026-04-01T01:00:00Z
  &resolution=1s

{
  "market_id": "948958",
  "resolution": "1s",
  "tokens": {
    "Yes": "10295989…404382",
    "No": "28476986…384477"
  },
  "data": {
    "Yes": [
      {
        "t": "2026-04-01T00:00:00Z",
        "bids": [
          [0.052, 5645.57],
          [0.051, 411.09],
          [0.05, 976.26],
          ...
        ],
        "asks": [
          [0.053, 1134.93],
          [0.058, 1050.0],
          [0.059, 6810.0],
          ...
        ]
      },
      {
        "t": "2026-04-01T00:00:01Z",
        "bids": [
          [0.052, 5520.12],
          [0.051, 428.5],
          [0.05, 990.0],
          ...
        ],
        "asks": [
          [0.054, 1120.0],
          [0.058, 1065.5],
          [0.059, 6795.0],
          ...
        ]
      },
      ...
    ],
    "No": [
      {
        "t": "2026-04-01T00:00:00Z",
        "bids": [
          [0.947, 1134.93],
          [0.942, 1050.0],
          [0.941, 6810.0],
          ...
        ],
        "asks": [
          [0.948, 5645.57],
          [0.949, 411.09],
          [0.95, 976.26],
          ...
        ]
      },
      {
        "t": "2026-04-01T00:00:01Z",
        "bids": [
          [0.946, 1120.0],
          [0.942, 1065.5],
          [0.941, 6795.0],
          ...
        ],
        "asks": [
          [0.948, 5520.12],
          [0.949, 428.5],
          [0.95, 990.0],
          ...
        ]
      },
      ...
    ]
  },
  "metadata": {
    "count": 100,
    "limit": 100,
    "next_cursor": "dDoyMDI2LTA0LTAxVDAwOjAxOjQwWg"
  }
}

Product boundaries

What you get

Clear limits — no surprise dependencies.

Simple REST API
Call the API over HTTPS from any language. Use the dashboard for API keys; reference docs at docs.polyorderbooks.com.
MCP server for AI agents
Install @polyorderbooks/mcp-server in Cursor or Claude Desktop to query historical books, prices, and metrics from chat. Same 1-second archive as the REST API — see the MCP setup guide on this site.
Captured every second
Open markets are snapshotted at 1s, and every plan can query at 1s — including the free tier. Coarser buckets (1m–1d) stay available throughout. Plans differ on history depth and request volume, not resolution.
Resolved markets stay
After a market settles, it remains queryable — including the winning outcome.
We keep the archive
We run the archive. Your apps only talk to our API, never to live Polymarket on the read path.

Prefer an AI client? The official MCP server wraps the same history endpoints as tools you can call from Cursor or Claude Desktop — no separate data product.

Endpoint map

Everything available through the REST APIs.

Discovery/series · /events · /markets · /tags
History/markets/{slug}/prices · /metrics · /books
Tokens/tokens/{id}/prices · /books
Utility/usage

FAQ

Common questions

Before you integrate.

Is this a live Polymarket proxy?

No. We collect data into our own archive. The API only serves that history — your clients do not call Polymarket live.

What do history endpoints need?

A start time, end time, and resolution on prices, metrics, and books. Using the same window everywhere keeps joins simple.

Why order books instead of mid prices only?

Mids are easy to chart. Books show how much size sat at each price — which is what you need to estimate fills and slippage.

How do I access the data?

Through the REST API with an API key from your dashboard (after email verification), via the official Python SDK on PyPI, or through the MCP server for Cursor and Claude. See the docs for markets, books, prices, and metrics.

Do you offer SDKs or bulk dumps?

Yes — an official Python SDK on PyPI (polyorderbooks) and an MCP server (@polyorderbooks/mcp-server) for AI clients. REST remains the core product; Enterprise customers can also arrange S3 bulk exports and custom delivery.

What does the MCP server expose?

Tools to search markets and pull historical L2 order books, outcome prices, and liquidity metrics from the same archive as the REST API. Install @polyorderbooks/mcp-server in your MCP client config — full setup at polyorderbooks.com/polymarket-mcp-server.

Do I need to write code to backtest a Polymarket strategy?

No. Backtest AI takes a strategy in plain English — 'Buy DOWN on BTC 15m below 0.40, take profit at 0.55, stop loss at 0.30' — turns it into entry and exit rules, then replays it over resolved Polymarket crypto up/down markets. No Python, no CSV wrangling.

What does Backtest AI replay on?

Real history from the PolyOrderbooks archive: 1-second L2 order books captured while each market was live. Fills walk the actual bid/ask ladder, so entries and exits reflect available size, partial fills, and slippage instead of an assumed mid price.

Which markets can I backtest?

Resolved crypto up/down markets across BTC, ETH, SOL, BNB, DOGE, HYPE, XRP, and ZEC at 5m, 15m, and 4h windows — more than 118,000 resolved markets in the archive today. Backtest AI is available as a standalone $29/mo plan with unlimited strategy backtests, ~500 AI backtests/month, 30-day market data for AI, and unlimited Strategy Builder access — or as a +$19/mo add-on on any data window.

How is Backtest AI different from other backtesting approaches?

Backtest AI runs on the same 1-second L2 archive your API key queries, reads every run back with a plain-English AI analysis, and prices it as a standalone $29/mo plan or a +$19/mo add-on on any data window.

Ready to call the API?

Create an account, open the docs, and start with markets → books.