wttr APIwttr.in ↗
Get current weather conditions and 3-day forecasts with hourly breakdowns for any location worldwide. Temperature, wind, humidity, UV index, and more.
What is the wttr API?
The wttr.in API exposes 2 endpoints that return current weather conditions and multi-day forecasts for any location worldwide. The get_weather endpoint delivers a full 3-day forecast with hourly breakdowns, astronomy data, and 15+ response fields per day. The get_current_weather endpoint returns a flat snapshot of present conditions including temperature, pressure, UV index, cloud cover, and precipitation without forecast data.
curl -X GET 'https://api.parse.bot/scraper/8b6c67cb-8ac9-4eee-959a-ff31ae1720ef/get_weather?location=New+York' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace wttr-in-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.wttr_in_weather_api import Wttr, Weather, CurrentWeather, Location, DayForecast, HourlyCondition, LocationNotFound
client = Wttr()
# Get full weather with 3-day forecast for London
weather = client.weathers.get(location="London")
print(weather.location.name, weather.location.country)
print(weather.current.temp_c, weather.current.weather_desc, weather.current.humidity)
# Iterate over the 3-day forecast
for day in weather.forecast:
print(day.date, day.max_temp_c, day.min_temp_c, day.sunrise, day.sunset)
for hour in day.hourly:
print(hour.time, hour.temp_c, hour.chance_of_rain)
# Get just the current conditions (lighter call, no forecast)
current = client.currentweathers.get(location="Tokyo")
print(current.location.name, current.temp_c, current.feels_like_c, current.wind_speed_kmph)
Get current weather conditions and a 3-day forecast with hourly breakdowns for a given location. Returns temperature, wind, humidity, precipitation, UV index, astronomy data (sunrise/sunset/moon), and hourly forecasts for each day. The location resolves to the nearest weather station area.
| Param | Type | Description |
|---|---|---|
| locationrequired | string | Location to get weather for. Accepts city names (e.g. 'New York', 'London'), coordinates (e.g. '48.8566,2.3522'), airport codes (e.g. 'JFK'), or landmarks. |
{
"type": "object",
"fields": {
"current": "object with temp_c, temp_f, feels_like_c, feels_like_f, humidity, weather_desc, wind_speed_kmph, wind_speed_mph, wind_direction, pressure_mb, visibility_km, uv_index, cloud_cover, precip_mm, observation_time",
"forecast": "array of 3 day objects each with date, max/min/avg temps, sunrise, sunset, moon_phase, and hourly array of conditions",
"location": "object with name, country, region, latitude, longitude identifying the resolved weather station area"
},
"sample": {
"data": {
"current": {
"temp_c": "13",
"temp_f": "55",
"humidity": "72",
"uv_index": "0",
"precip_mm": "0.0",
"cloud_cover": "75",
"pressure_mb": "1019",
"feels_like_c": "12",
"feels_like_f": "54",
"weather_desc": "Light Rain",
"visibility_km": "10",
"wind_direction": "W",
"wind_speed_mph": "7",
"wind_speed_kmph": "12",
"observation_time": "09:30 PM"
},
"forecast": [
{
"date": "2026-06-10",
"hourly": [
{
"time": "0",
"temp_c": "11",
"temp_f": "51",
"humidity": "78",
"uv_index": "0",
"precip_mm": "0.0",
"cloud_cover": "9",
"feels_like_c": "9",
"weather_desc": "Clear ",
"chance_of_rain": "9",
"wind_direction": "WSW",
"wind_speed_kmph": "14"
}
],
"sunset": "09:17 PM",
"moonset": "03:32 PM",
"sunrise": "04:44 AM",
"moonrise": "01:45 AM",
"avg_temp_c": "12",
"avg_temp_f": "54",
"max_temp_c": "16",
"max_temp_f": "60",
"min_temp_c": "9",
"min_temp_f": "49",
"moon_phase": "Waning Crescent"
}
],
"location": {
"name": "Marylebone",
"region": "Westminster Greater London",
"country": "United Kingdom",
"latitude": "51.518",
"longitude": "-0.149"
}
},
"status": "success"
}
}About the wttr API
Endpoints and What They Return
The get_weather endpoint accepts a location string — city names like London or coordinates like 48.8566,2.3522 — and returns three top-level objects: current, forecast, and location. The current object includes temp_c, temp_f, feels_like_c, feels_like_f, humidity, weather_desc, wind_speed_kmph, wind_speed_mph, wind_direction, and related fields. The forecast array contains 3 day objects, each with date, max/min/avg temperatures, sunrise, sunset, moon_phase, and an hourly array for granular intraday data.
Current-Conditions Endpoint
The get_current_weather endpoint targets use cases where forecast data is unnecessary. It returns a flat object with temp_c, temp_f, feels_like_c, humidity, pressure_mb, uv_index, cloud_cover, precip_mm, wind_degree, and a location sub-object containing name, country, region, latitude, and longitude. This endpoint is lighter and suitable for dashboards or status displays that only need a real-time snapshot.
Location Input
Both endpoints accept the same location parameter. City names, region names, and decimal coordinate pairs are all valid inputs. The location object in each response echoes back the resolved name, country, region, and latitude/longitude, so you can confirm which location the response corresponds to — useful when passing ambiguous city names.
The wttr API is a managed, monitored endpoint for wttr.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when wttr.in changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official wttr.in API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display current temperature and humidity on a travel planning dashboard using
get_current_weather - Build a 3-day trip weather summary using the
forecastarray fromget_weather - Show sunrise and sunset times for a given city by reading
sunriseandsunsetfields in the forecast day objects - Alert users when UV index exceeds a threshold using the
uv_indexfield fromget_current_weather - Render an hourly temperature chart for today using the
hourlyarray in the first forecast day object - Display moon phase information for astronomy or gardening apps using
moon_phasefrom the forecast
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does wttr.in have an official developer API?+
What does the `get_weather` endpoint return that `get_current_weather` does not?+
get_weather includes a forecast array with 3 day objects, each containing max/min/avg temperatures, sunrise, sunset, moon_phase, and an hourly breakdown. get_current_weather returns only a flat snapshot of present conditions with no forecast or astronomy data.Does the API return hourly forecasts beyond a 3-day window?+
forecast array covers 3 days with hourly data per day. You can fork this API on Parse and revise it to request extended forecast ranges if the underlying source supports them.Are historical weather records available through this API?+
How specific can the `location` input be — can I pass a zip code or airport code?+
location parameter accepts city names and decimal coordinate pairs. Zip codes and airport codes are not explicitly listed as supported inputs. If a city name is ambiguous, the resolved location is echoed back in the location response object — check name, country, and region to verify the match.