pdatanews262

pdata research

What each prediction-market API gives you

Published 7 October 2026.

pdata reads eight prediction-market venues through their public APIs, every 10 to 60 minutes. Six of the eight can be read without an API key; Predict and Opinion need one. None hands over everything a data user needs in one place: Polymarket publishes no result field, Kalshi's events carry no volume, Limitless publishes no 24-hour volume, and Predict publishes no settlement time. This page sets out what each API offers, what pdata works around, and where a venue's documentation and its behaviour disagree, as of October 2026.

At a glance

Reading each venue's API, October 2026. Limits are the venue's published figures.
venuekey neededpagingpublished read limitoutcome field
Polymarketnocursor (open), offset (closed)500 /events per 10 sderived
Kalshinocursor, up to 200by account tierresult
Manifoldnooffset, 1,000 × 2 pages500 per minuteresolution
Myriadno (optional)page number, up to 10030 per 10 s without keyresolvedOutcomeId
Limitlessnopage number, up to 25none publishedwinningOutcomeIndex
Predictyescursor, up to 100240 per minute per keyresolution, no time
Opinionyespage number, up to 205 per s, 15 with keyresultTokenId
Gemininooffset, 1,000 in one pagenone publishedresolutionSide

Three things hold for all eight. pdata uses none of them for price history: it records its own, a snapshot each time a price or volume changes, so that every venue's history has the same shape. All eight report volume in their own unit, described in how eight venues count volume. And each venue's listing returns markets in its own structure — a series of events, a question with answers, or a standalone market — which pdata maps to one event and market shape.

Polymarket

Polymarket's market data comes from its Gamma API (gamma-api.polymarket.com), readable without a key. pdata lists open events with the keyset endpoint, /events/keyset, 500 at a time, following a cursor until it is absent. Closed events need the older offset endpoint, because the keyset version cannot sort by closing time; Polymarket's changelog marks offset paging for deprecation. Polymarket publishes rate limits of 500 requests per 10 seconds for /events and 4,000 per 10 seconds overall; pdata paces itself at two requests a second.

Each market carries prices, best bid and ask, a 24-hour and a lifetime volume, and liquidity; events add open interest. What it lacks is a result: a resolved market has no field saying which side won. pdata reads it from two others — the oracle status umaResolutionStatus must be resolved and one outcome's settlement price must be at least 0.99. Outcomes are not always Yes and No: the most common pair is Over and Under, so reading the first outcome as "yes" would get every total wrong. Some events are hidden from the bulk listings — closed with no closing time, or archived while still open — and only appear when fetched one by one.

Kalshi

Kalshi's trading API (api.elections.kalshi.com/trade-api/v2) serves market data without a key. pdata reads /events with nested markets, 200 per page — Kalshi's maximum — following a cursor that ends as an empty string rather than a missing one. Kalshi documents read limits by account tier, 200 tokens a second at the basic tier, without saying how anonymous reads are counted; pdata sends ten a second.

Kalshi structures data as series, events and markets. Markets carry the last traded price, best bid and ask, open interest, 24-hour and lifetime volume in contracts, and a result of yes, no or scalar. Events carry no volume or dates of their own, so pdata derives both from their markets. The events endpoint leaves out combination bets. Kalshi has no tag for its intraday price markets, so pdata filters them by series ticker — a fixed list of names until 7 October 2026, when thirteen 15-minute series it had missed were found and the filter was changed to match any series ending in 15M. A liquidity_dollars field read "0.0000" on all 102 markets in a page pdata captured, and is not in the documentation.

Manifold

Manifold's API (api.manifold.markets/v0) needs no key for reading and allows 500 requests a minute per IP address. Its search endpoint returns at most 1,000 markets per call and accepts an offset of at most 1,000, so a single sort order yields at most 2,000 markets; pdata takes the most popular open markets that way and keeps those with at least 45 traders. Multiple-choice answers come only from a separate per-market request.

Manifold prices come from an automated market maker, so there is no order book, bid, ask or open interest. Binary markets report a resolution of YES, NO, CANCEL or MKT — the last meaning the market resolved to its own probability. Volume is in mana, play money. Manifold's own history is available as individual bets; pdata does not use it.

Myriad

Myriad's API (api-v2.myriadprotocol.com) is public for reading; its documentation allows 30 requests per 10 seconds without a key and more with one. pdata pages through open markets by volume, 100 per page — the maximum — until hasNext is false, and looks markets up individually by slug. Myriad's documentation says numeric ids work too, with a network parameter.

Markets carry outcome prices, liquidity, share counts and two volumes, one in cash and one in shares. A single-market response includes price charts for the last day, week, month and all time, which pdata does not use. A resolved market names its winner by outcome id; pdata does not record it. Myriad lists markets on several networks and in a points currency; pdata keeps stablecoin markets on BNB Chain and Abstract and drops markets that last under an hour. Myriad's documentation now describes an events endpoint grouping markets; the markets pdata reads carry no event id.

Limitless

Limitless (api.limitless.exchange) is read without a key, although its documentation says a key is required for programmatic access in general. The active-market listing pages 25 at a time — a request for more is rejected — with no cursor or "has next" flag, so pdata stops when it has counted the total the API reports. There is no listing of closed markets; each is fetched by slug. pdata found no published rate limit and uses ten requests a second.

Markets report lifetime volume, and on market-maker markets liquidity and open interest, but no 24-hour volume; pdata computes it. Markets run by an automated market maker always return a price of 50/50, so pdata records no price for them. Results come as winningOutcomeIndex. The closed and closedTime fields are always empty, so pdata reads closure from expired and takes the close time from the last update.

Predict

Predict (api.predict.fun/v1) requires an API key, sent as x-api-key, and its documentation gives a default of 240 requests a minute per key. Questions are listed as categories with nested markets, 100 per page with a cursor. Volume and liquidity are not in the listing: they come from a separate statistics request per market, and there is no bulk version, so pdata refreshes up to 3,000 markets a cycle, busiest first. Statistics read zero once a market closes, so pdata keeps the last value.

Each outcome carries its best bid and ask with sizes. pdata takes the midpoint when both exist and the ask when there are no bids — which makes an untraded long shot read close to 100%, a limitation pdata's accuracy study had to work around. A resolved market names its winning outcome, but the API has no timestamp for when it resolved, so pdata records the moment it first sees the result. About nine in ten Predict markets reference a Polymarket market.

Opinion

Opinion requires a key, sent as an apikey header; its documentation allows 5 requests a second per IP address without authentication and 15 per API consumer with it. The market listing pages 20 at a time, the documented maximum. pdata reads it through proxy.opinion.trade:8443; the documentation names openapi.opinion.trade. Prices are not in the listing: each needs a separate latest-price request per outcome token, so pdata asks only for markets that have traded. When Opinion rate-limits a request it says when to retry, and pdata waits that long.

The documentation lists lookups of a single market by id or slug; the list endpoint ignores id filters, so pdata reads resolved markets by paging the resolved listing. Results arrive as the winning outcome token's id, which pdata does not yet record. For a question with several answers, the question-level volume is double the sum of the answers, and pdata halves it. Opinion's documented status values — Created, Activated, Resolving, Resolved, Failed, Deleted — differ from the set pdata's code expects, which includes Closed, Finalized, Settled and Cancelled.

Gemini

Gemini's prediction-market API (api.gemini.com/v1/prediction-markets) is public and publishes no rate limit; pdata sends about three requests a second and retries the occasional server error. Its active-event listing does not return events in a stable order between pages, so walking several pages dropped about 1% of events; pdata asks for 1,000 in a single page instead. A separate endpoint lists events settled in roughly the last day.

Each contract carries a best bid, best ask and last trade price; about six in ten had an empty order book when pdata last measured. Volume, documented as USD, is reported for whole events only, not per contract. A settled contract names the winning side in resolutionSide, and its price fields are emptied, so pdata sets the price to 1 or 0 from the verdict.

What this means for anyone combining venues

The work is less in fetching than in agreeing on meaning. "Price" is a midpoint on one venue, a last trade on another and a market maker's level on a third; "volume" is shares, contracts, play money or cash; "closed" can arrive with a time, without one, or hours after the outcome is known. pdata's API serves the eight venues in one schema and states each venue's unit and source field beside the value; the methodology lists what it derives and how.

Data and method

Each statement is from pdata's integration code for that venue, or from the venue's public documentation read on 7 October 2026: Polymarket's rate-limit and events pages, Kalshi's events, markets and rate-limit pages, Manifold's API page, Myriad's API reference, Limitless's market pages, Predict's developer documentation, Opinion's Open API overview and market pages, and Gemini's prediction-market events page. Page sizes and pacing are what pdata uses; published limits are the venue's. Polling intervals: Polymarket and Kalshi 10 minutes; Manifold, Myriad, Limitless, Opinion and Gemini 20 minutes; Predict 60 minutes, each measured from the end of the previous cycle. CC BY 4.0; cite as pdata.world.