Live odds, volume, liquidity and settlement from Kalshi and Polymarket in one schema — with weather markets resolved to city, station and temperature bracket.
Fixed an out-of-memory crash on a whole-exchange Kalshi walk. Kalshi had grown to 16,180 open
events (81 pages), and holding every page's raw JSON until the walk ended took the 1 GB run
past its limit — Apify's QA run of the prefill input FAILED with OOM and set the maintenance
badge. Each page is now normalised as it arrives and its raw JSON dropped: peak Python heap on
the prefill input 893 MiB → 314 MiB, same 1000 rows.
0.1.0 — 2026-09-07
First release (#156).
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.