Polymarket Data API
Polymarket's keyless read API for trades, positions, holders and price history.
by Polymarket
Last updated
What it is
The third of Polymarket's three read surfaces, and the one that answers questions about people and
the past rather than about what is listed or what it costs now. Gamma
says which markets exist; the CLOB API prices them and takes orders.
The Data API at data-api.polymarket.com answers everything else a dashboard needs: recent trades in
a market, a wallet's positions and their lifecycle, its activity feed and portfolio value, the top
holders of an outcome, open interest, live event volume, trader and builder leaderboards, resolution
state, and the price series for an outcome token.
It is Polymarket's own service, but it behaves like an indexer, because that is what it is. The
wallet, position and profit figures are built from Polygon events, and v2 publishes a gauge of how
far behind the chain head they are — GET /v2/status. Where a dashboard gets its
data has a reading of that gauge and explains why it
matters.
Two versions are live at once, and v2 is the current one. v1 still answers but is frozen, and Polymarket's migration guide says new integrations should start on v2. It describes v2 as one shared contract across every read, replacing the original per-route contracts:
- every response is wrapped in
data, and paginated routes add apaginationobject; a documented miss isdata: nullor an empty list, not an error; - pagination is an opaque cursor (
pagination.next_cursoruntil it is null) instead oflimit/offset, and v1'soffsetstops at 10,000 rows; - fields are
snake_case(proxy_wallet,condition_id) instead ofcamelCase, though v2 accepts both spellings in request parameters; - markets are selected with
condition, at most 20 distinct condition IDs per request; GET /v2/positionsfolds three v1 routes into one, filtered bystatus—OPEN,REDEEMABLE,REDEEMABLE_LOST,MERGEABLE,CLOSED— withredeemableandmergeableflags on every row.
v2 also adds reads v1 never had: a wallet's PnL series, profile stats and trading volume, the
biggest single winning positions, price history, resolution state and data freshness. One v1 route,
GET /v1/accounting/snapshot, has no v2 counterpart and is outside the retirement.
Availability
Unrestricted as far as the documentation shows. The endpoints take no credentials, so there is no account to be refused and no identity check. A US reader can read every figure the API serves.
What a US reader cannot do is trade the markets it describes on this platform: Polymarket's international site blocks trading in the United States and points US visitors to Polymarket US, a separate entity operating as a CFTC-designated contract market with its own API. The Data API describes the international platform's wallets and markets only. Polymarket US positions are not in it.
Pricing
Free. There is no key to buy, no plan and no paid tier for the Data API.
What limits you is the published rate table, enforced by Cloudflare per IP address on sliding windows. As captured on 22 September 2026:
| Route | Limit |
|---|---|
All /v2 routes together | 800 requests / 10 s |
/v2/trades | 300 / 10 s |
/v2/positions, /v2/positions/combos | 200 / 10 s |
/v2/activity, /v2/activity/combos | 200 / 10 s |
/v2/prices-history | 200 / 10 s |
/v2/status | 100 / 10 s |
| All v1 routes together | 1,000 / 10 s |
Over the limit, requests are delayed or queued rather than rejected, so the first symptom is latency and not an error code. Why your bot gets throttled covers what that does to a polling loop.
Markets & resolution
The API reports resolutions; it does not make them. GET /v2/resolutions returns resolution state
for a condition, and the positions lifecycle distinguishes a redeemable winner from a still-held
loser. The decision behind both is the UMA optimistic oracle: a
proposal against a bond, a two-hour challenge window, and a UMA token-holder vote if the proposal is
disputed twice. A vote can come back "Unknown", in which case both outcome tokens redeem at 50 cents
— which is a state your position accounting has to allow for.
Price history has a resolution ladder, and the far end is coarse. Polymarket's changelog of 4
September 2026 says GET /v2/prices-history replaces the CLOB-hosted route, though on 1 October
2026 the CLOB host's /prices-history was still in its OpenAPI description and rate-limit table
with no retirement date. The v2 route takes an outcome token_id and exactly one time form — a
relative interval, an absolute start/end, or a point-in-time as_of. From the documentation:
- an explicit
start/endrange spans at most 15 days; interval=maxreturns the full history at 12-hour buckets by default, and explicit buckets of 10,800 or 43,200 seconds also cover the full history;- anything finer returns only the last 30 days;
- one-minute data lasts at least 7 days, five-minute at least 60 and thirty-minute at least 90 — stated as floors, not exact horizons — while three-hour and twelve-hour data is permanent;
- asking for a resolution the store cannot fill returns an empty or sparse page, and points carry a
resolution_secondsfield, and the documentation tells you to read it rather than assume even spacing — the last point can fall between bucket boundaries.
Integrations
REST and JSON only. Both of Polymarket's unified SDKs cover it —
polymarket-client in Python and @polymarket/client in TypeScript —
and Data API v2 support starts at version 0.10.0 of each; the Python package shipped that version on
10 September 2026. An OpenAPI description of v2 is linked from Polymarket's documentation index.
The documentation's examples call every route without a header. Wallet rows identify their owner
by a proxy_wallet field, which is the address to key your own tables on.
This card was written from Polymarket's documentation as captured by the Internet Archive — the migration guide on 29 September 2026, the rate-limit page on 22 September and the price-history and analytics pages on 18 and 19 September. The changelog, the CLOB OpenAPI description and the rate-limit page were re-read on 1 October 2026 on the documentation's Mintlify host. No live call to the API was made for it.
Limitations
- v1 is retired on 24 October 2026. The response envelope, pagination, field casing and the market parameter all change, so a v1 integration does not survive the date without edits. The same documentation, captured on 18 September, still said only that the original routes "keep working" — the date was added later, which is a reason to re-read the migration page before relying on this one.
- No stream. Polling is the only way to follow a wallet, and the polling budget is the table above.
- No order book. Past or present, depth lives elsewhere: the current book on the CLOB API, and past books nowhere on Polymarket at all.
- Fine price history expires. Minute-level data for a market that moved last quarter is gone from this API; only 3-hour and 12-hour buckets reach back that far.
- It is an indexer, with an indexer's lag. Positions, PnL and value are derived from chain
events and can trail the chain;
GET /v2/statussays by how much, and nothing else in a response does. - PnL and leaderboards are Polymarket's arithmetic. The documentation describes the fields, not the cost-basis method behind them, so a figure you compute yourself from trades may not match.
- No data licence is stated on the documentation pages this card was written from. If you plan to redistribute rather than display, that is a question for Polymarket, not for this page.
Alternatives
The other two halves of the same platform are the Gamma API for market metadata and the CLOB API for current books, prices and orders. For the on-chain record without Polymarket's service in between, Polymarket dashboards on Dune answer in SQL, and the Goldsky Polymarket datasets replicate fills and positions into a database you run. For what this API does not keep — past order books — Marketlens, PolyOrderbooks and Predexon sell recordings.
Specs
- Interfaces
- API, Python
- Export
- JSON
- Available in
- Global
- KYC required
- No
- Market subjects
- Politics, Sports, Crypto, Macro, Culture, Business
- Resolved by
- Each market carries its own rules and named source; the outcome is proposed to the UMA optimistic oracle and, if contested, decided by a UMA token-holder vote.
- Maker fee
- None
- Platforms
- Library
- AI features
- None
- Capabilities
- Portfolio tracking
- Pricing verified
- Availability verified
- Markets verified
- Capabilities verified
Also from Polymarket
Background
How this part of the sector works, rather than which product to pick.
- Where a dashboard gets its data, and what it loses when that moves — A venue API, an indexer or the chain itself. Which one a dashboard reads decides how far back its history goes and what vanishes when that source changes.
- What a trade actually costs on a prediction market — Venues publish trading fees in four incompatible units, so 3.00% on one can be cheaper than 1.75% on another. How to convert them, and what else takes a cut.
- Where weather data comes from and what you may do with it — Observations, model output and archives are three products with three licences. The forecast is the cheap half; a clean observation history is not.
Also worth comparing
- Goldsky Polymarket Datasets — Polymarket's on-chain fills and positions, backfilled and streamed into your own database.
- Marketlens — Recorded Polymarket order books across every market type, replayable to the tick.
- Polymarket Data (SII dataset) — The "107 GB" open Parquet dump of Polymarket CLOB fills, November 2022 to March 2026.
- DepthFeed — The recorded bid-ask ladder for crypto up-or-down markets, which no venue keeps itself.
- PolyOrderbooks — Recorded L2 books for Polymarket crypto markets, priced by how far back you may look.
- Predexon — Tick-level book history as Parquet, billed by the gigabyte, plus a mempool-aware feed.
FAQ
Is it Data API v2 or v1?
Both, on the same host. The v2 routes sit under the /v2 prefix at data-api.polymarket.com and the original routes still answer beside them. Polymarket's migration guide, as captured on 29 September 2026, says v1 is retired on 24 October 2026, so a new integration should start on v2.
Do I need an API key for the Polymarket Data API?
No. Every request in Polymarket's own Data API documentation is a plain GET with no credentials — trades, positions, holders, open interest, leaderboards and price history for any wallet or market. The limit that applies is per IP address, not per key.
How far back does Polymarket price history go?
To the start of the market, but only at coarse resolution. Three-hour and twelve-hour buckets are kept permanently; bucket widths finer than that return only the last 30 days, and one-minute data is promised for at least 7 days. One explicit start-to-end request spans at most 15 days.
What rate limit does the Data API enforce?
On v2, 800 requests per 10 seconds across all routes, with lower ceilings on the busy ones — 300 for trades and 200 each for positions, activity and price history. Over the limit, Cloudflare delays and queues requests rather than rejecting them.
Can I watch a wallet in real time through the Data API?
Only by polling. The Data API has no WebSocket. Live fills and book changes come from the CLOB market channel, and your own orders from the authenticated user channel, both on the trading side of the platform.