datagrit

datagrit › Data › Polymarket Liquidity Rewards & Book Depth

Data

Polymarket Liquidity Rewards & Book Depth

Polymarket markets that pay liquidity rewards, joined with the live order book: reward pool, qualifying depth and estimated payout per market.

Run it on Apify StoreUse the APIfrom $3.50 per 1,000 results + $10 per run · no code needed
from $3.50 per 1,000 results + $10 per runpay only for markets you get
JSON · CSV · Excelexport or call via API
Scheduled runsdaily or weekly feeds with Apify schedules
v0.3updated 2026-10-04

It lists the Polymarket markets that pay liquidity rewards and joins each one with its live order book. For every market you get the daily reward pool, the reward band and minimum order size, the capital already resting inside the band on the bid and ask side, the reward score of that book, and an estimate of what a quote of your own size would earn. It is built for market makers, quant traders and bot builders who want to know where a dollar of liquidity earns the most, without opening hundreds of market pages.

What can you use the Polymarket reward screener for?

How to screen Polymarket liquidity rewards

  1. Set Minimum daily reward to the smallest pool worth your attention. The default is 100 dollars per day, which keeps the scan to the markets with a meaningful reward.
  2. Optionally add Search terms, a minimum 24h volume and a maximum qualifying depth.
  3. Enter the Quote capital you would commit to a two-sided quote and the Quote distance from the midpoint in cents.
  4. Choose how to sort and how many markets to return, then run.

Reward band, minimum size and qualifying depth

Polymarket pays rewards for resting orders that sit close to the midpoint. Each market publishes a band in cents (rewardMaxSpreadCents) and a minimum order size in shares (rewardMinSizeShares). The Actor reads the order book of every market that passes your filters and counts the bid and ask price levels that are strictly inside the band and whose size is at least the minimum. A level that sits exactly on the edge of the band scores zero under the documented formula, so it is not counted in any of the qualifying fields or in the scores. qualifyingBidUsd and qualifyingAskUsd are the capital behind those levels, qualifyingDepthUsd is both sides together, and rewardPerDayPer1000QualifyingUsd divides the daily pool by that capital. The order book is aggregated per price level, so a level of 500 shares can be one order or ten orders of 50 shares, and only the first qualifies against a minimum of 200. Because of that, the qualifying shares, capital, depth and scores are upper bounds on what really competes for the pool, and the level counts are counts of price levels, not of orders.

Reward score and estimated payout

The score of an order follows the formula Polymarket documents for liquidity rewards: ((band - distance) / band) squared, times the order size. rewardScoreBid and rewardScoreAsk are the sums for each side. rewardScorePool combines them the way the documentation combines the two sides of one maker: the smaller side, or one third of the larger side when that is more and the midpoint is between 0.10 and 0.90.

The estimate adds a two-sided quote of your capital at your distance and computes your share as your score divided by your score plus the score of the book. This is an approximation: the visible book is treated as a single competitor, while Polymarket scores every maker separately and samples the book over time. Read the estimate as a ranking aid that compares markets with each other, not as a forecast of income. When no visible order scores inside the band (no level strictly inside it that meets the minimum size, or only levels on its edge), rewardPoolEmpty is true and the estimate fields are null instead of a share of 100 percent, because there is no competitor to measure against and the midpoint of such a market depends on the next orders placed. Those markets are listed after all others. When your quote capital buys less than the minimum order size, or your distance is at or beyond the edge of the reward band, quoteQualifies is false, the estimate fields are null, and the run status counts those markets; minQuoteCapitalUsd shows the capital that would qualify.

Output fields

Each row contains the identifiers (conditionId, marketId, slug, eventSlug, the two token IDs) and the question with a link, the market data (endDate, volume24hUsd, priceChange1d), the published reward terms (rewardDailyUsd, rewardMaxSpreadCents, rewardMinSizeShares, rewardStartDate), the book (bestBid, bestAsk, midpoint, spreadCents), the qualifying depth (shares, capital and number of price levels per side, plus qualifyingDepthUsd, all upper bounds), the scores (rewardScoreBid, rewardScoreAsk, rewardScorePool), rewardPoolEmpty, rewardPerDayPer1000QualifyingUsd, and the estimate for your quote (minQuoteCapitalUsd, quoteQualifies, estimatedSharePct, estimatedDailyRewardUsd, estimatedDailyYieldPct). A run that matches nothing returns one status row with found set to false.

Output fields

Every result is one flat record, so it drops straight into a spreadsheet, a database or a CRM.

FieldTypeDescriptionExample
foundbooleanFalse only for the single status row emitted when no market matches the input.true
conditionIdstringUnique Polymarket condition ID of the market (0x...). Empty only on the status row.0x12aa13b3da17ceae1b0a59b5d5b77121e91bb79b4bb0b52bf6543ed3f8d0953b
marketIdstringNumeric Polymarket market ID.2589813
questionstringThe market question as shown on Polymarket. Empty only on the status row.Will the Fed increase interest rates by 25 bps after the October 2026 meeting?
slugstringURL slug of the market.will-the-fed-increase-interest-rates-by-25-bps-after-the-october-2026-meeting-20
eventSlugstringURL slug of the event the market belongs to.fed-decision-in-october-20260617190323537
sourceUrlstringLink to the market on polymarket.com. Empty only on the status row.https://polymarket.com/event/fed-decision-in-october-20260617190323537/will-the-
firstOutcomestringName of the first outcome token, usually Yes. Bid and ask fields describe the order book of this outcome.Yes
secondOutcomestringName of the second outcome token, usually No. Its book mirrors the first outcome: a bid on one is an ask on the other.No
firstTokenIdstringCLOB token ID of the first outcome, the key for the order book endpoint.55159722761418013044126414276680602270318000841690689684819994448621694923050
secondTokenIdstringCLOB token ID of the second outcome.78632395083310670734315205502061249602319069653915932320155846460019107676757
endDatestringISO 8601 time the market is scheduled to end, as published by Polymarket. Null when not published.2026-10-29T03:59:00.000Z
volume24hUsdnumberTraded volume over the last 24 hours in dollars. Null when not published.791285.96
priceChange1dnumberChange of the first outcome price over the last day, in dollars (0.03 is 3 cents). Null when not published.-0.06
rewardDailyUsdnumberTotal liquidity reward Polymarket publishes for this market per day, summed over its reward programs, as published.1000
rewardMaxSpreadCentsnumberMaximum distance in cents from the midpoint at which an order still earns rewards.2.5
rewardMinSizeSharesnumberSmallest order in shares that earns rewards.200
rewardStartDatestringEarliest start date of the reward programs of the market (YYYY-MM-DD). Null when not published.2026-09-17
bestBidnumberHighest bid of the first outcome, in dollars (0.35 is 35 cents).0.35
bestAsknumberLowest ask of the first outcome, in dollars.0.36
midpointnumberMidpoint between best bid and best ask, in dollars. Computed from the order book read by the Actor.0.355
spreadCentsnumberBest ask minus best bid, in cents.1
qualifyingBidSharesnumberUpper bound on shares resting on the bid side inside the reward band: levels of the aggregated book whose total size meets the minimum are counted in full, although the book does not show whether each single order meets it.191549.72
qualifyingAskSharesnumberUpper bound on shares resting on the ask side inside the reward band: levels of the aggregated book whose total size meets the minimum are counted in full, although the book does not show whether each single order meets it.93603.89
qualifyingBidUsdnumberUpper bound on the capital behind the qualifying bids: price times size, over levels of the aggregated book that meet the minimum size.65640.07
qualifyingAskUsdnumberUpper bound on the capital behind the qualifying asks, counted as (one minus price) times size, the amount needed to rest the matching bid on the other outcome.58527.6
qualifyingBidLevelsintegerNumber of price levels of the aggregated bid book inside the band whose total size meets the minimum. A level can hold several orders; the book does not show them separately.3
qualifyingAskLevelsintegerNumber of price levels of the aggregated ask book inside the band whose total size meets the minimum. A level can hold several orders; the book does not show them separately.3
qualifyingDepthUsdnumberUpper bound on the capital already competing for the reward, bid and ask together. The book is aggregated per price level, so orders smaller than the minimum that share a level with others are counted too.124167.67
rewardScoreBidnumberUpper bound on the bid score: sum over qualifying bid levels of ((band - distance) / band)^2 times size, the scoring formula Polymarket documents for liquidity rewards.56769.99
rewardScoreAsknumberThe same upper-bound score for the ask side.10936.8
rewardScorePoolnumberScore of the whole visible book combined from both sides: the larger of the smaller side and one third of the larger side when the midpoint is between 0.10 and 0.90, otherwise the smaller side.18923.33
rewardPoolEmptybooleanTrue when no visible order scores inside the band, so the estimate fields are null: there is no competitor in the book to measure your share against. Such markets are listed after all others. Null only on the status row.false
rewardPerDayPer1000QualifyingUsdnumberDaily reward divided by the capital already quoting inside the band, per 1,000 dollars. Null when nothing qualifies yet.8.05
minQuoteCapitalUsdnumberSmallest two-sided capital that qualifies at your quote distance: the minimum order size times (one minus twice the distance).196
quoteSizeUsdnumberThe two-sided capital from your input that the estimate is calculated for.1000
quoteQualifiesbooleanTrue when your quote capital buys at least the minimum order size and your quote distance is inside the reward band. When false, the estimate fields are null.true
estimatedSharePctnumberYour estimated share of the reward if you added the quote, treating the visible book as a single competitor. A ranking aid, not a forecast. Null when the quote does not qualify or when no visible order scores inside the band.1.9
estimatedDailyRewardUsdnumberEstimated share times the daily reward. Null when the quote does not qualify or when no visible order scores inside the band.19.04
estimatedDailyYieldPctnumberEstimated daily reward as a percentage of your quote capital. Null when the quote does not qualify or when no visible order scores inside the band.1.904
scrapedAtstringISO 8601 timestamp of extraction.2026-10-01T09:27:52.510Z

Sample record

{
  "found": true,
  "conditionId": "0x12aa13b3da17ceae1b0a59b5d5b77121e91bb79b4bb0b52bf6543ed3f8d0953b",
  "marketId": "2589813",
  "question": "Will the Fed increase interest rates by 25 bps after the October 2026 meeting?",
  "slug": "will-the-fed-increase-interest-rates-by-25-bps-after-the-october-2026-meeting-20260617190324032",
  "eventSlug": "fed-decision-in-october-20260617190323537",
  "sourceUrl": "https://polymarket.com/event/fed-decision-in-october-20260617190323537/will-the-fed-increase-interest-rates-by-25-bps-after-the-october-2026-meeting-20260617190324032",
  "firstOutcome": "Yes",
  "secondOutcome": "No",
  "firstTokenId": "55159722761418013044126414276680602270318000841690689684819994448621694923050",
  "secondTokenId": "78632395083310670734315205502061249602319069653915932320155846460019107676757",
  "endDate": "2026-10-29T03:59:00.000Z",
  "volume24hUsd": 791285.96,
  "priceChange1d": -0.06,
  "rewardDailyUsd": 1000,
  "rewardMaxSpreadCents": 2.5,
  "rewardMinSizeShares": 200,
  "rewardStartDate": "2026-09-17",
  "bestBid": 0.35,
  "bestAsk": 0.36,
  "midpoint": 0.355,
  "spreadCents": 1,
  "qualifyingBidShares": 191549.72,
  "qualifyingAskShares": 93603.89,
  "qualifyingBidUsd": 65640.07,
  "qualifyingAskUsd": 58527.6,
  "qualifyingBidLevels": 3,
  "qualifyingAskLevels": 3,
  "qualifyingDepthUsd": 124167.67,
  "rewardScoreBid": 56769.99,
  "rewardScoreAsk": 10936.8,
  "rewardScorePool": 18923.33,
  "rewardPoolEmpty": false,
  "rewardPerDayPer1000QualifyingUsd": 8.05,
  "minQuoteCapitalUsd": 196,
  "quoteSizeUsd": 1000,
  "quoteQualifies": true,
  "estimatedSharePct": 1.9,
  "estimatedDailyRewardUsd": 19.04,
  "estimatedDailyYieldPct": 1.904,
  "scrapedAt": "2026-10-01T09:27:52.510Z"
}

Input

FieldNameTypeWhat it does
searchTermsSearch termsarrayOptional. Keep markets whose question contains at least one of these words or phrases (case-insensitive), for example Fed, Bitcoin or Senate. Leave empty to screen every market that pays rewards.
minDailyRewardUsdMinimum daily reward (USD)numberKeep markets whose total published liquidity reward is at least this many dollars per day. Raising it shortens the scan. 0 turns the filter off.
minVolume24hUsdMinimum 24h volume (USD)numberKeep markets with at least this much traded volume in the last 24 hours. 0 turns the filter off.
maxQualifyingDepthUsdMaximum qualifying depth (USD)numberKeep markets where the capital already resting inside the reward band, on both sides together, is at most this many dollars. Use it to skip crowded markets. 0 turns the filter off.
quoteSizeUsdQuote capital (USD)numberTotal capital you would commit to a two-sided quote in each market, bid and ask together. The estimate of your payout and yield is calculated for this amount.
quoteDistanceCentsQuote distance from midpoint (cents)numberHow far from the midpoint your bid and ask would rest. Closer scores higher; a quote beyond the market's reward band earns nothing. 1 means one cent on each side.
sortBySort bystringOrder of the results before "Maximum results" is applied.
maxItemsMaximum resultsintegerStop after this many markets.
proxyConfigurationProxy configurationobjectOptional. The Polymarket public API does not need a proxy; leave it disabled.

Call it from your code

Run the Actor and get the results in one request. Replace YOUR_APIFY_TOKEN with the token from your Apify account settings.

curl -X POST "https://api.apify.com/v2/acts/datagrit~polymarket-reward-yield-screener/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"minDailyRewardUsd":50,"maxItems":50}'
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagrit/polymarket-reward-yield-screener').call({
  "minDailyRewardUsd": 50,
  "maxItems": 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);

Install with npm i apify-client.

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("datagrit/polymarket-reward-yield-screener").call(run_input={
  "minDailyRewardUsd": 50,
  "maxItems": 50
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items), items[0] if items else None)

Install with pip install apify-client.

Try Polymarket Liquidity Rewards & Book Depth on Apify

Related Actors

Company data

French Company Finder - Sirene Financials

French company lead lists from Sirene screened by net result and revenue, with net margin, size, matching establishment and optional directors.

from $5.60 / 1,000 results