Kalshi Settlement Calendar & Order Book Depth
Kalshi markets ranked by when they settle, with the order book depth, spread and settlement source of each one.
datagrit › Data › Polymarket Liquidity Rewards & Book Depth
DataPolymarket markets that pay liquidity rewards, joined with the live order book: reward pool, qualifying depth and estimated payout per market.
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.
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.
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.
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.
Every result is one flat record, so it drops straight into a spreadsheet, a database or a CRM.
| Field | Type | Description | Example |
|---|---|---|---|
found | boolean | False only for the single status row emitted when no market matches the input. | true |
conditionId | string | Unique Polymarket condition ID of the market (0x...). Empty only on the status row. | 0x12aa13b3da17ceae1b0a59b5d5b77121e91bb79b4bb0b52bf6543ed3f8d0953b |
marketId | string | Numeric Polymarket market ID. | 2589813 |
question | string | The 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? |
slug | string | URL slug of the market. | will-the-fed-increase-interest-rates-by-25-bps-after-the-october-2026-meeting-20 |
eventSlug | string | URL slug of the event the market belongs to. | fed-decision-in-october-20260617190323537 |
sourceUrl | string | Link to the market on polymarket.com. Empty only on the status row. | https://polymarket.com/event/fed-decision-in-october-20260617190323537/will-the- |
firstOutcome | string | Name of the first outcome token, usually Yes. Bid and ask fields describe the order book of this outcome. | Yes |
secondOutcome | string | Name of the second outcome token, usually No. Its book mirrors the first outcome: a bid on one is an ask on the other. | No |
firstTokenId | string | CLOB token ID of the first outcome, the key for the order book endpoint. | 55159722761418013044126414276680602270318000841690689684819994448621694923050 |
secondTokenId | string | CLOB token ID of the second outcome. | 78632395083310670734315205502061249602319069653915932320155846460019107676757 |
endDate | string | ISO 8601 time the market is scheduled to end, as published by Polymarket. Null when not published. | 2026-10-29T03:59:00.000Z |
volume24hUsd | number | Traded volume over the last 24 hours in dollars. Null when not published. | 791285.96 |
priceChange1d | number | Change of the first outcome price over the last day, in dollars (0.03 is 3 cents). Null when not published. | -0.06 |
rewardDailyUsd | number | Total liquidity reward Polymarket publishes for this market per day, summed over its reward programs, as published. | 1000 |
rewardMaxSpreadCents | number | Maximum distance in cents from the midpoint at which an order still earns rewards. | 2.5 |
rewardMinSizeShares | number | Smallest order in shares that earns rewards. | 200 |
rewardStartDate | string | Earliest start date of the reward programs of the market (YYYY-MM-DD). Null when not published. | 2026-09-17 |
bestBid | number | Highest bid of the first outcome, in dollars (0.35 is 35 cents). | 0.35 |
bestAsk | number | Lowest ask of the first outcome, in dollars. | 0.36 |
midpoint | number | Midpoint between best bid and best ask, in dollars. Computed from the order book read by the Actor. | 0.355 |
spreadCents | number | Best ask minus best bid, in cents. | 1 |
qualifyingBidShares | number | Upper 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 |
qualifyingAskShares | number | Upper 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 |
qualifyingBidUsd | number | Upper bound on the capital behind the qualifying bids: price times size, over levels of the aggregated book that meet the minimum size. | 65640.07 |
qualifyingAskUsd | number | Upper 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 |
qualifyingBidLevels | integer | Number 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 |
qualifyingAskLevels | integer | Number 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 |
qualifyingDepthUsd | number | Upper 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 |
rewardScoreBid | number | Upper 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 |
rewardScoreAsk | number | The same upper-bound score for the ask side. | 10936.8 |
rewardScorePool | number | Score 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 |
rewardPoolEmpty | boolean | True 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 |
rewardPerDayPer1000QualifyingUsd | number | Daily reward divided by the capital already quoting inside the band, per 1,000 dollars. Null when nothing qualifies yet. | 8.05 |
minQuoteCapitalUsd | number | Smallest two-sided capital that qualifies at your quote distance: the minimum order size times (one minus twice the distance). | 196 |
quoteSizeUsd | number | The two-sided capital from your input that the estimate is calculated for. | 1000 |
quoteQualifies | boolean | True 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 |
estimatedSharePct | number | Your 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 |
estimatedDailyRewardUsd | number | Estimated share times the daily reward. Null when the quote does not qualify or when no visible order scores inside the band. | 19.04 |
estimatedDailyYieldPct | number | Estimated 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 |
scrapedAt | string | ISO 8601 timestamp of extraction. | 2026-10-01T09:27:52.510Z |
{
"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"
}
| Field | Name | Type | What it does |
|---|---|---|---|
searchTerms | Search terms | array | Optional. 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. |
minDailyRewardUsd | Minimum daily reward (USD) | number | Keep markets whose total published liquidity reward is at least this many dollars per day. Raising it shortens the scan. 0 turns the filter off. |
minVolume24hUsd | Minimum 24h volume (USD) | number | Keep markets with at least this much traded volume in the last 24 hours. 0 turns the filter off. |
maxQualifyingDepthUsd | Maximum qualifying depth (USD) | number | Keep 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. |
quoteSizeUsd | Quote capital (USD) | number | Total 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. |
quoteDistanceCents | Quote distance from midpoint (cents) | number | How 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. |
sortBy | Sort by | string | Order of the results before "Maximum results" is applied. |
maxItems | Maximum results | integer | Stop after this many markets. |
proxyConfiguration | Proxy configuration | object | Optional. The Polymarket public API does not need a proxy; leave it disabled. |
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.
Kalshi markets ranked by when they settle, with the order book depth, spread and settlement source of each one.
Find EU public contracts approaching expiry from TED award notices: incumbent, buyer, value, end date and renewal options.
French company lead lists from Sirene screened by net result and revenue, with net margin, size, matching establishment and optional directors.
Named officers, directors and key employees with pay, hours and titles from IRS e-filed 990, 990-EZ and 990-PF returns.