Polymarket Sports Markets avatar

Polymarket Sports Markets

Pricing

from $1.00 / 1,000 market records

Go to Apify Store
Polymarket Sports Markets

Polymarket Sports Markets

Collect Polymarket sports markets with event context, outcome probabilities, liquidity, volume, and optional order books. One record per unique market with stable source identifiers and a versioned normalized envelope. Filter by event, tag, market type, and reported activity.

Pricing

from $1.00 / 1,000 market records

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Features

Limited permissions

Share

Collect Polymarket sports markets with event context: the game or event, kickoff when reported, market type (moneyline, spreads, totals and more) and line, outcomes with their prices as probabilities, best bid and ask, liquidity, volume and optional order books, one record per unique market. Stable source identifiers and a versioned canonical envelope help you match markets across books. Built for traders, sports-data analysts and bot builders who schedule runs and pipe the JSON into dashboards, alerts or models. No Polymarket account or API key is needed.

Data only, not betting or financial advice.

Use cases

  • Odds boards: every open NBA, NFL or soccer moneyline, spread and total with outcome probabilities, refreshed on a schedule.
  • Line movement: store snapshots and chart how prices, liquidity and volume move toward kickoff.
  • Cross-book comparison: join Polymarket markets with other prediction markets or sportsbooks on the canonical envelope and event context.
  • Liquidity screens: keep only markets above a liquidity or volume floor for execution-aware research.

Quick start

  1. Open the Actor and click Start. The prefilled form collects up to 250 open sports moneylines, spreads and totals.
  2. Read the rows in the Output tab, or export them as JSON, CSV or Excel.

The prefilled input:

{"tagSlug":"sports","marketTypes":["moneyline","spreads","totals"],"maxResults":250,"includeOrderBooks":false}

The prefilled form also shows liquidityMin and volumeMin as 0, which means no bound: markets whose liquidity or volume is unknown are kept. A bound above 0 skips them.

An empty input ({}) keeps every market type, including futures and markets without a published type, up to 500 markets under the sports tag. A run returns up to maxResults, not necessarily the whole board. Open or active does not mean upcoming: older unresolved markets may still appear. Source tags and live flags are kept as reported; they are not independently verified game status.

Input

NameTypeDefaultWhat it does
eventSlugsarray[]Collects up to 50 selected events. Bypasses discovery tag and date bounds; other filters still apply.
tagSlugstringsportsSelects the discovery tag, for example nba.
marketTypesarray[]Exact case-insensitive sportsMarketType values, such as moneyline, spreads, totals, or first_half_totals. Empty keeps every type.
activeOnlybooleantrueExcludes explicitly inactive events and markets.
openOnlybooleantrueExcludes closed events and markets. false includes both open and closed records.
liveOnlybooleanfalseKeeps events explicitly marked live by the source.
startDateMin / startDateMaxstringunsetInclusive discovery bounds on listing time (eventListingTime), not game kickoff. ISO-8601; naive times mean UTC. Ignored for exact event slugs.
liquidityMin / volumeMinnumberunset (form prefill 0)Minimum reported market liquidity / lifetime volume. 0 or unset means no bound. A bound above 0 also excludes markets whose value is unknown.
pageSizeinteger100Events requested per page, from 1 to 500; each event may contain many markets.
maxResultsinteger500Maximum unique market records, from 1 to 5,000, across all events.
includeOrderBooksbooleanfalseAdds order books for the market's outcome tokens.
orderBookConcurrencyinteger4Concurrent book requests, from 1 to 16; the request delay still applies.
includeRawbooleanfalseRetains original event and market objects. This can substantially enlarge each row.
requestDelaySecsnumber0.1Pause between page, event, or book requests, from 0 to 10 seconds.

Unknown input fields, invalid types, non-finite numbers, reversed date ranges, and out-of-range limits fail validation. Very restrictive filters may require scanning many event pages before enough markets match.

Output

Each dataset row represents one unique market. Identity uses conditionId when available; recordKey includes the polymarket: prefix. Rows include event details, sportsMarketType, line, outcomes (names), parallel outcomePrices (probabilities, not decimal odds), token IDs, liquidity, volume, quotes, and a versioned canonical envelope. Unpublished values remain null or empty lists; no kickoff, market type, or probability is invented.

eventStartTime is the reported kickoff when present; eventListingTime is when the event was listed. canonical retains conservative market/participant evidence: ambiguous or unsupported interpretations remain unknown or quarantined rather than being forced into a match.

orderBooks is null when disabled. When enabled it follows clobTokenIds order; each successful book contains bids, asks, timestamps, and reported trading increments. A failed token has a tokenId and sanitized error, while its market is retained. raw is null unless enabled.

The separate OUTPUT summary reports written records, event counts, coverage counters, warnings, and succeeded, succeeded_empty, succeeded_partial, or failed. Collection or validation failures publish no buffered markets. Book failures preserve markets and report a partial result. A dataset charge limit can also produce a partial result, including zero written records; this is not reported as a genuine empty query. Coverage counters describe every market considered during collection, not necessarily the rows ultimately written.

Output example

Selected fields of a real record captured on 2026-10-16 (prices are historical, not current quotes):

{
"recordKey": "polymarket:0xe0f7727d3f05d038618bc44f8cc2e14cefa02016b53805028e82070eb5c84a67",
"eventSlug": "nba-mia-orl-2026-10-16",
"question": "Heat vs. Magic",
"sportsMarketType": "moneyline",
"line": null,
"outcomes": ["Heat", "Magic"],
"outcomePrices": [0.415, 0.585],
"liquidity": 51561.2906
}

Pricing

Current price: $0.001 per market record plus a $0.00005 start fee, so 1,000 markets cost about $1.00.

Pay per result: each market record is one result, plus a small run-start charge. See the Actor's Pricing tab on Apify for current rates. Use maxResults, marketTypes and tagSlug to keep runs small.

Scheduling and monitoring

  • Schedule a league-scoped run (for example tagSlug: "nba", every 15 minutes on game days) and key your history on recordKey plus collectedAt to track price movement.
  • recordKey is stable per market (polymarket: plus the condition ID when available), so it is safe to de-duplicate on.

FAQ

What sports can I collect? Use the default sports tag, another supported source tag, or exact event slugs. Market availability and published metadata vary by sport.

Are all markets moneylines, spreads, or totals? No. Keep marketTypes empty for all source types; use explicit values to restrict the result. Unknown source types are preserved, not guessed.

Is this a trading service? No. It collects snapshots; it does not place trades or guarantee game status, executable prices, settlement equivalence, or cross-book matches.

What are the limits? Up to 5,000 unique markets per run (maxResults) and up to 50 exact event slugs. Turning on order books makes runs slower.

How fresh is the data? Each run reads the live board at run time; nothing is cached between runs.

Export formats? JSON, CSV, Excel, XML or RSS from the dataset, or read it through the Apify API in your own pipeline.

Limits

  • Public market data only; no trading, order placement or account data.
  • startDateMin/startDateMax filter on listing time, not kickoff.
  • No price history; build history by scheduling runs.

For support, contact Apify support and include the Actor run ID.