Documentation

Polymarket table reference

Full schema for the Supanode Polymarket Historical Data Indexer - 1.82 billion on-chain fills plus 261 columns of event and market metadata, with types, partition key and join keys.

// updated 2026-08-22

The polymarket database pairs decoded Polygon fill events with the event and market metadata needed to make sense of them. This page documents every table, column, type, and description. For runnable patterns see Query examples; for connection details see Indexer overview.

NOTE

Schema snapshot: 16 August 2026. Both metadata tables grew substantially over the summer - raw_market_meta went from 2.3M rows to 12.1M and raw_event_meta from 42K to 2.48M, as Polymarket expanded into sports and recurring markets.

Summary

TableRowsSizeHistoryPartition key
polymarket_order_filled_v31,823,755,392299.16 GB2022-11-21 → 2026-08-16toYYYYMMDD(block_timestamp)
raw_market_meta12,097,57913.27 GBsnapshotsnone
raw_event_meta2,484,40510.83 GBsnapshotsnone

How the three tables join

FromColumnToColumn
polymarket_order_filled_v3assetraw_market_metaclob_token_id
polymarket_order_filled_v3event_idraw_event_metaevent_id
raw_market_metacondition_id-groups the outcomes of one market

asset is the outcome token: one market has one row per outcome in raw_market_meta, each with its own clob_token_id. Joining on it is how a fill becomes "someone bought YES on this question".

WARNING

The metadata tables are append-style snapshots. They have no partition key and carry inserted_at, so a market or event can appear more than once as its state changes. Always reduce to the latest row per key with argMax(..., inserted_at) before joining - otherwise a join multiplies your fill rows.

TIP

Amounts are raw base units with 6 decimals. amount_usdc, amount_token and fee are UInt256. Divide by 1e6 for a human number. Because both sides carry 6 decimals, amount_usdc / amount_token is the executed probability directly, on a 0 to 1 scale - no scaling needed.

polymarket_order_filled_v3

On-chain order-fill events from the Polymarket CTF Exchange on Polygon, one row per fill leg. Maker and taker legs are separate rows, distinguished by is_maker.

Rows: 1,823,755,392 · Size: 299.16 GB · Columns: 29
Partition key: toYYYYMMDD(block_timestamp)
History: 2022-11-21 → 2026-08-16

ColumnTypeDescription
event_idStringUnique event identifier
order_hashStringHash of the order
walletStringWallet address that placed the order
assetStringOutcome token (condition ID + outcome index)
amount_tokenUInt256Token amount filled
amount_usdcUInt256USDC amount filled
is_makerBoolWhether this was the maker side
sideFixedString(1)Order side (B=buy, S=sell)
feeUInt256Fee amount in USDC
block_numberUInt64Polygon block number
log_indexUInt32Log index within the transaction
transaction_indexUInt32Transaction index in block
contract_addressStringCTF Exchange contract address
block_hashStringBlock hash
block_timestampDateTimeUTC timestamp of the block
gas_usedUInt64Gas used by transaction
gas_limitUInt64Gas limit set for transaction
base_fee_per_gasUInt256Base fee per gas (EIP-1559)
transaction_hashStringTransaction hash
transaction_fromStringTransaction sender
transaction_toStringTransaction recipient
transaction_valueUInt256ETH value transferred
transaction_gasUInt64Gas provided for transaction
transaction_nonceUInt64Transaction nonce
max_fee_per_gasUInt256Maximum fee per gas (EIP-1559)
max_priority_fee_per_gasUInt256Maximum priority fee (EIP-1559)
inserted_atDateTimeRecord insertion timestamp
builderStringDefault: ''
metadataStringDefault: ''

raw_market_meta

Market-level metadata: the question, its outcomes and CLOB token ids, current pricing and liquidity, resolution status, and the sports and reward fields Polymarket added along the way. This is the table you join a fill to.

Rows: 12,097,579 · Size: 13.27 GB · Columns: 140
Partition key: none - the table is small enough to scan, but filter on a key column anyway

ColumnTypeDescription
market_idStringUnique market identifier
questionNullable(String)Market question text
condition_idStringGnosis conditional token condition ID
slugNullable(String)URL-friendly market slug
twitter_card_imageNullable(String)Twitter card image URL
resolution_sourceNullable(String)Source for market resolution
market_end_dttmNullable(DateTime64(3))Market end datetime
market_start_dttmNullable(DateTime64(3))Market start datetime
categoryNullable(String)Market category
amm_typeNullable(String)AMM type used
sponsor_nameNullable(String)Market sponsor name
sponsor_imageNullable(String)Sponsor image URL
x_axis_valueNullable(String)X-axis label for charts
y_axis_valueNullable(String)Y-axis label for charts
denomination_tokenNullable(String)Token used for denomination
feeNullable(Float64)Market fee percentage
lower_boundNullable(String)Lower bound for scalar markets
upper_boundNullable(String)Upper bound for scalar markets
descriptionNullable(String)Market description
outcomeNullable(String)Outcome name
outcome_priceNullable(Float64)Current outcome price (0-1)
clob_token_idStringCLOB token identifier
volumeNullable(Float64)Total trading volume
volume_numNullable(Float64)Numeric trading volume
is_activeNullable(Bool)Whether market is active
market_typeNullable(String)Type of market
format_typeNullable(String)Display format type
lower_bound_dttmNullable(String)Lower bound datetime for time-based markets
upper_bound_dttmNullable(String)Upper bound datetime for time-based markets
is_closedNullable(Bool)Whether market is closed
market_maker_addressNullable(String)Market maker address
created_byNullable(Int64)User ID who created the market
updated_byNullable(Int64)User ID who last updated the market
created_dttmNullable(DateTime64(3))Market creation datetime
updated_dttmNullable(DateTime64(3))Market last update datetime
closed_dttmNullable(DateTime64(3))Market close datetime
is_wide_formatNullable(Bool)Whether market uses wide display format
is_newNullable(Bool)Whether market is flagged as new
mailchimp_tagNullable(String)Mailchimp tag for notifications
is_featuredNullable(Bool)Whether market is featured
is_archivedNullable(Bool)Whether market is archived
resolved_byNullable(String)Resolution source or resolver
is_restrictedNullable(Bool)Whether market has access restrictions
market_groupNullable(Int64)Market group identifier
group_item_titleNullable(String)Title within market group
group_item_thresholdNullable(String)Threshold for group item
question_idNullable(String)Question identifier
uma_end_dttmNullable(String)UMA oracle end datetime
is_enable_order_bookNullable(Bool)Whether order book is enabled
order_price_min_tick_sizeNullable(Float64)Minimum price tick size
order_min_sizeNullable(Float64)Minimum order size
uma_resolution_statusNullable(String)UMA resolution status
curation_orderNullable(Int64)Curation display order
liquidity_numNullable(Float64)Numeric liquidity value
end_date_iso_dt_strNullable(String)ISO format end date string
start_date_iso_dt_strNullable(String)ISO format start date string
uma_end_date_iso_dt_strNullable(String)UMA end date ISO string
is_having_reviewed_datesNullable(Bool)Whether dates have been reviewed
is_ready_for_cronNullable(Bool)Whether ready for cron processing
is_comments_enabledNullable(Bool)Whether comments are enabled
volume_24hrNullable(Float64)24-hour trading volume
volume_1wkNullable(Float64)7-day trading volume
volume_1moNullable(Float64)30-day trading volume
volume_1yrNullable(Float64)1-year trading volume
game_start_timeNullable(String)Game/event start time
seconds_delayNullable(Int64)Delay in seconds
disqus_threadNullable(String)Disqus comment thread ID
short_outcomeNullable(String)Short outcome label
team_a_idNullable(String)Team A identifier (sports)
team_b_idNullable(String)Team B identifier (sports)
uma_bondNullable(String)UMA oracle bond amount
uma_rewardNullable(String)UMA oracle reward amount
is_fpmm_liveNullable(Bool)Whether FPMM is live
volume_24hr_ammNullable(Float64)24-hour AMM volume
volume_1wk_ammNullable(Float64)7-day AMM volume
volume_1mo_ammNullable(Float64)30-day AMM volume
volume_1yr_ammNullable(Float64)1-year AMM volume
volume_24hr_clobNullable(Float64)24-hour CLOB volume
volume_1wk_clobNullable(Float64)7-day CLOB volume
volume_1mo_clobNullable(Float64)30-day CLOB volume
volume_1yr_clobNullable(Float64)1-year CLOB volume
volume_ammNullable(Float64)Total AMM volume
volume_clobNullable(Float64)Total CLOB volume
liquidityNullable(Float64)Total liquidity
liquidity_ammNullable(Float64)AMM liquidity
liquidity_clobNullable(Float64)CLOB liquidity
maker_base_feeNullable(Int64)Maker base fee
taker_base_feeNullable(Int64)Taker base fee
custom_livenessNullable(Int64)Custom liveness period
is_accepting_ordersNullable(Bool)Whether accepting orders
is_notifications_enabledNullable(Bool)Whether notifications enabled
scoreNullable(Int64)Market score/ranking
image_optimizedNullable(String)Optimized image URL
icon_optimizedNullable(String)Optimized icon URL
eventNullable(String)Associated event
tagNullable(String)Market tag
category_metaNullable(String)Category metadata
creatorNullable(String)Creator information
is_readyNullable(Bool)Whether market is ready
is_fundedNullable(Bool)Whether market is funded
past_slugsNullable(String)Previous URL slugs
ready_timestampNullable(DateTime64(3))Ready status timestamp
funded_timestampNullable(DateTime64(3))Funded status timestamp
accepting_orders_timestampNullable(DateTime64(3))Orders acceptance timestamp
competitiveNullable(Float64)Competitiveness score
rewards_min_sizeNullable(Float64)Minimum size for rewards
rewards_max_spreadNullable(Float64)Maximum spread for rewards
spreadNullable(Float64)Current bid-ask spread
is_automatically_resolvedNullable(Bool)Whether auto-resolved
one_day_price_changeNullable(Float64)24-hour price change
one_hour_price_changeNullable(Float64)1-hour price change
one_week_price_changeNullable(Float64)7-day price change
one_month_price_changeNullable(Float64)30-day price change
one_year_price_changeNullable(Float64)1-year price change
last_trade_priceNullable(Float64)Last trade price
best_bidNullable(Float64)Best bid price
best_askNullable(Float64)Best ask price
is_automatically_activeNullable(Bool)Whether auto-activated
is_clear_book_on_startNullable(Bool)Whether to clear order book on start
chart_colorNullable(String)Chart display color
series_colorNullable(String)Series display color
is_showing_gmp_seriesNullable(Bool)Whether showing GMP series
is_showing_gmp_outcomeNullable(Bool)Whether showing GMP outcome
is_manual_activationNullable(Bool)Whether manual activation required
is_neg_risk_otherNullable(Bool)Negative risk flag
game_idNullable(String)Game identifier
group_item_rangeNullable(String)Range for group item
sports_market_typeNullable(String)Sports market type
lineNullable(Float64)Betting line
uma_resolution_statusesNullable(String)UMA resolution statuses
is_pending_deploymentNullable(Bool)Whether pending deployment
is_deployingNullable(Bool)Whether currently deploying
deploying_timestampNullable(DateTime64(3))Deployment timestamp
scheduled_deployment_timestampNullable(DateTime64(3))Scheduled deployment time
is_rfq_enabledNullable(Bool)Whether RFQ enabled
event_start_timeNullable(DateTime64(3))Event start datetime
imageNullable(String)Market image URL
iconNullable(String)Market icon URL
raw_jsonStringRaw JSON response from API
inserted_atDateTimeRecord insertion timestamp

raw_event_meta

Event-level metadata: title, slug, category, dates, aggregate volume and liquidity across the event's markets. An event groups several markets - a game, an election, a recurring series.

Rows: 2,484,405 · Size: 10.83 GB · Columns: 92
Partition key: none - the table is small enough to scan, but filter on a key column anyway

ColumnTypeDescription
event_idStringUnique event identifier
tickerNullable(String)Event ticker symbol (URL-safe)
slugNullable(String)URL-friendly event slug
titleNullable(String)Event title
subtitleNullable(String)Event subtitle
descriptionNullable(String)Event description / resolution rules text
resolution_sourceNullable(String)Source URL/reference used for event resolution
start_dttmNullable(DateTime64(3))Event start datetime
creation_dttmNullable(DateTime64(3))Event creation datetime
end_dttmNullable(DateTime64(3))Event end datetime
imageNullable(String)Event image URL
iconNullable(String)Event icon URL
is_activeNullable(Bool)Whether event is active
is_closedNullable(Bool)Whether event is closed
is_archivedNullable(Bool)Whether event is archived
is_newNullable(Bool)Whether event is flagged as new
is_featuredNullable(Bool)Whether event is featured
is_restrictedNullable(Bool)Whether event has access restrictions (e.g., geo-blocked)
liquidityNullable(Float64)Total event liquidity (aggregated across markets)
volumeNullable(Float64)Total event trading volume
open_interestNullable(Float64)Open interest for the event
sort_byNullable(String)Sort key used for event ordering
categoryNullable(String)Event category
subcategoryNullable(String)Event subcategory
is_templateNullable(Bool)Whether event is a template
template_variablesNullable(String)Template variables for templated events (JSON)
published_atNullable(String)Publication timestamp
created_byNullable(String)User ID who created the event
updated_byNullable(String)User ID who last updated the event
created_dttmNullable(DateTime64(3))Event record creation datetime
updated_dttmNullable(DateTime64(3))Event record last update datetime
is_comments_enabledNullable(Bool)Whether comments are enabled
competitiveNullable(Float64)Event competitiveness score
volume_24hrNullable(Float64)24-hour event trading volume
volume_1wkNullable(Float64)7-day event trading volume
volume_1moNullable(Float64)30-day event trading volume
volume_1yrNullable(Float64)1-year event trading volume
featured_imageNullable(String)Featured image URL
disqus_threadNullable(String)Disqus comment thread ID
parent_eventNullable(String)Parent event identifier (for nested events)
is_enable_order_bookNullable(Bool)Whether order book is enabled
liquidity_ammNullable(Float64)AMM liquidity for the event
liquidity_clobNullable(Float64)CLOB liquidity for the event
is_neg_riskNullable(Bool)Whether event uses negative risk markets
neg_risk_market_idNullable(String)Negative risk market identifier
neg_risk_fee_bipsNullable(Int64)Negative risk fee in basis points
comment_countNullable(Int64)Number of comments on the event
image_optimizedNullable(String)Optimized image URL
icon_optimizedNullable(String)Optimized icon URL
featured_image_optimizedNullable(String)Optimized featured image URL
sub_eventsNullable(String)JSON array of sub-events
marketsNullable(String)JSON array of markets belonging to this event
seriesNullable(String)JSON array of series the event belongs to
categoriesNullable(String)JSON array of categories
collectionsNullable(String)JSON array of collections
tagsNullable(String)JSON array of tags
is_cyomNullable(Bool)Whether event is 'create your own market' (CYOM)
closed_dttmNullable(DateTime64(3))Event closing datetime
is_show_all_outcomesNullable(Bool)Whether to show all outcomes in UI
is_show_market_imagesNullable(Bool)Whether to show market images in UI
is_automatically_resolvedNullable(Bool)Whether event is auto-resolved
is_enable_neg_riskNullable(Bool)Whether negative risk is enabled
is_automatically_activeNullable(Bool)Whether event is auto-activated
event_dateNullable(String)Event date string (display format)
start_timeNullable(DateTime64(3))Event start time
event_weekNullable(Int64)Week number of event (for recurring events)
series_slugNullable(String)Slug of the series the event belongs to
scoreNullable(String)Event score (sports events)
elapsedNullable(String)Elapsed time string (sports events)
periodNullable(String)Period indicator (sports events, e.g., Q1, H2)
is_liveNullable(Bool)Whether event is currently live (sports events)
is_endedNullable(Bool)Whether event has ended (sports events)
finished_timestampNullable(DateTime64(3))Timestamp the event finished
gmp_chart_modeNullable(String)GMP chart display mode
event_creatorsNullable(String)Event creators metadata
tweet_countNullable(Int64)Number of associated tweets
chatsNullable(String)Chat metadata
featured_orderNullable(Int64)Display order when featured
is_estimate_valueNullable(Bool)Whether value is estimated
is_cant_estimateNullable(Bool)Whether value cannot be estimated
estimated_valueNullable(String)Estimated value (free-form string)
templatesNullable(String)Templates associated with the event
spreads_main_lineNullable(Float64)Main spread line (sports betting)
totals_main_lineNullable(Float64)Main totals line (sports betting)
carousel_mapNullable(String)Carousel display metadata
is_pending_deploymentNullable(Bool)Whether event is pending deployment
is_deployingNullable(Bool)Whether event is currently deploying
deploying_timestampNullable(DateTime64(3))Deployment timestamp
scheduled_deployment_timestampNullable(DateTime64(3))Scheduled deployment time
game_statusNullable(String)Game status (sports events)
raw_jsonStringRaw JSON response from Polymarket API
inserted_atDateTimeRecord insertion timestamp
TIP

raw_json is the escape hatch. Both metadata tables keep the untouched API payload in raw_json. If Polymarket ships a field before we have typed it, JSONExtract it out of there rather than waiting on a schema change.

What is not in the database

Order-book depth is not in ClickHouse. Full book snapshots, price-level changes and best-bid/ask transitions live in a separate CLOB capture archive - see Order-book archive.

Get started

Provision access or start a trial: @supanode_tgs.