Tomorrow.io Completes Successful Launch of First Private Weather-Radar Satellite
Historic Satellite Launch Paves Way for Groundbreaking Advancement in Global Weather Forecasting
Recognized as a leader by experts

A New Era of Real-time Weather Intelligence
Tomorrow.io’s first satellite and upcoming constellation is not only revolutionizing weather forecasting but bridging a radar coverage gap for five billion people—all while transforming data inputs for our cutting-edge weather intelligence technology.
Adapt at Scale from One Central Location
Backed by weather intelligence, Tomorrow.io’s Weather and Climate Security Platform empowers teams of all sizes to make the right decisions at the right time with:
- Hyperlocal monitoring
- Predictive Insights
- Automated alerts
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"
}
}
Customizable Insights for Every Industry

Minimize safety risks while optimizing schedules and flight paths for improved operations.
Learn More

Reduce delays and keep drivers safer by knowing what to expect on every route.
Learn More

Protect crews, ensure continuous operations, and monitor all sites from one central location.
Learn More

Prioritize employee and community safety with real-time monitoring and alerts.
Learn More

Mitigate supply chain disruptions, optimize inventory management, and ensure resilient operations.
Learn More

Improve early warning and operational decision-making across all levels of government.
Learn More