Docs navigation
REST API
Weather MCP
Agents as developers
Weather
Smarter Weather covers the 50 US states and DC only. Every route that takes a point (lat and lon, zip or location) returns 404 outside-coverage for a point outside the 50 states and DC. /v1/alerts and /v1/observations return it for a bounding box that touches no US domain (CONUS, Alaska, Hawaii); a box that touches one may still include area outside the US. /v1/weather/batch reports it per item as outside_coverage, and /v1/point with points and /v1/series/batch mark such points out_of_domain, as they do a point the check could not reach in time (retry it). If the location lookup is unavailable, the check can briefly fail open. Routes keyed by a station, radar site, forecast office or alert id, and nationwide lists, are not filtered by point, so do not treat an empty result as an all-clear. See Errors.
The unified weather endpoint returns current conditions, hourly and daily forecasts, alerts, outlooks, and astronomy for a location in a single request. A batch form covers many points in one round trip. Outlooks are also available as their own resource when you only need convective risk.
What you get
A single weather request returns a blended snapshot composed of multiple NOAA models and the live NWS alert feed. Pick include sections per request to keep payloads small.
Available data domains
currentReal-time conditions from RTMA analysis: temperature, wind, humidity, pressure, visibility.
hourlyBlended hourly forecast from NBM, HRRR, and GFS models. Includes temperature, precipitation probability, wind, cloud cover.
dailyDaily high/low temperatures, precipitation totals, wind, sunrise/sunset, and condition summaries.
alertsActive NWS weather alerts affecting the location, with severity, event type, and description.
outlooksSPC convective outlook risk levels (marginal, slight, enhanced, moderate, high).
astroSunrise, sunset, moonrise, moonset, and moon phase for the location.
Batch requests
For dashboards and bulk workflows, the endpoint also accepts a batch form that returns weather for many locations in a single round trip. The request body and per-tier batch-size limits are in the embedded reference below.
Data sources
Weather data is blended from multiple NOAA models for accuracy across time horizons:
- RTMA — Real-Time Mesoscale Analysis for current conditions
- HRRR — High-Resolution Rapid Refresh for 0–18 hour forecasts
- NBM — National Blend of Models for extended forecasts
- GFS — Global Forecast System for day 7+ guidance
- NWS — National Weather Service alert feed for active warnings
# first: export SMARTERWEATHER_API_KEY=sw_live_... (or: set -a; source .env; set +a)
curl "https://api.smarterweather.com/v1/weather?location=Boston,%20MA&units=imperial" \
-H "Authorization: Bearer $SMARTERWEATHER_API_KEY"// save as sample.mjs; run: node --env-file=.env sample.mjs (Node 20.6+, ESM top-level await)
const res = await fetch(
"https://api.smarterweather.com/v1/weather?location=Boston,%20MA&units=imperial",
{ headers: { Authorization: `Bearer ${process.env.SMARTERWEATHER_API_KEY}` } },
);
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
console.log(JSON.stringify(data, null, 2));import os, sys, requests
r = requests.get(
"https://api.smarterweather.com/v1/weather",
params={"location":"Boston, MA","units":"imperial"},
headers={"Authorization": f"Bearer {os.environ['SMARTERWEATHER_API_KEY']}"},
)
if not r.ok:
sys.exit(f"{r.status_code} {r.text}")
data = r.json()
print(data)package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.smarterweather.com/v1/weather?location=Boston,%20MA&units=imperial", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("SMARTERWEATHER_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
log.Fatal(err)
}
if res.StatusCode < 200 || res.StatusCode > 299 {
log.Fatalf("%s %s", res.Status, body)
}
fmt.Println(string(body))
}Weather reference
Rendered live from the canonical OpenAPI document. This is the canonical reference for the weather resource.
Paste a test key (sw_test_*) from your dashboard into Test Request. Calls with your own key count toward your plan.