Polymarket Scraper — Odds, Volume & Liquidity API avatar

Polymarket Scraper — Odds, Volume & Liquidity API

Pricing

from $4.00 / 1,000 market scrapeds

Go to Apify Store
Polymarket Scraper — Odds, Volume & Liquidity API

Polymarket Scraper — Odds, Volume & Liquidity API

Screen Polymarket prediction markets by price movement or time to close, or fetch specific markets by slug or condition ID. Implied probability, favoured outcome, bid/ask spread, volume and liquidity come back as real numbers and arrays - not the JSON-encoded strings the source returns.

Pricing

from $4.00 / 1,000 market scrapeds

Rating

0.0

(0)

Developer

Abhinav Gupta

Abhinav Gupta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

Polymarket Scraper — odds, volume and liquidity in one clean schema

Scrape Polymarket prediction markets with the numbers already parsed: implied probability, the favoured outcome, bid/ask spread, 24-hour and lifetime volume, and resting liquidity.

Why this one

Polymarket's API returns several fields as JSON-encoded strings inside JSON. outcomes arrives as '["Yes", "No"]' and outcomePrices as '["0.0065", "0.9935"]'. Prices and volumes arrive as strings too. Every buyer ends up writing the same unwrapping code before they can do anything.

This does it once:

  • Real arrays and real numbers. outcomes is an array, outcomePrices is an array of numbers, volumes are numbers you can sort on.
  • impliedProbability — the Yes price as a percentage, which is the number most people actually want and no field gives you directly.
  • topOutcome and topOutcomePrice — the favourite and its price, for any market. About a third of markets are not Yes/No (Fritz vs Nakashima), so a Yes-only field is blank for them. These are populated on every row.
  • A working url. Built from the parent event slug, which the market object only carries in a nested array.
  • Stable columns. Missing values are null, never absent, so CSV exports line up and downstream code does not break.

Screening, not just listing

The two questions a trader actually asks are "what is moving" and "what closes soon". Both are now filters rather than something you post-process:

  • minPriceChangePct keeps markets that have moved at least N percentage points across any available window. Direction is ignored — a market down 8 points passes a threshold of 5 — because a screen is about magnitude and the signed values are on the row anyway. priceChangePct carries the largest absolute move; the source has day, week and month windows, and despite the naming there is no hourly one.
  • maxMinutesUntilEnd keeps markets closing within a window. minutesUntilEnd is on every row. Markets with no end date are excluded rather than treated as closing now — plenty have none, and the obvious implementation quietly sweeps them all into "closing soon".

Direct lookup. marketSlugs fetches specific markets by slug, one request each, without walking the catalogue to filter it down. conditionIds does the same by on-chain id, though that one has no server-side filter so it pages.

Input

{
"status": "active",
"searchQuery": "fed",
"orderBy": "volume24hr",
"minVolume": 1000,
"minLiquidity": 0,
"maxItems": 500
}

status is active, closed or all. orderBy is volume24hr, volume, liquidity or none. searchQuery matches the question and the event title.

Output

One row per market:

{
"marketId": "559651",
"question": "Will the Fed decrease interest rates by 25 bps after the September meeting?",
"url": "https://polymarket.com/event/fed-decision-in-september/fed-decrease-25-bps",
"eventTitle": "Fed decision in September",
"outcomes": ["Yes", "No"],
"outcomePrices": [0.0105, 0.9895],
"topOutcome": "No",
"topOutcomePrice": 0.9895,
"yesPrice": 0.0105,
"noPrice": 0.9895,
"impliedProbability": 1.05,
"bestBid": 0.01, "bestAsk": 0.011, "spread": 0.001,
"volumeTotal": 48211900.4, "volume24hr": 1458896.2, "liquidity": 402113.9,
"startDate": "2026-07-30T00:00:00.000Z",
"endDate": "2026-09-17T00:00:00.000Z",
"active": true, "closed": false, "acceptingOrders": true,
"conditionId": "0x7d0a...",
"clobTokenIds": ["27146...", "33212..."]
}

clobTokenIds are included so you can go straight to the CLOB order book for a specific outcome without a second lookup.

A RUN_SUMMARY record reports how many markets were scanned, matched and delivered.

Who this is for

  • Traders and quants tracking odds movement, spreads and liquidity
  • Researchers studying prediction-market accuracy against real outcomes
  • Journalists and analysts citing market-implied odds on elections, rates or sport
  • Arbitrage against other venues, using bid/ask rather than last trade

Notes

  • Reads Polymarket's public Gamma API. No login, no cookies, no CAPTCHA solving, no proxies.
  • Prices are point-in-time. Schedule the Actor if you want a series.
  • impliedProbability is null for markets that are not Yes/No, by design. Use topOutcome and topOutcomePrice for those.