Skip to content

Quickstart

Mostly Right returns historical and live public data with the same core fields, plus explicit sources and timestamps. Call the weather, markets, economy, or finance domain directly.

Terminal window
pip install mostlyrightmd

Python 3.11+. The import name is mostlyright.

Get your key with the subscription (USD 29/month), then set it in your environment:

Terminal window
export MOSTLYRIGHT_API_KEY="..."

The key downloads the current source manifest; the SDK uses the returned endpoint and schema definitions, then fetches rows directly from each source. Without a configured key, calls raise ApiKeyRequiredError.

Fetch the newest report from KNYC, the Central Park weather station in New York, beside a fixed historical day.

from mostlyright import weather
live = await weather.live.latest("KNYC")
historical = weather.observations(
"KNYC", "2025-01-15", "2025-01-15",
return_type="list",
)[-1]
for label, row in (("live", live), ("historical", historical)):
print(label, row["event_time_utc"], row["temp_f"], row["source"])

Example output—the live values move; the historical row stays fixed:

live 2026-07-23T17:51:00Z 77.0 awc.live
historical 2025-01-15T23:51:00Z 28.0 iem

Both rows expose event_time_utc, temp_f, and source with the same meanings. Their values differ because the observations are eighteen months apart. Full rows retain raw_metar; historical rows also add local_standard_date, the station-local calendar day, and use the canonical ICAO station key (KNYC rather than the live AWC row’s NYC).

If the live source has no fresh report, the call raises NoLiveDataError instead of returning stale data.

Each domain exposes methods for its own data:

  • weather.observations() and weather.forecasts() for weather inputs
  • economy.series() and economy.snapshot() for release vintages
  • markets.kalshi.* and markets.polymarket.* for venue data
  • finance.* for earnings transcripts and facts

Start with these methods when you need to choose the sources, date window, or joins.

Daily summaries are a separate source from per-report observations:

from mostlyright import weather
daily = weather.daily_summaries(
"KNYC",
"2025-01-06",
"2025-01-12",
)

Each row contains the official high and low for a station-local date, the published report type, issuance time when available, and source. These are not aggregates reconstructed from METAR observations.