Live odds, volume, liquidity and settlement from Kalshi and Polymarket in one schema — with weather markets resolved to city, station and temperature bracket.
Kalshi read through /events?with_nested_markets=true, not /markets: on 2026-09-07 the
markets endpoint returned 25,000 rows of which 24,992 were auto-generated multivariate parlay
legs, and paging never escapes them. The events tree returns the same exchange with none.
Kalshi's current field names (*_dollars, *_fp, decimal strings). The previous names were
removed upstream; an actor still reading them returns a dataset of nulls.
A run aborts with a source_changed notice if no market carries a recognised price field,
rather than shipping correctly-shaped rows with no prices.
Polymarket's JSON-encoded outcomes / outcomePrices decoded; its offset ceiling (2000)
reported as a truncated notice rather than passed off as the whole exchange.
Temperature markets parsed into city, settlement station and bracket bounds.