Bulk downloads paused for some clients. Requests identifying as "AlphaHound research importer" are blocked while we rebuild the archive, because they took over half of all download capacity. Bulk downloads are also paused while we roll out v3.1 (a new format with smaller files) for "polytaker-source-audit", a python-requests client on one IPv6 network and a client sending a browser user agent from one server. Please contact us for a mirror arrangement: Discord or X.
Polymarket Orderbook Archive archive.pendulumflow.com

Index of /v3.1/

Our own capture, v3.1 format. Live data from PendulumFlow.

Format, provenance and known issues for this data: V3.1 · live beta. What we measured about it, and where it falls short: the audit.

Status

Live beta. New hours are published every hour as they are built. The newest published hour is 2026-11-02 10:00 UTC, and the hours since then (2 so far) are still being caught up. This page reads SHA256SUMS.txt each time it is built, so it is never ahead of what you can download.

Coverage

From 2026-10-27 00:00 UTC to 2026-11-02 10:00 UTC: 155 hours. History from before then, the v3 hours rebuilt in the v3.1 layout, is coming.

What's in an hour

Each hour is one folder, v3.1/YYYY-MM-DD/HH/, and each file name starts with the hour, as in 2026-10-30T08.crypto.parquet. What the published hours hold:

How to download

Download each file once and check it against SHA256SUMS.txt, the list of every published file and its sha256. A file whose hash does not match is a bad download: fetch it again.

# the ledger, then one hour, then check what you got
curl -sO https://dl.pendulumflow.com/v3.1/SHA256SUMS.txt
grep 2026-11-02/10/ SHA256SUMS.txt | awk '{print $2}' | while read p; do
  mkdir -p "$(dirname "$p")" && curl -s -o "$p" https://dl.pendulumflow.com/v3.1/"$p"
done
grep 2026-11-02/10/ SHA256SUMS.txt | sha256sum -c -

Or query a file in place with DuckDB, without downloading it first:

INSTALL httpfs; LOAD httpfs;
SELECT * FROM read_parquet('https://dl.pendulumflow.com/v3.1/2026-11-02/10/2026-11-02T10.ai.parquet') LIMIT 10;

The three hours we shared for testing in October are still there as older preview samples.

The files

v3.1 is in live beta. The format is frozen; if we find a problem, an hour may be re-issued as a new generation. The hour reports are still the v3 design while we build v3.1-specific ones. Coming from v3? Compare the two yourself on the battle test page, and see our step-by-step guide to switching.

Now shipped, in quickstart.py (README):

  • a one-line way to read any hour
  • a ready-made rebuild of the second token's rows
  • a simpler spread

More is coming soon:

  • a per-hour market and category index
  • hourly crypto settlement data (price to beat, final price, average)
  • Chainlink and Binance reference prices
  • the signed orders behind each fill, with links to their blockchain transactions
  • a public order-latency series
  • Polymarket's liquidity-reward parameters, published daily
  • each recorder's connection and gap log for every hour
  • a correction policy, with a changelog for every change that affects the data
  • an opening state with no look-ahead (only what a live observer could have known at the top of the hour)
  • the history back to August

Please tell us what you find, and which of these matter to you: Feedback and requests.

Checksums for this prefix: SHA256SUMS.txt, verify a download with sha256sum -c. It currently names 5694 hourly Parquet files and 342 sidecars (the manifests and capture-timing files), through 2026-11-02T10.

Download this prefix in bulk

You do not need to open the hour pages, and you should not scrape this one. SHA256SUMS.txt lists every file under this prefix, so it is both the download list and the verification file.

# every file URL under /v3.1/
curl -s https://archive.pendulumflow.com/v3.1/SHA256SUMS.txt | awk '{print $2}' \
  | sed 's|^|https://dl.pendulumflow.com/v3.1/|'

# fetch them, four at a time, keeping the directory layout
curl -s https://archive.pendulumflow.com/v3.1/SHA256SUMS.txt | awk '{print $2}' \
  | xargs -P4 -I{} curl -sf --create-dirs -o {} https://dl.pendulumflow.com/v3.1/{}

# then verify the lot, in the directory you downloaded into
curl -sO https://archive.pendulumflow.com/v3.1/SHA256SUMS.txt && sha256sum -c SHA256SUMS.txt

# fetched only PART of it? filter the ledger to MATCH WHAT YOU TOOK
grep <the prefix you fetched> SHA256SUMS.txt | sha256sum -c -

Fetched only part of it? Filter the checksum list to what you took first, for example grep 2026-11-02 SHA256SUMS.txt | sha256sum -c - for one day, or every file you skipped prints as FAILED.

Add | grep 'parquet$' to skip the manifests. Ranges within a file work too, see the format notes.

155 hours, 6032 objects.

‹ prev   page 2 of 2   next ›
Hour (UTC) FilesSizeRowsWitnessesCoverage
101.Thu, 29 Oct 2026 06:003 witnesses400.50 GiB48,419,8493Checks pass – Report
102.Thu, 29 Oct 2026 05:003 witnesses400.47 GiB40,248,1753Checks pass – Report
103.Thu, 29 Oct 2026 04:003 witnesses400.68 GiB60,476,5113Checks pass – Report
104.Thu, 29 Oct 2026 03:005 witnesses400.74 GiB67,155,9195Checks pass – Report
105.Thu, 29 Oct 2026 02:005 witnesses400.92 GiB79,684,5815Checks pass – Report
106.Thu, 29 Oct 2026 01:005 witnesses400.98 GiB86,030,3535Checks pass – Report
107.Thu, 29 Oct 2026 00:005 witnesses401.04 GiB90,379,6505Checks pass – Report
108.Wed, 28 Oct 2026 23:005 witnesses400.85 GiB77,321,8825Checks pass – Report
109.Wed, 28 Oct 2026 22:003 witnesses400.69 GiB63,597,5403Checks pass – Report
110.Wed, 28 Oct 2026 21:003 witnesses400.78 GiB70,843,8893Checks pass – Report
111.Wed, 28 Oct 2026 20:003 witnesses400.85 GiB78,593,8883Checks pass – Report
112.Wed, 28 Oct 2026 19:003 witnesses400.87 GiB79,142,8703Checks pass – Report
113.Wed, 28 Oct 2026 18:003 witnesses400.87 GiB78,685,6303Checks pass – Report
114.Wed, 28 Oct 2026 17:003 witnesses400.81 GiB74,527,1793Checks pass – Report
115.Wed, 28 Oct 2026 16:003 witnesses400.76 GiB69,636,5773Checks pass – Report
116.Wed, 28 Oct 2026 15:003 witnesses400.72 GiB68,395,4923Checks pass – Report
117.Wed, 28 Oct 2026 14:003 witnesses400.70 GiB65,925,4803Checks pass – Report
118.Wed, 28 Oct 2026 13:003 witnesses400.72 GiB65,932,9263Checks pass – Report
119.Wed, 28 Oct 2026 12:003 witnesses400.71 GiB65,469,0703Checks pass – Report
120.Wed, 28 Oct 2026 11:003 witnesses400.65 GiB63,113,8283Checks pass – Report
121.Wed, 28 Oct 2026 10:003 witnesses400.67 GiB64,136,1143Checks pass – Report
122.Wed, 28 Oct 2026 09:003 witnesses400.66 GiB61,679,9123Checks pass – Report
123.Wed, 28 Oct 2026 08:003 witnesses400.65 GiB61,048,8873Checks pass – Report
124.Wed, 28 Oct 2026 07:003 witnesses400.64 GiB61,950,8233Checks pass – Report
125.Wed, 28 Oct 2026 06:003 witnesses400.63 GiB59,520,9693Checks pass – Report
126.Wed, 28 Oct 2026 05:003 witnesses400.67 GiB62,903,4313Checks pass – Report
127.Wed, 28 Oct 2026 04:003 witnesses400.70 GiB67,953,4243Checks pass – Report
128.Wed, 28 Oct 2026 03:005 witnesses400.72 GiB68,054,6175Checks pass – Report
129.Wed, 28 Oct 2026 02:005 witnesses400.81 GiB76,086,9505Checks pass – Report
130.Wed, 28 Oct 2026 01:005 witnesses400.75 GiB74,963,7235Checks pass – Report
131.Wed, 28 Oct 2026 00:005 witnesses400.78 GiB73,691,9435Checks pass – Report
132.Tue, 27 Oct 2026 23:005 witnesses400.72 GiB64,863,7335Checks pass – Report
133.Tue, 27 Oct 2026 22:005 witnesses400.64 GiB58,798,8025Checks pass – Report
134.Tue, 27 Oct 2026 21:005 witnesses400.82 GiB71,561,7185Checks pass – Report
135.Tue, 27 Oct 2026 20:005 witnesses400.95 GiB80,569,8115Checks pass – Report
136.Tue, 27 Oct 2026 19:005 witnesses400.97 GiB78,531,6195Checks pass – Report
137.Tue, 27 Oct 2026 18:005 witnesses400.88 GiB76,698,6305Checks pass – Report
138.Tue, 27 Oct 2026 17:005 witnesses400.89 GiB74,452,8345Checks pass – Report
139.Tue, 27 Oct 2026 16:005 witnesses400.87 GiB70,970,5265Checks pass – Report
140.Tue, 27 Oct 2026 15:005 witnesses400.73 GiB69,300,7355Checks pass – Report
141.Tue, 27 Oct 2026 14:005 witnesses400.75 GiB71,205,7075Checks pass – Report
142.Tue, 27 Oct 2026 13:005 witnesses420.79 GiB76,030,9725Checks pass – Report
143.Tue, 27 Oct 2026 12:005 witnesses420.83 GiB74,479,4355Checks pass – Report
144.Tue, 27 Oct 2026 11:005 witnesses420.80 GiB76,071,4205Checks pass – Report
145.Tue, 27 Oct 2026 10:005 witnesses420.85 GiB78,431,1435Checks pass – Report
146.Tue, 27 Oct 2026 09:005 witnesses420.86 GiB74,699,8365Checks pass – Report
147.Tue, 27 Oct 2026 08:005 witnesses420.80 GiB68,935,1975Checks pass – Report
148.Tue, 27 Oct 2026 07:005 witnesses420.74 GiB67,431,6945Checks pass – Report
149.Tue, 27 Oct 2026 06:005 witnesses420.73 GiB65,571,6235Checks pass – Report
150.Tue, 27 Oct 2026 05:005 witnesses420.68 GiB64,671,6955Checks pass – Report
151.Tue, 27 Oct 2026 04:005 witnesses420.76 GiB68,626,4965Checks pass – Report
152.Tue, 27 Oct 2026 03:005 witnesses420.82 GiB76,112,2375Checks pass – Report
153.Tue, 27 Oct 2026 02:005 witnesses420.91 GiB81,907,7795Checks pass – Report
154.Tue, 27 Oct 2026 01:005 witnesses420.89 GiB83,863,3615Checks pass – Report
155.Tue, 27 Oct 2026 00:005 witnesses420.90 GiB82,538,3105Checks pass – Report
‹ prev   page 2 of 2   next ›

Thin hours inside these windows line up with the venue pausing, though that is not the whole story for every one: the 26 August entry, for one, records a stretch where the venue was emitting and we were not receiving. Polymarket's status page recorded each incident; the link on each line is their record, and details is what we measured and what we are not claiming.

  • 2026-10-29T18:05Z to 2026-10-29T19:05Z: Exchange in cancel-only mode for an hour after a third-party provider was compromised. Cancel-only mode with relayer actions paused; the venue said a third-party provider was compromised and trading was halted as a precaution, 18:05 to 19:05 (investigating 18:05:18, identified 18:37:02, monitoring 18:55:16, resolved 19:05:22) UTC (their record). 2 hours · details

1 hour is marked small, meaning under a quarter the size of the median hour here (817.2 MiB). That is a fact about volume, not a verdict about capture. Each marker is a link: where the exchange recorded an incident covering the hour it leads to what we know about it, and where nothing is on record it leads to the definition. Hover for the reason without leaving the page. Some of these hours pass the completeness check for all sixty minutes and simply had little happening; a quiet market and a capture problem look the same from the outside. If the difference matters to your work, read the hour's manifest and the audit rather than inferring from the size.

Pendulum Flow Discord

Something wrong with an hour, or a file you need that is not here? Say so in the Discord, where the people who run the site and prediction market data geeks compare notes.

Join the Discord

Credit the collector: pendulumflow for V3 and V3.1, PMXT for V1 and V2, AG6 for their V2 archive. Ours is CC BY-NC 4.0, commercial licence by contact; PMXT's is CC BY 4.0; AG6 states no licence. How to cite.

Serving these bytes is not endorsing them. We are not affiliated with Polymarket.

For AI readers: llms.txt, what this archive holds and the questions it cannot answer.

https://x.com/PendulumFlow

Join the Pendulum Flow Discord: other people who build on prediction-market data, comparing notes and sharing tooling and findings.