wttr.in
Weather as JSON (or ASCII art) for any place on Earth
The console-friendly weather service, best known for its ASCII terminal output, also speaks JSON via the format=j1 query. One GET returns current conditions plus a multi-day forecast for a named location. No key needed and CORS is wide open.
GET https://wttr.in/London?format=j1
{
"current_condition": [
{
"temp_C": "21",
"temp_F": "70",
"humidity": "69",
"weatherDesc": [
{
"value": "Partly cloudy"
}
],
"windspeedKmph": "15",
"winddir16Point": "WNW"
}
]
}curl "https://wttr.in/London?format=j1"const res = await fetch("https://wttr.in/London?format=j1");
const data = await res.json();
console.log(data);import requests
res = requests.get("https://wttr.in/London?format=j1")
print(res.json())/London?format=j1PROBEDWeather as JSON (or ASCII art) for any place on Earth
/London?limit=5London — documented GET route.
/London?page=1London — documented GET route.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.
Stable. No schema drift observed since monitoring began — the response shape has not changed under our checks.
wttr.in: common questions
Is wttr.in free to use?
Yes — wttr.in is a free weather API. Free tier: Free — limits not published. Whether the free tier allows commercial use is unclear — check the provider docs.
Does wttr.in need an API key?
No — wttr.in needs no API key or signup. You can call it straight away; rate limits still apply (Unpublished (informal per-IP throttling)).
Can I call wttr.in from the browser?
Yes — wttr.in returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.
Is wttr.in up right now?
As of our last scheduled check, wttr.in is unmonitored. We re-probe it every sweep — the status badge and uptime chart above always show the latest.