Query weather data through one API.

Fetch historical reports, current observations, forecast models, official daily summaries, and station-level satellite measurements. Every row keeps its units, timestamps, and source.

observations.py
 from mostlyright import weather

rows = weather.observations(
    "KNYC", "2025-01-06", "2025-01-07"
)

rows[["event_time_utc", "temp_c", "source"]].tail(1)

# event_time_utc        temp_c  source
# 2025-01-07 23:51+00:00   -1.1  ghcnh 

Observations, forecasts, and satellite data.

Use one API for archived observations, current reports, model forecasts, daily summaries, and satellite measurements.

Observations

Read archived station reports and current METAR with the same measurement fields.

Forecasts

Compare station and gridded models with run time and target time attached.

Satellite data

Add cloud, temperature, aerosol, and radiation measurements.

One schema across weather sources.

Your code receives descriptive fields, documented units, explicit timestamps, and source identity.

weather.observations() normalized row
temp_c -1.1
event_time_utc 2025-01-07T23:51Z
source ghcnh
Measurement
Descriptive fields such as temp_c, cloud_height_m, and pixel_value.
Time
event_time_utc states when it applies; knowledge_time_utc states when it became available.
Unit
Documented units stay beside observations, forecasts, summaries, and satellite measurements.
Source
Every row identifies the provider, product or model, and station that produced it.

Satellite measurements without image pipelines.

Query a station for cloud, surface-temperature, aerosol, and radiation measurements from NOAA, JMA, and EUMETSAT. Product, unit, scan time, and source stay on every row.

satellite.py
 from datetime import datetime, timezone
from mostlyright import weather

pixels = weather.satellite(
    "KNYC",
    satellite="goes19",
    product="ABI-L2-ACMC",
    from_time=datetime(2026, 7, 1, tzinfo=timezone.utc),
    to_time=datetime(2026, 7, 2, tzinfo=timezone.utc),
)

# one station pixel per variable and scan 
  1. 01
    CloudMask, height, and pressure
  2. 02
    Surface temperatureLand-surface temperature
  3. 03
    AerosolAerosol optical depth
  4. 04
    RadiationRadiation and stability fields

From one request to consistent weather rows.

Choose the station and data type. Receive named columns with units, timestamps, and source fields attached.

  1. 01

    Choose the location

    Start with a weather station or the place you need to model.

  2. 02

    Choose the data

    Request observations, forecasts, daily summaries, or satellite measurements.

  3. 03

    Use the returned rows

    Receive consistent fields with units, timestamps, and sources attached.

Fetch observations, forecasts, and satellite data 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.