Market data for Kalshi and Polymarket.

List markets, fetch price history, inspect supported trades and current order books, and resolve weather contracts against the public data that settles them. Shared schemas cover the fields both venues provide.

market_data.py
 from mostlyright import markets

prices = markets.kalshi.ohlcv(
    "KXHIGHNY-25MAY26-T79",
    resolution="1h",
    from_ts="2025-05-25T00:00Z",
    to_ts="2025-05-26T00:00Z",
)

prices[["bucket_start_utc", "probability", "source"]] 

Contracts, prices, and settlement data.

Query the market itself, then connect weather contracts to the public record used to settle them.

Discover markets

List contracts with status, close time, bid, ask, last price, volume, and venue identity.

Fetch price history

Query Kalshi and Polymarket with one OHLCV vocabulary and a documented UTC time axis.

Resolve settlement

Map weather contracts to the station, source, date, unit, and rule each venue names.

One schema where venues overlap.

Shared fields use the same names and units. Venue-specific values remain visible, and unsupported calls raise a typed error.

markets.ohlcv() normalized row
market_id KXHIGHNY…T79
bucket_start_utc 2025-05-25T19:00Z
probability 0.567
source kalshi
Identity
Every row retains its ticker, market, event, or outcome-token identifier.
Price
Probability is normalized to 0–1. The venue-native price remains available.
Volume
Contracts, USD, or the venue-native unit stays explicit beside the value.
Time and source
UTC bucket time and the originating venue stay attached to every returned row.

Market data without hiding venue differences.

Use the same verbs for shared data. Keep native identifiers, price values, volume units, and capability limits explicit when Kalshi and Polymarket differ.

compare_venues.py
 # Same verb. Venue-specific identity.
kalshi = markets.kalshi.ohlcv(
    ticker, resolution="1m", from_ts=start, to_ts=end
)

polymarket = markets.polymarket.ohlcv(
    token_id, resolution="1m", from_ts=start, to_ts=end
)

kalshi.schema_id == polymarket.schema_id
# True 
  1. 01
    MarketsStatus, close time, bid, ask, and last
  2. 02
    Price historyShared OHLCV rows and UTC buckets
  3. 03
    TradesVenue-supported fills with price and size
  4. 04
    Order booksCurrent price levels and available size

From market identity to usable rows.

Choose the venue and identifier. Request the data you need. Keep its units, timestamps, and source attached.

  1. 01

    Choose the venue and market

    Start with a Kalshi ticker, Polymarket event, or outcome token.

  2. 02

    Request the data

    List markets, fetch price history, or read the supported trades and current book.

  3. 03

    Use the returned rows

    Receive stable fields with price units, UTC timestamps, identifiers, and source attached.

Query Kalshi and Polymarket through one API.

// contact

Talk to the team

Self-serve signup lives at app.mostlyright.md. This form is for everything it cannot do: procurement, invoicing, custom licensing, or anything you want to ask first. We reply by email.

I'm a

One email from the team. No spam.