vike
API EndpointsPolymarketArchive files (Parquet)

Polymarket archive

Bulk Parquet for the recorded Polymarket CLOB — three paths on data.vike.io, two free and one key-gated, serving files directly with no JSON envelope in front of them.

The archive is the one namespace with no JSON envelope and no OpenAPI operations. It is three paths on https://data.vike.io, each serving files straight off disk. Two are open; the third checks your credential before it opens anything.

That shape decides what these pages can tell you. There are no query parameters to table, no JSON envelope and no response schema: the request is a path, and the answer is a status code and some bytes. What varies is the path, and the path is a Hive partition.

Archive downloads do not spend your hourly request budget

Every archive request is still authenticated and still recorded as a download against your key. It just no longer counts against the hourly ceiling, since 2026-09-02. Requests were the wrong unit: the credential is checked once per HTTP request, and a Parquet reader pointed at a URL issues one Range request per column chunk — one 1.26 GB partition measured 20,237 of them. See Rate limits, which is where that counter is documented.

This is not licence to read remotely. It is still thousands of round trips for one file, and Downloading is the page that shows the fast way.

The /archive/ prefix with a credential is the only way in

There is no second spelling of these paths. As of 2026-09-03 every URI that is not one of the three below returns 404 — including anything that drops the /archive/ prefix — and the gated partitions are reachable only under that prefix, with a credential. Measured below, unauthenticated.

Start here

TaskWhere
See every partition the archive holds today, with its size, without a key/archive/manifest.json
Write and debug a parser on real files at megabytes, without a key/archive/samples/
Download one day of one stream, or one crypto up/down family's smaller file/archive/{partition path}
Filter the index by stream, date range or family, and page through it/v1/polymarket/archive/datasets
Turn one known day and stream into its download URL and size/v1/polymarket/archive/url
Work out what a 401 or 404 on an archive path meansStatus codes, measured

What it looks like in use

A first session
# see: the manifest lists every partition with its bytes, and needs no key
curl -s "https://data.vike.io/archive/manifest.json" -o manifest.json

# pick: the newest day on offer; dates[] is newest first
DAY=$(jq -r '.dates[0].date' manifest.json)

# rehearse: the free sample has the same schema as the real files, at megabytes
curl -s "https://data.vike.io/archive/samples/trades.parquet" -o sample-trades.parquet

# size it: resolve that day's trades file to its URL, bytes and rows (one ordinary API call)
curl -s "https://data.vike.io/v1/polymarket/archive/url?date=$DAY&stream=trades" \
  -H "X-API-Key: $VIKE_API_KEY"

# fetch it: a whole-file download, which does not spend the hourly budget
curl -s "https://data.vike.io/archive/venue=polymarket/date=$DAY/trades.parquet" \
  -H "X-API-Key: $VIKE_API_KEY" \
  -o "polymarket-trades-$DAY.parquet"

Free — no credential

Neither of these two paths is gated, so a request to them validates nothing, records no usage and consumes nothing. They are the surface a prospective customer can read before buying.

PathWhat it is
/archive/manifest.jsonThe index of everything in the archive, regenerated daily. It needs no key.
/archive/samples/A real slice of the full archive — one complete crypto up/down 5-minute market, both outcome tokens, open through resolution, all three streams.

Key-gated — the full archive

PathWhat it is
/archive/{partition path}One prefix covering the whole archive — two Hive partitionings of the same data behind one path, not two endpoints.

Status codes, measured

Every row below was probed against the live host on 2026-09-03 with no credential. They are the three behaviours worth internalising: free means free, gated means 401 rather than 404, and everything outside the three documented paths is gone.

Re-run the whole table yourself — it needs no credential, and status codes are the only thing being read, so nothing is downloaded:

Re-run the table
for p in \
  /archive/manifest.json \
  /archive/samples/ \
  /archive/samples/README.txt \
  /archive/samples \
  /archive/ \
  "/archive/venue=polymarket/date=2026-09-01/trades.parquet" \
  /archive \
  /manifest.json ; do
  printf '%-62s %s\n' "$p" "$(curl -s -o /dev/null -w '%{http_code}' "https://data.vike.io$p")"
done
RequestStatus
/archive/manifest.json200
/archive/samples/200
/archive/samples/README.txt200
/archive/samples — no trailing slash401
/archive/401
/archive/venue=polymarket/date=2026-09-01/trades.parquet401
/archive — no trailing slash404
/manifest.json — prefix dropped404
/samples/README.txt — prefix dropped404
/venue=polymarket/date=2026-09-01/trades.parquet — prefix dropped404

401 and 404 mean different things here. A 401 says the path resolved and the credential did not; a 404 says nothing is routed there at all. A 404 on an /archive/-prefixed path you believe exists is a path bug — check it against dates[] or families[] in the manifest.

Documented elsewhere

These pages are the routing and the gate. The archive's substance has its own pages, and they are not repeated here:

  • Bulk archive — the three streams, both Hive layouts, per-stream column schemas with their two decoding traps, current coverage, and the free samples.
  • Downloading — why a remote Parquet read is thousands of requests, worked curl and Python that are one, and how to fetch less by choosing a narrower file instead of a byte range.
  • /archive/datasets and /archive/url — /v1/polymarket/archive/datasets and /v1/polymarket/archive/url, the two JSON endpoints that index exactly the files these pages serve. They are filed there because that is where they are routed, not because they are about something else.
  • Rate limits — the one hourly counter, what it counts, and the archive's exclusion from it.

On this page