HISTORICAL PARQUET ARCHIVE · V1 API

几行代码,把整天 Polymarket 盘口、成交与链上交割拉回本地。

所有归档均按 UTC 自然日 × 品种 × 周期 × 数据集 切分为高压缩 Parquet 文件。 我们的 API 只有三个只读 GET 端点,不绑架任何私有 SDK——curl、pandas、polars、DuckDB 一行直读。

3 个 GET 端点/v1/meta · /v1/files · /v1/dl Parquet 列式归档微秒级时间戳 · ZSTD/Snappy 压缩 SHA-256 逐文件摘要列表与响应头双重完整性校验 302 签名直传支持 Header 与 ?api_key= 两种鉴权

60 秒上手

在 账户中心 创建一把 API Key(格式如 ck_26b2e758d05d.Gdyk-ZieGdBCeo2yFCj13t51GLzM95zU),放进环境变量即可开始:

export API_KEY="ck_26b2e758d05d.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export BASE_URL="https://your-domain.example"

1. 看一眼有哪些数据(以及你的订阅窗口)

curl -s "$BASE_URL/v1/meta" \
  -H "Authorization: Bearer $API_KEY" | jq

返回示例:

{
  "firstDay": "2026-02-23",
  "lastDay": "2026-10-24",
  "days": 146,
  "venues": ["polymarket"],
  "assets": ["BTC", "ETH", "SOL", "XRP", "BNB", "DOGE", "HYPE"],
  "intervals": ["5m", "15m"],
  "datasets": {
    "polymarket": [
      "book",
      "trades",
      "activity_trades",
      "onchain_fills",
      "spot_snapshots",
      "twap30s",
      "twap60s",
      "markets",
      "binance_spot"
    ]
  },
  "scope": {
    "expiresMs": 1795409052124,
    "floor": "2026-02-23",
    "ceiling": "2026-10-24"
  }
}

2. 列出某一天的文件清单

curl -s "$BASE_URL/v1/files?asset=btc&interval=15m&date=2026-10-23" \
  -H "Authorization: Bearer $API_KEY" | jq

返回结果里的每个文件对象都自带可直接下载的 url、bytes、rows 与 sha256:

{
  "from": "2026-10-23",
  "to": "2026-10-23",
  "days": 1,
  "count": 8,
  "bytes": 54128940,
  "files": [
    {
      "date": "2026-10-23",
      "name": "BTC-15m-polymarket-book-2026-10-23.parquet",
      "venue": "polymarket",
      "dataset": "book",
      "asset": "BTC",
      "interval": "15m",
      "bytes": 38412096,
      "rows": 214890,
      "sha256": "8f9d2a7c1e4b3081a9c2e0f1d7b6a5c4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8",
      "url": "https://your-domain.example/v1/dl/2026-10-23/BTC-15m-polymarket-book-2026-10-23.parquet"
    },
    {
      "date": "2026-10-23",
      "name": "BTC-15m-polymarket-trades-2026-10-23.parquet",
      "venue": "polymarket",
      "dataset": "trades",
      "asset": "BTC",
      "interval": "15m",
      "bytes": 4192304,
      "rows": 48210,
      "sha256": "40f2863235c4fd947dfb05ed30bf56bdbdf981f14cc6c22904c2d6388c1f343d",
      "url": "https://your-domain.example/v1/dl/2026-10-23/BTC-15m-polymarket-trades-2026-10-23.parquet"
    }
  ]
}

3. 下载到本地

拿上面任意一条的 url,加 -L 跟随 302 跳转到签名地址即可流式落盘:

curl -L "$BASE_URL/v1/dl/2026-10-23/BTC-15m-polymarket-trades-2026-10-23.parquet" \
  -H "Authorization: Bearer $API_KEY" \
  -o BTC-15m-polymarket-trades-2026-10-23.parquet

在 Python / Polars / DuckDB 里一行读入

下载端点 /v1/dl/:date/:name 同时支持 ?api_key= 查询参数,因此无需先下载到本地磁盘,就能直接把 URL 交给常用数据分析引擎:

pandas

import os, requests, pandas as pd

KEY = os.environ["API_KEY"]
BASE = "https://your-domain.example"

r = requests.get(
    f"{BASE}/v1/files",
    params={"asset": "btc", "interval": "15m", "dataset": "trades", "date": "2026-10-23"},
    headers={"Authorization": f"Bearer {KEY}"},
)
r.raise_for_status()

for f in r.json()["files"]:
    df = pd.read_parquet(f"{f['url']}?api_key={KEY}")
    print(f["name"], len(df), df.columns.tolist())

Polars & DuckDB

import polars as pl
import duckdb

url = f"https://your-domain.example/v1/dl/2026-10-23/BTC-15m-polymarket-book-2026-10-23.parquet?api_key={KEY}"

# Polars 直接扫描
df = pl.read_parquet(url)

# DuckDB 直接 SQL 聚合
res = duckdb.sql(f"""
  SELECT outcome, COUNT(*) AS snapshots, AVG(spread) AS avg_spread
  FROM read_parquet('{url}')
  GROUP BY outcome
""").df()

常见任务

拿最新一天的数据

每日归档在 UTC 次日凌晨自动封盘同步。脚本无需硬编码日期,先读 /v1/meta 的 lastDay 再拉列表:

LAST=$(curl -s "$BASE_URL/v1/meta" -H "Authorization: Bearer $API_KEY" | jq -r .lastDay)
curl -s "$BASE_URL/v1/files?date=$LAST&asset=btc" -H "Authorization: Bearer $API_KEY" | jq

批量拉整月数据并校验 SHA-256

列表里的每条文件都带 sha256,配合 sha256sum -c 可以确保网络传输零损坏、断点可重入:

curl -s "$BASE_URL/v1/files?asset=btc&interval=15m&dataset=trades&from=2026-10-01&to=2026-10-23" \
  -H "Authorization: Bearer $API_KEY" \
| jq -r '.files[] | "\(.url) \(.name) \(.sha256)"' \
| while read -r url name sha; do
    curl -sL "$url" -H "Authorization: Bearer $API_KEY" -o "$name"
    echo "$sha  $name" | sha256sum -c -
  done

把多天拼成一张 DataFrame

files = requests.get(
    f"{BASE}/v1/files",
    params={"asset": "btc", "interval": "15m", "dataset": "twap60s", "from": "2026-10-01", "to": "2026-10-23"},
    headers={"Authorization": f"Bearer {KEY}"},
).json()["files"]

df = pd.concat([pd.read_parquet(f"{f['url']}?api_key={KEY}") for f in files], ignore_index=True)

API 端点参考

所有端点只读、幂等,均使用 GET。支持以下任意一种方式传入 API Key:

GET/v1/meta

返回你当前订阅可访问的起止日期窗口(firstDay / lastDay)、交易所、币种、周期与数据集列表。

GET/v1/files

按条件筛选可下载的日度 Parquet 文件。所有筛选参数均可选,多项用英文逗号分隔,大小写不敏感:

参数示例说明
assetbtc / btc,eth,sol标的币种(BTC, ETH, SOL, XRP, BNB, DOGE, HYPE,全市场表为 ALL)
interval15m / 5m,15m结算周期(5m, 15m;不分周期的全市场表传 none)
datasetbook,trades数据集名称(见下方字段规格表,如 book, trades, onchain_fills, twap60s, markets)
date2026-10-23单日查询(等价于 from=date&to=date)
from / to2026-10-01起止 UTC 日期(闭区间 YYYY-MM-DD)
limit / offsetlimit=500&offset=0分页参数(默认单次返回最多 500 条,上限 2000 条)
GET/v1/dl/:date/:name

校验你的订阅权限后,返回 302 Found 跳转到短时有效的签名 Parquet 下载流,并在响应头附带 x-content-sha256。

状态码与错误响应

状态码含义响应体示例
200成功(/v1/meta、/v1/files){"firstDay":"2026-02-23", ...}
302重定向到签名下载直链(/v1/dl/...)Location: https://... + x-content-sha256
400日期或筛选参数格式有误{"error":"invalid date parameter (expected YYYY-MM-DD)"}
401未传 API Key,或 Key 无效 / 已吊销{"error":"missing API key"} / {"error":"invalid or expired API key"}
403请求的日期或品种不在订阅范围内{"error":"date outside subscription coverage","floor":"2026-09-01","ceiling":"2026-09-30"}
404请求的文件或接口不存在{"error":"file not found"}
429请求频率超限(每账户 120 次/分钟){"error":"每个账户每分钟最多 120 次 API 请求"}

字段规格 (Schemas)

标准文件名格式为 {ASSET}-{INTERVAL}-polymarket-{DATASET}-{YYYY-MM-DD}.parquet (例如 BTC-15m-polymarket-trades-2026-10-23.parquet)。 跨周期全市场链上表与结果表命名为 ALL-polymarket-{DATASET}-{YYYY-MM-DD}.parquet。 所有时间戳统一为 UTC 微秒(timestamp_us)或毫秒整数。

book Polymarket 全深度盘口快照流(Up / Down 双边挂单档位)
字段名类型说明
timestamp_usint64本地采集落盘时间戳(UTC 微秒)
exchange_tsint64Polymarket 撮合引擎事件时间戳(UTC 毫秒)
slugstring市场唯一标识(如 btc-updown-15m-1761177600)
condition_idstringCTF 条件合约哈希(0x...)
outcomestring方向结果(Up 或 Down)
asset_idstringERC-1155 结果代币 Token ID
mid_price / spreaddouble当前最优买卖中间价与买卖价差
bids / askslist<struct<price:double, size:double>>买盘与卖盘全深度价格档位数组
book_hashstring盘口状态校验哈希
trades Polymarket CLOB 实时逐笔成交流
字段名类型说明
timestamp_usint64采集接收时间戳(UTC 微秒)
exchange_tsint64撮合引擎成交时间戳(UTC 毫秒)
slug / condition_idstring市场标识与条件合约哈希
outcome / asset_idstring成交方向(Up / Down)与 Token ID
pricedouble成交价格(0.0 ~ 1.0 USDC)
sizedouble成交份额(Shares)
sidestring主动方向(BUY 或 SELL)
fee_rate_bpsint64手续费基点(bps)
trade_idstring撮合序列成交 ID
onchain_fills Polygon 链上 OrderFilled 真实交割明细流
字段名类型说明
timestamp_usint64监听接收时间戳(UTC 微秒)
block_number / log_indexint64Polygon 区块高度与事件日志索引
tx_hash / order_hashstring链上交易哈希与订单哈希
exchange_contractstringCTF Exchange 结算合约地址
maker / takerstring挂单方与吃单方钱包地址
maker_asset_id / taker_asset_idstring双方交换的资产 ID(0 代表 USDC 抵押品)
maker_amount_filled / taker_amount_filledint64链上原始精度(1e6)成交数量與金额
feeint64链上实际扣除的手续费(1e6 精度)
activity_trades Polymarket 交易者钱包活动成交流(含交易者地址)
字段名类型说明
timestamp_us / event_tsint64采集时间戳(微秒)与事件时间戳(秒/毫秒)
slug / condition_idstring市场标识与条件哈希
outcome / sidestring结果方向(Up/Down)与买卖方向(BUY/SELL)
price / sizedouble成交价格与份额
proxy_walletstring交易者 Polymarket Proxy 钱包地址(可用于聪明钱地址追踪)
transaction_hashstring关联的 Polygon 链上交易哈希
twap60s / twap30s Chainlink Data Streams 官方结算价格与 TWAP 流
字段名类型说明
timestamp_us / exchange_tsint64采集时间戳(微秒)与预言机报告时间戳(毫秒)
symbolstring预言机币种对(如 BTC/USD, ETH/USD)
pricedouble当前每秒预言机现货价格
twap_60s / twap_30sdouble滚动 60 秒 / 30 秒时间加权平均价格
full_accuracy_valuestringChainlink 1e18 定点全精度原始整数字符串(用于零误差复刻官方结算)
spot_snapshots & markets & binance_spot 行权价价差快照、市场结算结果表与币安 1 秒现货参考流
数据集核心字段研究用途
spot_snapshots timestamp_us, slug, target_price, spot_price, price_diff, up_asset_id, down_asset_id, window_end_ms 实时对齐每个周期窗口的行权价(Strike Price)与当前标的价格偏离度
markets slug, condition_id, asset, interval_minutes, window_start_ms, window_end_ms, target_price, close_price, result 每个 5m/15m 市场的开盘行权价、到期收盘价与官方最终胜负结果(Up / Down)
binance_spot timestamp_us, exchange_ts, symbol, price 与预测市场同一 UTC 日对齐的币安现货高频参考价,适合计算跨市场领先滞后(Lead-Lag)信号