360° Wildfire intelligence, before it becomes wildfire damage
From active tracking and 4-week forecasts to 20+ years of historical data. Built to protect critical assets and operations.
From active tracking and 4-week forecasts to 20+ years of historical data. Built to protect critical assets and operations.

Satellite detections and authoritative reported events are processed through a multi-input and multi-stage pipeline, delivering structured analytics-grade data.
Data is ingested from publicly available satellites and reported fire events from authoritative sources worldwide.
Raw data is processed and validated to ensure every record meets quality standards before delivery.
The feed is continuously maintained to reflect current conditions, with stale records removed automatically.
Source monitoring and automated alerts ensure consistent data availability across all endpoints
Three time horizons, one schema.
Detections from satellite thermal imaging, with radiative power and confidence scoring for every event.
Verified incident reports with fire name, burned area, and real-time status tracking as incidents evolve.
Forward-looking risk classification driven by weather, fuel moisture, and historical fire seasonality.
Incident-level records with discovery, containment, and fire-out timestamps, acreage, fuel model, and point of origin.
Comprehensive. Hyperlocal. Global. Accurate.
Typical providers
Global
Limited countries/regions
FRP, FWI, FFMC, confidence, fire category, risk forecast, burned area, and more
FRP and basic detection attributes
4-weeks
Up to 10 days or none
Continuous archives from 2005
Limited or not available
Present conditions update hourly
12 hours
On December 16, 2024, three weeks before the Los Angeles wildfires broke out, Ambee's forecast model flagged multiple areas across Southern California as high-risk zones for the coming four weeks.
On January 7, 2025, a series of wildfires erupted across Los Angeles and San Diego County, forcing more than 200,000 evacuations, burning over 57,000 acres, and destroying 18,000 structures.
When the fires were mapped against Ambee's December forecast, 96% of all active fire locations fell within the areas the model had flagged a month in advance.

Price wildfire exposure accurately across WUI properties, reconstruct historical fire perimeters for claims validation, and stress-test portfolios

Monitor active fire proximity to transmission lines and substations in real time

Assess wildfire exposure at the property level across WUI zones using present detections, forecast risk categories, and 30+ years of historical fire activity

Identify physical assets like pipelines, towers, facilities within active fire corridors or elevated forecast zones, and prioritize resilience

Quantify historical wildfire exposure across asset portfolios and model physical climate risk to meet TCFD, SEC, and other regulatory disclosure requirements at the portfolio level

Instantly integrate Ambee wildfire data into any workflow, available in any format, including NetCDF, GRIB, CSV, Parquet, and more.
import http.client
conn = http.client.HTTPSConnection("api.ambeedata.com")
headers = {
'x-api-key': "API_KEY",
'Content-type': "application/json"
}
conn.request("GET", "/fire/latest/by-lat-lng?lat=36.51051&lng=-96.26263", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))const http = require('https');
const options = {
method: 'GET',
hostname: 'api.ambeedata.com',
port: null,
path: '/fire/latest/by-lat-lng?lat=36.51051&lng=-96.26263',
headers: {
'x-api-key': 'API_KEY',
'Content-type': 'application/json'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.ambeedata.com/fire/latest/by-lat-lng?lat=36.51051&lng=-96.26263")
.get()
.addHeader("x-api-key", "API_KEY")
.addHeader("Content-type", "application/json")
.build();
Response response = client.newCall(request).execute();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://api.ambeedata.com/fire/latest/by-lat-lng?lat=36.51051&lng=-96.26263"),
Headers =
{
{ "x-api-key", "API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ambeedata.com/fire/latest/by-lat-lng?lat=36.51051&lng=-96.26263"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "API_KEY")
req.Header.Add("Content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ambeedata.com/fire/latest/by-lat-lng?lat=36.51051&lng=-96.26263",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Content-type: application/json",
"x-api-key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.ambeedata.com/fire/latest/by-lat-lng?lat=36.51051&lng=-96.26263")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'API_KEY'
request["Content-type"] = 'application/json'
response = http.request(request)
puts response.read_bodyimport http.client
conn = http.client.HTTPSConnection("api.ambeedata.com")
headers = {
'x-api-key': "API_KEY",
'Content-type': "application/json"
}
conn.request("GET", "/fire/risk/by-lat-lng?lat=22.948819&lng=101.495951", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))const http = require('https');
const options = {
method: 'GET',
hostname: 'api.ambeedata.com',
port: null,
path: '/fire/risk/by-lat-lng?lat=22.948819&lng=101.495951',
headers: {
'x-api-key': 'API_KEY',
'Content-type': 'application/json'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.ambeedata.com/fire/risk/by-lat-lng?lat=22.948819&lng=101.495951")
.get()
.addHeader("x-api-key", "API_KEY")
.addHeader("Content-type", "application/json")
.build();
Response response = client.newCall(request).execute();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://api.ambeedata.com/fire/risk/by-lat-lng?lat=22.948819&lng=101.495951"),
Headers =
{
{ "x-api-key", "API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ambeedata.com/fire/risk/by-lat-lng?lat=22.948819&lng=101.495951"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "API_KEY")
req.Header.Add("Content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ambeedata.com/fire/risk/by-lat-lng?lat=22.948819&lng=101.495951",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Content-type: application/json",
"x-api-key: API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.ambeedata.com/fire/risk/by-lat-lng?lat=22.948819&lng=101.495951")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = 'API_KEY'
request["Content-type"] = 'application/json'
response = http.request(request)
puts response.read_body {
"message": "success",
"data": [
{
"lat": 36.58732,
"lng": -119.34142,
"detectedAt": "2024-07-05T09:31:00.000Z",
"confidence": "nominal",
"frp": 7.39,
"fwi": 61.65739822387695,
"fireType": "detected",
"fireCategory": "N"
},
{
"lat": 36.793185048266906,
"lng": -119.70205068315111,
"detectedAt": "2024-07-03T07:25:28.000Z",
"modifiedAt": "2024-07-03T07:37:38.093Z",
"fireName": "HAM",
"areaBurnt": 0.01,
"fwi": 62.980899810791016,
"fireType": "reported"
}
]
}{
"message": "success",
"data": [
{
"week": 9,
"fwi_today": 0,
"ffmc_today": 0,
"weekly_seasonality": 0.1429,
"temperature": 28.7,
"precipitation": 0,
"days_since_last_fire": 1,
"predicted_risk": 1,
"predicted_risk_category": "moderate",
"created_time": "2025-02-28T01:08:55.126Z"
},
{
"week": 10,
"fwi_today": 0,
"ffmc_today": 0,
"weekly_seasonality": 0.09320000000000002,
"temperature": 22.6,
"precipitation": 0.1,
"days_since_last_fire": 1,
"predicted_risk": 1,
"predicted_risk_category": "moderate",
"created_time": "2025-02-28T01:08:55.126Z"
},
{
"week": 11,
"fwi_today": 0,
"ffmc_today": 0,
"weekly_seasonality": 0.09320000000000002,
"temperature": 28.5,
"precipitation": 0,
"days_since_last_fire": 1,
"predicted_risk": 1,
"predicted_risk_category": "moderate",
"created_time": "2025-02-28T01:08:55.126Z"
},
{
"week": 12,
"fwi_today": 0,
"ffmc_today": 0,
"weekly_seasonality": 0.1242,
"temperature": 28,
"precipitation": 0,
"days_since_last_fire": 1,
"predicted_risk": 1,
"predicted_risk_category": "moderate",
"created_time": "2025-02-28T01:08:55.126Z"
}
]
}Sign up for an Ambee account and generate your API key from the dashboard.
Select based on what you need: present conditions or a 4-week risk forecast.
Specify using latitude/longitude coordinates or a place name string.
Include your API key in the request header. Receive a structured JSON response.
Stay informed with research, case studies, and product deep-dives on wildfire intelligence
Common questions about Ambee's wildfire data
Wildfire data are collected from different on-ground sensors and earth observation satellites.
Ambee's forest fire dataset is available in near real-time and at high spatial resolution.
Fire datasets can be used by anyone from disaster planning to construction.
Forest fire data is a bundle of information that can be used to identify active forest fires worldwide.
The forest fire API provides near-real-time forest fire data across the globe.
