Explore the World’s Best Free Weather API
See why developers and businesses rely on the Tomorrow.io free Weather API for fast, reliable, and hyper-accurate weather data with the most cutting-edge interfaces
See why developers and businesses rely on the Tomorrow.io Weather API for fast, reliable, and hyper-accurate weather data with the most cutting-edge interfaces

Integrate and Adapt with the World’s Leading Weather API
Get fast, reliable, and hyper-accurate weather data with 80+ layers and insights.
Integrate cutting-edge, real-time weather data directly into your applications.
Access ultra-accurate, hyperlocal data up to 14 days in the future for any location on the globe.
Optimize your operations with access to hourly and daily historical weather data up to 20 years in the past.
curl --request GET \
--url 'https://api.tomorrow.io/v4/weather/realtime?location=toronto&apikey=XXX'\
--header 'accept: application/json'
{
"data": {
"time": "2023-02-14T13:53:00Z",
"values": {
"cloudBase": null,
"cloudCeiling": null,
"cloudCover": 5,
"dewPoint": -0.19,
"freezingRainIntensity": 0,
"humidity": 100,
"precipitationProbability": 0,
"pressureSurfaceLevel": 1005.56,
"rainIntensity": 0,
"sleetIntensity": 0,
"snowIntensity": 0,
"temperature": 0.31,
"temperatureApparent": 0.31,
"uvHealthConcern": 0,
"uvIndex": 0,
"visibility": 14.43,
"weatherCode": 1000,
"windDirection": 278.31,
"windGust": 1.19,
"windSpeed": 1.19
}
},
"location": {
"lat": 43.653480529785156,
"lon": -79.3839340209961,
"name": "Old Toronto, Toronto, Golden Horseshoe, Ontario, Canada",
"type": "administrative"
}
}
curl --request GET \
--url 'https://api.tomorrow.io/v4/weather/realtime?location=toronto&apikey=XXX'\
--header 'accept: application/json'
const options = {method: 'GET',
headers: {accept: 'application/json'}};
fetch('https://api.tomorrow.io/v4/weather/realtime?location=toronto&apikey=XXX, options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
const sdk = require('api')('@climacell-docs/v4#3efoz19ldn18lig');
sdk.auth('XXX');
sdk.realtimeWeather({location: 'toronto'})
.then(({ data }) => console.log(data))
.catch(err => console.error(err));
import requests
url = "https://api.tomorrow.io/v4/weather/realtime?location=toronto&apikey=XXX"
headers = {"accept": "application/json"}
response = requests.get(url, headers=headers)
print(response.text)
library(httr)
url <- "https://api.tomorrow.io/v4/weather/realtime"
queryString <- list(
location = "toronto",
apikey = "XXX"
)
response <- VERB("GET", url, query = queryString, content_type("application/octet-stream"), accept("application/json"))
content(response, "text")
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.tomorrow.io/v4/weather/realtime?location=toronto&apikey=XXX")
.get()
.addHeader("accept", "application/json")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tomorrow.io/v4/weather/realtime?location=toronto&apikey=XXX"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("accept", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
{
"data": {
"time": "2023-02-14T13:53:00Z",
"values": {
"cloudBase": null,
"cloudCeiling": null,
"cloudCover": 5,
"dewPoint": -0.19,
"freezingRainIntensity": 0,
"humidity": 100,
"precipitationProbability": 0,
"pressureSurfaceLevel": 1005.56,
"rainIntensity": 0,
"sleetIntensity": 0,
"snowIntensity": 0,
"temperature": 0.31,
"temperatureApparent": 0.31,
"uvHealthConcern": 0,
"uvIndex": 0,
"visibility": 14.43,
"weatherCode": 1000,
"windDirection": 278.31,
"windGust": 1.19,
"windSpeed": 1.19
}
},
"location": {
"lat": 43.653480529785156,
"lon": -79.3839340209961,
"name": "Old Toronto, Toronto, Golden Horseshoe, Ontario, Canada",
"type": "administrative"
}
}
curl --request GET \
--url 'https://api.tomorrow.io/v4/weather/forecast?location=newyork&apikey=XXX' \
--header 'accept: application/json'
const options = {method: 'GET',
headers: {accept: 'application/json'}};
fetch('https://api.tomorrow.io/v4/weather/forecast?location=newyork&apikey=XXX', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
const sdk = require('api')('@climacell-docs/v4#3efoz19ldn18lig');
sdk.auth('XXX');
sdk.weatherForecast({location: 'newyork'})
.then(({ data }) => console.log(data))
.catch(err => console.error(err));
import requests
url = "https://api.tomorrow.io/v4/weather/forecast?location=newyork&apikey=XXX"
headers = {"accept": "application/json"}
response = requests.get(url, headers=headers)
print(response.text)
library(httr)
url <- "https://api.tomorrow.io/v4/weather/forecast"
queryString <- list(
location = "newyork",
apikey = "XXX"
)
response <- VERB("GET", url, query = queryString, content_type("application/octet-stream"), accept("application/json"))
content(response, "text")
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.tomorrow.io/v4/weather/forecast?location=newyork&apikey=XXX")
.get()
.addHeader("accept", "application/json")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tomorrow.io/v4/weather/forecast?location=newyork&apikey=XXX"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("accept", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
{
"timelines":{
"minutely":[],
"hourly":[ "time":"2023-02-14T13:00:00Z",
"values":{
"cloudBase":1.46,
"cloudCeiling":1.46,
"cloudCover":0,
"dewPoint":-6.5,
"evapotranspiration":0.055,
"freezingRainIntensity":0,
"humidity":54,
"iceAccumulation":0,
"iceAccumulationLwe":0,
"precipitationProbability":0,
"pressureSurfaceLevel":1013.22,
"rainAccumulation":0,
"rainAccumulationLwe":0,
"rainIntensity":0,
"sleetAccumulation":0,
"sleetAccumulationLwe":0,
"sleetIntensity":0,
"snowAccumulation":0,
"snowAccumulationLwe":0,
"snowIntensity":0,
"temperature":2,
"temperatureApparent":0.13,
"uvHealthConcern":0,
"uvIndex":0,
"visibility":16,
"weatherCode":1000,
"windDirection":337.63,
"windGust":3.19,
"windSpeed":1.81
}
},
],
"daily":[ {
"time":"2023-02-14T00:00:00Z",
"values":{
"cloudBaseAvg":1.71,
"cloudBaseMax":2.26,
"cloudBaseMin":0,
"cloudCeilingAvg":1.53,
"cloudCeilingMax":2.41,
"cloudCeilingMin":0,
"cloudCoverAvg":15.18,
"cloudCoverMax":70,
"cloudCoverMin":0,
"dewPointAvg":-6.52,
"dewPointMax":-3.5,
"dewPointMin":-8.99,
"evapotranspirationAvg":0.095,
"evapotranspirationMax":0.2,
"evapotranspirationMin":0.054,
"evapotranspirationSum":2.28,
"freezingRainIntensityAvg":0,
"freezingRainIntensityMax":0,
"freezingRainIntensityMin":0,
"humidityAvg":48.55,
"humidityMax":54.75,
"humidityMin":39,
"iceAccumulationAvg":0,
"iceAccumulationLweAvg":0,
"iceAccumulationLweMax":0,
"iceAccumulationLweMin":0,
"iceAccumulationMax":0,
"iceAccumulationMin":0,
"iceAccumulationSum":0,
"moonriseTime":"2023-02-14T16:57:59Z",
"moonsetTime":"2023-02-14T01:56:19Z",
"precipitationProbabilityAvg":0.4,
"precipitationProbabilityMax":10,
"precipitationProbabilityMin":0,
"pressureSurfaceLevelAvg":1012.55,
"pressureSurfaceLevelMax":1018.98,
"pressureSurfaceLevelMin":1007.95,
"rainAccumulationAvg":0,
"rainAccumulationLweAvg":0,
"rainAccumulationLweMax":0.01,
"rainAccumulationLweMin":0,
"rainAccumulationMax":0.01,
"rainAccumulationMin":0,
"rainAccumulationSum":0.01,
"rainIntensityAvg":0,
"rainIntensityMax":0.1,
"rainIntensityMin":0,
"sleetAccumulationAvg":0,
"sleetAccumulationLweAvg":0,
"sleetAccumulationLweMax":0,
"sleetAccumulationLweMin":0,
"sleetAccumulationMax":0,
"sleetAccumulationMin":0,
"sleetIntensityAvg":0,
"sleetIntensityMax":0,
"sleetIntensityMin":0,
"snowAccumulationAvg":0,
"snowAccumulationLweAvg":0,
"snowAccumulationLweMax":0,
"snowAccumulationLweMin":0,
"snowAccumulationMax":0,
"snowAccumulationMin":0,
"snowAccumulationSum":0,
"snowIntensityAvg":0,
"snowIntensityMax":0,
"snowIntensityMin":0,
"sunriseTime":"2023-02-13T21:28:00Z",
"sunsetTime":"2023-02-14T08:22:00Z",
"temperatureApparentAvg":1.45,
"temperatureApparentMax":9.38,
"temperatureApparentMin":-7,
"temperatureAvg":3.41,
"temperatureMax":9.38,
"temperatureMin":-0.71,
"uvHealthConcernAvg":0,
"uvHealthConcernMax":1,
"uvHealthConcernMin":0,
"uvIndexAvg":0,
"uvIndexMax":2,
"uvIndexMin":0,
"visibilityAvg":16,
"visibilityMax":16,
"visibilityMin":16,
"weatherCodeMax":1000,
"weatherCodeMin":1000,
"windDirectionAvg":310.88,
"windGustAvg":4.34,
"windGustMax":10.56,
"windGustMin":2.36,
"windSpeedAvg":3.17,
"windSpeedMax":7.36,
"windSpeedMin":1.75
}
},
]
},
"location":{
"lat":35.72515106201172,
"lon":139.76300048828125,
"name":"NEWYORK, 不忍通り, 千駄木三丁目, 文京区, 東京都, 113-0022, 日本",
"type":"yes"
}
}
curl --request GET \
--url 'https://api.tomorrow.io/v4/weather/history/recent?location=austin&apikey=XXX'\
--header 'accept: application/json'
const options = {method: 'GET',
headers: {accept: 'application/json'}};
fetch('https://api.tomorrow.io/v4/weather/history/recent?location=austin&apikey=XXX, options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
const sdk = require('api')('@climacell-docs/v4#3efoz19ldn18lig');
sdk.auth('XXX');
sdk.weatherRecentHistory({location: 'austin'})
.then(({ data }) => console.log(data))
.catch(err => console.error(err));
import requests
url = "https://api.tomorrow.io/v4/weather/history/recent?location=austin&apikey=XXX"
headers = {"accept": "application/json"}
response = requests.get(url, headers=headers)
print(response.text)
library(httr)
url <- "https://api.tomorrow.io/v4/weather/history/recent"
queryString <- list(
location = "austin",
apikey = "XXX"
)
response <- VERB("GET", url, query = queryString, content_type("application/octet-stream"), accept("application/json"))
content(response, "text")
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.tomorrow.io/v4/weather/history/recent?location=austin&apikey=XXX")
.get()
.addHeader("accept", "application/json")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tomorrow.io/v4/weather/history/recent?location=austin&apikey=XXX"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("accept", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
{
"timelines":{
"hourly":[
{
"time":"2023-02-13T13:00:00Z",
"values":{
"cloudBase":0.35,
"cloudCeiling":0.35,
"cloudCover":52,
"dewPoint":3,
"evapotranspiration":0.022,
"freezingRainIntensity":0,
"humidity":82,
"iceAccumulation":0,
"iceAccumulationLwe":0,
"precipitationProbability":0,
"pressureSurfaceLevel":999.62,
"rainAccumulation":0,
"rainAccumulationLwe":0,
"rainIntensity":0,
"sleetAccumulation":0,
"sleetAccumulationLwe":0,
"sleetIntensity":0,
"snowAccumulation":0,
"snowAccumulationLwe":0,
"snowDepth":0,
"snowIntensity":0,
"temperature":5.81,
"temperatureApparent":5.81,
"uvHealthConcern":0,
"uvIndex":0,
"visibility":16,
"weatherCode":1101,
"windDirection":123.31,
"windGust":1,
"windSpeed":0.69
}
}
],
"daily":[
{
"time":"2023-02-13T00:00:00Z",
"values":{
"cloudBaseAvg":0.56,
"cloudBaseMax":2.06,
"cloudBaseMin":0,
"cloudCeilingAvg":0.18,
"cloudCeilingMax":1.35,
"cloudCeilingMin":0,
"cloudCoverAvg":33.29,
"cloudCoverMax":100,
"cloudCoverMin":0,
"dewPointAvg":4.2,
"dewPointMax":12.81,
"dewPointMin":-0.81,
"evapotranspirationAvg":0.105,
"evapotranspirationMax":0.342,
"evapotranspirationMin":0.019,
"evapotranspirationSum":2.531,
"freezingRainIntensityAvg":0,
"freezingRainIntensityMax":0,
"freezingRainIntensityMin":0,
"humidityAvg":61.04,
"humidityMax":82,
"humidityMin":32,
"iceAccumulationAvg":0,
"iceAccumulationLweAvg":0,
"iceAccumulationLweMax":0,
"iceAccumulationLweMin":0,
"iceAccumulationMax":0,
"iceAccumulationMin":0,
"iceAccumulationSum":0,
"moonriseTime":"2023-02-13T07:00:46Z",
"moonsetTime":"2023-02-13T17:45:04Z",
"precipitationProbabilityAvg":0,
"precipitationProbabilityMax":0,
"precipitationProbabilityMin":0,
"pressureSurfaceLevelAvg":998.83,
"pressureSurfaceLevelMax":1000.73,
"pressureSurfaceLevelMin":993.72,
"rainAccumulationAvg":0,
"rainAccumulationLweAvg":0,
"rainAccumulationLweMax":0,
"rainAccumulationLweMin":0,
"rainAccumulationMax":0,
"rainAccumulationMin":0,
"rainAccumulationSum":0,
"rainIntensityAvg":0,
"rainIntensityMax":0,
"rainIntensityMin":0,
"sleetAccumulationAvg":0,
"sleetAccumulationLweAvg":0,
"sleetAccumulationLweMax":0,
"sleetAccumulationLweMin":0,
"sleetAccumulationMax":0,
"sleetAccumulationMin":0,
"sleetIntensityAvg":0,
"sleetIntensityMax":0,
"sleetIntensityMin":0,
"snowAccumulationAvg":0,
"snowAccumulationLweAvg":0,
"snowAccumulationLweMax":0,
"snowAccumulationLweMin":0,
"snowAccumulationMax":0,
"snowAccumulationMin":0,
"snowAccumulationSum":0,
"snowDepthAvg":0,
"snowDepthMax":0,
"snowDepthMin":0,
"snowDepthSum":0,
"snowIntensityAvg":0,
"snowIntensityMax":0,
"snowIntensityMin":0,
"sunriseTime":"2023-02-12T13:12:00Z",
"sunsetTime":"2023-02-13T00:18:00Z",
"temperatureApparentAvg":11.95,
"temperatureApparentMax":21.5,
"temperatureApparentMin":5.81,
"temperatureAvg":11.95,
"temperatureMax":21.5,
"temperatureMin":5.81,
"uvHealthConcernAvg":0,
"uvHealthConcernMax":1,
"uvHealthConcernMin":0,
"uvIndexAvg":1,
"uvIndexMax":4,
"uvIndexMin":0,
"visibilityAvg":16,
"visibilityMax":16,
"visibilityMin":16,
"weatherCodeMax":1000,
"weatherCodeMin":1000,
"windDirectionAvg":162.33,
"windGustAvg":4.01,
"windGustMax":8,
"windGustMin":0.5,
"windSpeedAvg":2.18,
"windSpeedMax":5.19,
"windSpeedMin":0.31
}
}
]
},
"location":{
"lat":30.271127700805664,
"lon":-97.74369812011719,
"name":"Austin, Travis County, Texas, United States",
"type":"administrative"
}
}

Tomorrow.io Free
Weather API
Tomorrow.io’s weather API delivers the fast, reliable, and hyper-accurate weather data you need, with the flexibility to integrate this data source with any application, system, or program.
From temperature and precipitation to cloud cover, wind speed, and more, businesses across all industries use weather data from Tomorrow.io’s weather API to make decisions in their day-to-day business operations.
With versatile functionality and scope, blazing-fast responsiveness, and the everyday reliability developers need, our weather API offers ease of implementation to get started quickly, along with a host of cutting-edge and unique features that deliver not just weather data and forecasts but true weather intelligence. Sign up to experience our weather API for yourself today!
Weather API Capabilities
Learn more about the Tomorrow.io Weather API’s enterprise-grade capabilities:
Integrate, Automate, and Adapt
80+ Data Layers with Global Coverage
Rich library of weather parameters to cover any condition in any location
Go beyond the forecast with one endpoint
Comprehensive documentation with access to any of our endpoints to get started experimenting - immediately!
Use webhooks to send dynamic triggered alerts
Use webhooks to send dynamic triggered alerts when specific weather thresholds are met at your monitored locations
Models driven by use cases
Out-of-the-box templates such as Road Risk and Fire Index allow for easy integration
Map Layer Visualization
See weather patterns by layering color-coded tiles over your existing map interface
Hyper-Local & High Resolution
Proprietary weather-of-things data and models are optimized for hi-resolution impact, globally
80+ Data Layers with Global Coverage
Rich library of weather parameters to cover any condition in any location
Go beyond the forecast with one endpoint
Comprehensive documentation with access to any of our endpoints to get started experimenting - immediately!
Use webhooks to send dynamic triggered alerts
Use webhooks to send dynamic triggered alerts when specific weather thresholds are met at your monitored locations
Models driven by use cases
Out-of-the-box templates such as Road Risk and Fire Index allow for easy integration
Map Layer Visualization
See weather patterns by layering color-coded tiles over your existing map interface
Hyper-Local & High Resolution
Proprietary weather-of-things data and models are optimized for hi-resolution impact, globally
Complete Weather Data API Coverage
Get years of historical weather data, request real-time weather information, or make use of accurate weather forecasts.
Data Catalog
With 80+ data fields, get everything you need all in one place from our weather API.
Explore 40+ key weather data fields, including temperature, dew point, wind speed, and more.
Understand what precautions to take with respect to pollution, meet EPA standard regulations, and plan your outdoor activity.
Blending a mixture of statistical and physical/chemical modeling. Estimate areas where plants are germinating and producing pollen that may be lofted into the air.
Determine threat of flooding and impact to infrastructure further in advance.
Estimate fire danger. Know when and where fire or smoke could impact operations or communities to help increase safety for staff members and local residents.
See all types of precipitation intensity and duration.
Flexible Plans Built to Scale as You Grow
Free
For individuals or teams just getting started
$0 / month
Features:
- Weather Intelligence platform access
- Map View with Weather Tiles
- Weather Timelines and Trendlines
- Weather API Access
- Core Weather Data Layers
- Industry-Based Insights Templates
- 5-Day Forecast
- 6-Hour Historical Weather Data
- 1 Automatically monitored Location
- 1 Weather-Based Alert
Enterprise
For teams and companies that need to manage work across initiatives.
Contact us for Offer
Enterprise features include:
- 14-Day Forecast
- Custom Automatically Monitored Locations
- Custom Weather-Based Alerts
- Custom Number of Users Notified
- Custom Seats
- Tomorrow.io Premium Data Layers:
- Technical and Meteorological Support
- Integration of your own dynamic assets into the platform
- Increased polyline and polygon distance and area
- Navigational routes
- SAML - based single sign-on (SSO)
- Custom SLAs
Location Types
- Point
- Polygon
- Polyline
Get Up and Running Quickly in Any Industry
Weather API Documentation
The Tomorrow.io Weather API combines traditional weather data sources with new sensing technologies and proprietary modeling to deliver best-in-class weather data, with hyperlocal observations, ground-level tracking, up-to-date data delivery, and minutely forecasting.