Polymarket Historical Data

Polymarket API Historical Data: How to Get Past Market Snapshots

Learn how to access Polymarket API historical data through PolyHistorical. Get past order book snapshots, price history, and market data via a free REST API.

Polymarket's own API focuses on live markets — it doesn't provide Polymarket API historical data for resolved markets. PolyHistorical fills this gap with a dedicated REST API that serves archived order book snapshots for past prediction markets.

Polymarket API vs PolyHistorical API

FeaturePolymarket APIPolyHistorical API
Live market dataYesNo (historical only)
Historical order booksNoYes — full bid/ask depth
Resolved market dataLimitedComplete archive
Sub-second snapshotsNoYes
Free tierYesYes — no credit card needed

API Endpoints for Historical Data

PolyHistorical's API is purpose-built for accessing past Polymarket data:

1. List Historical Markets

GET https://api.polyhistorical.com/v1/markets?coin=BTC&market_type=5m&resolved=true&limit=50

Returns resolved BTC 5-minute markets, sorted by start_time descending. Filter by coin, market_type (5m, 15m, 1hr, 4hr, 24hr), and resolved status.

2. Get Market Details

GET https://api.polyhistorical.com/v1/markets/{slug}

Returns full details for a single market including resolution outcome, final volume, and coin prices at start and end.

3. Get Historical Snapshots

GET https://api.polyhistorical.com/v1/markets/{slug}/snapshots?include_orderbook=true&limit=1000

Returns time-series snapshots for a market. Each snapshot includes coin price, Up/Down outcome prices, and optionally the full order book with bids and asks.

Authentication

All requests require an API key in the X-API-Key header:

curl -H "X-API-Key: YOUR_API_KEY" \\
  "https://api.polyhistorical.com/v1/markets?coin=BTC&limit=5"

Python Quick Start

import requests

headers = {"X-API-Key": "your_free_api_key"}
BASE = "https://api.polyhistorical.com/v1"

# Get resolved markets
markets = requests.get(f"{BASE}/markets", headers=headers, params={
    "coin": "BTC", "market_type": "5m", "resolved": True, "limit": 10
}).json()["markets"]

# Fetch historical snapshots for each
for market in markets:
    data = requests.get(
        f"{BASE}/markets/{market['slug']}/snapshots",
        headers=headers,
        params={"include_orderbook": True, "limit": 1000}
    ).json()
    print(f"{market['slug']}: {len(data['snapshots'])} snapshots, winner={market['winner']}")

Rate Limits & Pricing

PlanRequests/minRequests/dayMarket Access
Starter (Free)601,000Recent BTC markets
Pro ($11/mo)30050,000All historical markets
EnterpriseCustomUnlimitedAll + custom endpoints

Sign up for free at PolyHistorical to start accessing Polymarket API historical data today.

Related Resources