Use when a task needs real weather data pulled live - "what's the forecast for X", "current temperature/wind here", "historical weather for this date range", "air quality / AQI right now", or "active US weather alerts" - and you should call a free keyless API instead of deliberating. Open-Meteo is the default (global forecast, history, air quality, no key); api.weather.gov covers official US alerts. Do NOT use for turning place names into coordinates, country facts, or postal codes - use geo-places instead; do NOT use for FX or crypto prices - use finance-fx instead; if the request is a vague "I need live data", route through public-data-api-picker.
---
name: Weather & Climate Data
description: Use when a task needs real weather data pulled live - "what's the forecast for X", "current temperature/wind here", "historical weather for this date range", "air quality / AQI right now", or "active US weather alerts" - and you should call a free keyless API instead of deliberating. Open-Meteo is the default (global forecast, history, air quality, no key); api.weather.gov covers official US alerts. Do NOT use for turning place names into coordinates, country facts, or postal codes - use geo-places instead; do NOT use for FX or crypto prices - use finance-fx instead; if the request is a vague "I need live data", route through public-data-api-picker.
---
# Weather & Climate Data
Fetch real weather with one HTTP call. The mistake this prevents: reaching for OpenWeatherMap or WeatherAPI from training memory - both are key-walled and the task stalls at "sign up for an API key" - when Open-Meteo answers the same question keyless in under a second.
## Ranked APIs
1. **Open-Meteo** - DEFAULT for everything: current conditions, 16-day forecast, historical archive, air quality. No key, no signup, global coverage. Free tier is non-commercial, ~10,000 calls/day.
2. **api.weather.gov (NWS)** - US only. Use it when the task needs *official* US government alerts or forecast wording. No key, but a `User-Agent` header is required.
## Procedure
1. **Get coordinates first.** Every endpoint below takes `latitude`/`longitude`, not place names. If you only have a city name, resolve it with Open-Meteo's geocoder: `https://geocoding-api.open-meteo.com/v1/search?name={city}&count=1` → `results[0].latitude`, `results[0].longitude`. For any geocoding beyond this one step (addresses, POIs, reverse), switch to geo-places.
2. **Pick the endpoint for the time range** - current/forecast, historical, air quality, or alerts (templates below).
3. **State units in the answer.** Open-Meteo defaults to °C, km/h, mm; every response carries a `*_units` object - read it rather than assuming. Append `&temperature_unit=fahrenheit&wind_speed_unit=mph&precipitation_unit=inch` for US-facing output.
Ask the user only if missing: location (no default), date range (default: now + 7 days), units (default: metric unless the location is in the US).
## URL templates + real response shapes
**Current + forecast** (up to `forecast_days=16`):