Polymarket Markets API: Prices, Volume, New Market Monitor avatar

Polymarket Markets API: Prices, Volume, New Market Monitor

Pricing

from $1.00 / 1,000 result rows

Go to Apify Store
Polymarket Markets API: Prices, Volume, New Market Monitor

Polymarket Markets API: Prices, Volume, New Market Monitor

Polymarket prediction markets from the public Gamma API: question, outcome prices (probabilities), best bid/ask, 24h volume, liquidity, start and end dates, event slug and URL. Keyword search, sorting, and a new-market monitor mode. No API key.

Pricing

from $1.00 / 1,000 result rows

Rating

0.0

(0)

Developer

Ailu Studio

Ailu Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Polymarket Markets API: Prices, Volume, Liquidity, New Market Monitor

Returns Polymarket prediction markets as flat JSON rows from Polymarket's public Gamma API: the question, outcome labels and current prices (probabilities between 0 and 1), best bid and ask, last trade, 24-hour and lifetime volume, liquidity, start and end dates, parent event, resolution source, condition id, CLOB token ids and the market URL. List the most traded markets, search by keyword, filter by status, liquidity and end date, or run it as a monitor that returns only markets your watchlist has not seen before. No API key, no browser, no proxy.

Use cases

  • Pull the top markets by 24-hour volume into a dashboard, spreadsheet or LLM prompt on a schedule.
  • Search markets about a topic (query: "bitcoin", "fed", "election") and read their current odds.
  • Monitor newly created markets: outputMode: "new" with sortBy: "startDate" returns only markets that appeared since the last run.
  • Find markets resolving soon (sortBy: "endDate" or endsBefore) for event-driven strategies.
  • Get conditionId and clobTokenIds to connect rows to the CLOB API or on-chain data.

Input

FieldDefaultMeaning
query""Keyword. Uses Polymarket's search endpoint, then keeps markets whose question, event title or outcome label contains the keyword (case-insensitive). Empty = list mode.
statusactiveactive (open for trading), closed (resolved or ended) or all.
sortByvolume24hrvolume24hr, volume, liquidity (highest first), endDate (soonest first) or startDate (newest first).
minLiquidityUsd0Drop markets with less order-book liquidity (USD). Closed markets report no liquidity.
endsBefore""ISO date or date-time; keep only markets ending on or before it.
outputModeallall returns every matching market. new returns only markets not seen before by the watchlist in stateStoreName.
stateStoreNamepolymarket-markets-stateKey-value store that remembers seen market ids for outputMode: "new". One per watchlist.
maxItems100Maximum rows returned.

Running with the defaults returns the 100 active markets with the highest 24-hour volume.

Output

FieldTypeMeaning
idstringPolymarket market id.
question, slug, eventSlug, eventTitle, groupItemTitlestringQuestion text, URL slugs, parent event title, short label inside multi-outcome events.
urlstringhttps://polymarket.com/event/<eventSlug>/<slug>
outcomes, outcomePricesstring[], number[]Outcome labels and their prices (probabilities 0-1), same order.
yesPrice, noPricenumberPrice of the Yes / No outcome.
bestBid, bestAsk, lastTradePrice, spreadnumberYes order-book quotes.
priceChange24h, priceChange1wnumber or nullYes price change over 24 h / 7 d.
volumeUsd, volume24hUsd, volume1wkUsd, liquidityUsdnumber or nullVolume and liquidity in USD.
startDate, endDate, createdAtstringISO 8601 UTC.
active, closed, acceptingOrders, negRiskbooleanStatus flags.
resolutionSource, conditionId, clobTokenIds, imageResolution note, on-chain condition id, CLOB token ids per outcome, image URL.
changeType, firstSeenAtstringOnly in outputMode: "new": always new, plus when the watchlist first saw the market.
fetchedAtstringISO 8601 UTC fetch time.

Sample row (trimmed):

{
"id": "562831",
"question": "2026 Balance of Power: R Senate, R House",
"slug": "2026-balance-of-power-r-senate-r-house-537",
"eventSlug": "balance-of-power-2026-midterms",
"eventTitle": "Balance of Power: 2026 Midterms",
"groupItemTitle": "Republicans Sweep",
"url": "https://polymarket.com/event/balance-of-power-2026-midterms/2026-balance-of-power-r-senate-r-house-537",
"outcomes": ["Yes", "No"],
"outcomePrices": [0.045, 0.955],
"yesPrice": 0.045,
"noPrice": 0.955,
"bestBid": 0.04,
"bestAsk": 0.05,
"lastTradePrice": 0.05,
"priceChange24h": null,
"volumeUsd": 22055475.37,
"volume24hUsd": 5690029.61,
"liquidityUsd": 2081675.25,
"startDate": "2025-07-11T21:05:25.044Z",
"endDate": "2026-11-04T04:59:00.000Z",
"active": true,
"closed": false,
"negRisk": true,
"resolutionSource": null,
"conditionId": "0xc5eae79d1ffe716572353962eb926b1e3964c500a4880a7a94f58408218ee76b",
"clobTokenIds": ["1037041417739476789318234100309561819185620627884860347857826416031498288933", "2586929638691165404971548906882475774517468128839723852178011894955376048852"],
"fetchedAt": "2026-11-03T15:00:00.000Z"
}

The OUTPUT record of the run's key-value store holds a summary (mode, pages, fetched, matched, change counts, errors).

How it works and limits

  • List mode reads GET https://gamma-api.polymarket.com/markets?limit=100&offset=N with the status, order, liquidity_num_min and end_date_max parameters applied server-side, one request per 100 markets, until maxItems is reached or the pages run out (cap: 50 pages).
  • Keyword mode reads GET /public-search?q=<query>&limit_per_type=50&page=N (up to 20 pages), flattens the markets of each matching event, and then applies the keyword to question, event title and outcome label. A market whose only match is in its long description is therefore not returned.
  • outputMode: "new" stores the ids of all matching markets in the named key-value store and returns only ids that were absent on the previous run; the first run returns everything up to maxItems and still records every matching id as seen. Markets that drop out of the scanned window are forgotten, so with a volume sort a market can be reported as new again if it re-enters the window; use sortBy: "startDate" for a stable new-market feed. Nothing is reported as removed or updated.
  • Requests are spaced 250 ms apart and retried with back-off on 429 and 5xx responses. Prices are a snapshot from the Gamma index, usually a few seconds behind the order book. Nothing is cached between runs.
  • Not covered: order-book depth, trade history, positions, comments, and user profiles.

Pricing

Pay per result: $1.00 per 1,000 rows (result event). Platform usage is billed separately by Apify. Removed/free rows are not charged.

Not affiliated with Polymarket. Uses the public Polymarket Gamma API only. Data licence/terms: https://docs.polymarket.com/ and https://polymarket.com/tos. Prices are market probabilities, not advice; prediction markets may be restricted in your jurisdiction.

FAQ

What do the prices mean? yesPrice: 0.045 means the market prices a 4.5% chance of Yes. Prices of all outcomes in a market sum to roughly 1.

How do I get only brand-new markets every hour? Set outputMode: "new", sortBy: "startDate", a dedicated stateStoreName, and schedule the Actor hourly. The first run returns the current newest markets; later runs return only markets created since.

Why does a keyword search return a market whose question does not contain the word? It matches the event title or the outcome label instead (for example the candidate name in a multi-outcome event).

Can I get closed or resolved markets? Yes, status: "closed". Their outcomePrices show the resolved outcome as 1 and 0; liquidity is null.

Is there a rate limit? Polymarket does not publish one for the Gamma API. The Actor keeps one request in flight with 250 ms spacing, which has not triggered throttling in testing.