Wildfire Asset Exposure Screener — Live Perimeter Distance avatar

Wildfire Asset Exposure Screener — Live Perimeter Distance

Pricing

from $5.50 / 1,000 results

Go to Apify Store
Wildfire Asset Exposure Screener — Live Perimeter Distance

Wildfire Asset Exposure Screener — Live Perimeter Distance

Screen assets - offices, homes, facilities, portfolios - against live NIFC wildfire perimeters plus USFS Wildfire Hazard Potential class and historical burn history. Per point: distance to nearest fire, hazard class, past burn year. MCP-ready wildfire risk API.

Pricing

from $5.50 / 1,000 results

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Screen any list of asset locations against live US wildfire perimeters from NIFC WFIGS (the interagency system behind official fire maps). For every point you supply, this actor answers the question insurers, portfolio managers, and ops teams actually ask:

"Is this location inside or near an active wildfire — and how close, exactly?"

One input row in, one enriched row out: in-perimeter flag, distance in miles to the nearest active fire perimeter edge, fire name, acres, containment %, a simple exposure level (IN_PERIMETER / WITHIN_5_MI / WITHIN_25_MI / CLEAR) — plus two background risk signals looked up at the same point: USFS Wildfire Hazard Potential class and whether the point has ever burned before.

All active-fire geometry math (ray-casting point-in-polygon with holes, point-to-perimeter-edge distance) runs locally against the live perimeter polygons — no geocoding services, no API keys, no rate-limited third parties. The two background signals are live per-point lookups against USFS and NIFC ArcGIS services.

What changed in v1.1 (2026-08-01 validation pass)

Fixed a false all-clear. v1.0 loaded two WFIGS sources (perimeters and incident points), computed a failure flag for each, and never put either on the row. It then continued as long as one source loaded. So a perimeter-layer outage plus a healthy incident-points layer emitted a billable row reading exposure_level: "CLEAR", in_perimeter: false, fires_within_radius: 0, error: null — a confident low-risk verdict computed from a partial fire dataset. That is the same shape as the FAA drone screener, which computed "all failed" as every layer failing and so emitted a confident airspace verdict with 7 of 8 layers down.

Now: every row carries perimeters_status, incident_points_status, whp_status, historical_burn_status and screening_complete. If any requested WFIGS source fails to load, exposure_level reads ERROR (already part of this field's vocabulary) with in_perimeter: null and a PARTIAL SCREEN message, instead of a false CLEAR. If both fail, the run fails and bills nothing.

Contained fires are now distinguishable. NIFC keeps fully-contained fires in its Current layers for weeks or months. Measured live on 2026-08-01: 59 of 229 perimeters (25.8%) were 100% contained, including a 642,029-acre Nebraska fire discovered on 2026-03-13, and 96 of 573 incident points (16.8%). v1.0 reported IN_PERIMETER for those exactly as it would for an active burn. exposure_level is unchanged (append-only — it has always meant "against all current WFIGS records"), but v1.1 adds fire_is_contained, active_exposure_level, active_fires_within_radius, contained_fires_within_radius, nearest_active_fire_name and nearest_active_fire_distance_miles. Read active_exposure_level for an operational answer.

A live drift gate runs before a single billable row exists. It verifies every layer still exposes every column this actor queries; that POOState still uses the US-XX form (a bare postal code silently matches nothing, which turns every state-scoped run into a false all-clear); that the state filter actually filters — measured live, attr_POOState IN ('US-CA') returns 14 of 229 and the bare-'CA' form returns 0, so both a dropped WHERE clause and a changed encoding are caught; that geometry comes back in WGS84, checked by coordinate magnitude rather than by proximity; that the incident-type vocabulary is closed (WF/RX/CX — an unknown category fails the run); that the USFS WHP raster is not a superseded release (it parses the release year out of the live service description and refuses anything older than 2023) and that its legend still maps exactly seven classes to the codes this actor hard-codes; plus four static point canaries — Plumas NF must return WHP 4 or 5, downtown Chicago 6 or 7, Paradise CA must return the 2018 Camp Fire, and Chicago must return no burn history. Every measured value is logged on every run.

Truncation and billing honesty. A still-truncated read now fails rather than screening assets against a partial fire dataset, and rows are buffered so the billing gate runs before pushData.

Nine columns recovered from the 119 the perimeter layer publishes and the 10 v1.0 read: fire_perimeter_date (how stale the polygon is), fire_unique_id, fire_gacc, fire_cause, fire_complexity_level, fire_behavior, fire_jurisdictional_agency, fire_personnel, fire_incident_type. Two more (attr_ContainmentDateTime 0/228 and attr_PredominantFuelGroup 1/228) were checked and deliberately left out — they would have been dead columns.

No output field was removed or renamed, exposure_level still uses only its v1.0 vocabulary, and the price is unchanged.

Who it's for

  • Insurance & underwriting teams — screen a book of insured properties every morning; triage anything WITHIN_5_MI.
  • Real-estate & asset portfolio managers — exposure roll-up across hundreds of sites in one run.
  • Risk, BCP & security ops — automatic checks of offices, warehouses, cell sites, substations; alert on level changes.
  • Supply-chain teams — screen supplier plants and distribution centers during fire season.
  • AI agents — a clean, chainable "wildfire check" tool: coordinates in, structured verdict out.

Example input

{
"assets": [
{ "lat": 34.05, "lon": -118.24, "label": "Los Angeles office" },
{ "lat": 38.58, "lon": -121.49, "label": "Sacramento site" }
],
"radiusMiles": 25,
"states": [],
"includeIncidentPoints": true,
"includeWhp": true,
"includeHistoricalBurn": true
}

Output fields (one row per asset = one $0.01 check)

FieldMeaning
asset_label, asset_lat, asset_lonYour input point, echoed back
exposure_levelVerdict against all current WFIGS records: IN_PERIMETER, WITHIN_5_MI, WITHIN_25_MI, CLEAR, or ERROR. ERROR now also covers a partial screen.
active_exposure_levelThe operational verdict. The same scale, computed only over fires that are not 100% contained.
in_perimetertrue inside a mapped perimeter, false checked and negative, null not checked
nearest_fire_nameIncident name of the nearest fire within radiusMiles
distance_milesMiles to the nearest perimeter edge (0 when inside); point distance for fires without a mapped perimeter
fire_is_containedTrue when that nearest fire reports 100% containment. NIFC keeps contained fires in its Current layers — 25.8% of perimeters were fully contained when this was measured.
nearest_active_fire_name, nearest_active_fire_distance_milesThe same, restricted to fires that are not fully contained
fire_acres, percent_containedSize and containment of the nearest fire
fire_state, fire_county, fire_discovery_dateWhere and when it started
fire_perimeter_dateWhen that perimeter polygon was last mapped — perimeters lag real spread, and this tells you by how much
fire_sourceperimeter (polygon) or incident_point (new/small fire, no perimeter yet)
fire_unique_idWFIGS UniqueFireIdentifier — the stable key for cross-referencing InciWeb and ICS-209
fire_gaccGeographic Area Coordination Center responsible for the fire
fire_causeHuman / Natural / Undetermined / Unknown
fire_complexity_levelType 1 through Type 5 incident — a direct proxy for how serious the response is
fire_behaviorMinimal / Moderate / Active / Extreme
fire_jurisdictional_agencyAgency with jurisdiction over the point of origin
fire_personnelTotal personnel assigned
fire_incident_typeWF (wildfire) or CX (complex). Prescribed burns (RX) are excluded from this screen.
fires_within_radiusHow many current WFIGS fire records are within the radius. null when the screen did not complete.
active_fires_within_radius, contained_fires_within_radiusThe same, split by containment
whp_class, whp_class_labelUSFS Wildfire Hazard Potential class at the point: 1 Very Low, 2 Low, 3 Moderate, 4 High, 5 Very High, 6 Non-burnable (developed/open land), 7 Water
whp_dataset_versionRelease year of the WHP raster this run scored against, read live (2023)
historical_burn, last_burn_year, last_burn_fire_nameWhether the point has ever burned before (NIFC historical fire-perimeter archive), and if so, the most recent year and fire name
perimeters_status, perimeters_errorPer-source outcome for the WFIGS perimeter layer
incident_points_status, incident_points_errorPer-source outcome for the WFIGS incident-locations layer
whp_status, historical_burn_statusok / unavailable / not_requested for each background signal
screening_completeTrue only when every requested WFIGS source loaded
perimeters_loaded, incident_points_loadedHow many fire records this run actually screened against
data_last_updatedISO timestamp of NIFC's last edit to the perimeter layer, read live
whp_source_url, historical_burn_source_urlThe exact ArcGIS services each background signal was looked up from
enrichment_noteHuman-readable note when a background lookup was skipped or failed
checked_at, error, disclaimer, source_urlRun metadata and advisory notice

null means not checked. false means checked and negative. Invalid points produce an ERROR row and the run continues — one bad coordinate never fails a 500-asset batch. The two background lookups follow the same rule: an unreachable USFS or NIFC service leaves that asset's whp_class / historical_burn null with a status of unavailable and a note in enrichment_note, never a confident false.

Inputs that populate the conditional columns

perimeters_error, incident_points_error and the PARTIAL SCREEN form of error are null on a healthy run by design — that is good news, not a dead column. Both paths are pinned by offline fixtures and mutation-verified. nearest_active_fire_name is null when the only fires in range are fully contained, which is the point of the field. fire_perimeter_date is null on an incident_point hit, because a point has no polygon.

Data sources

  • NIFC WFIGS Current Interagency Fire Perimeters (ArcGIS FeatureServer, updated continuously through the fire day) — fetched with full polygon geometry once per run.
  • WFIGS Current Incident Locations (points) — catches brand-new or small wildfires that have no mapped perimeter yet; deduplicated against perimeters by IRWIN id.
  • USFS Wildfire Hazard Potential (WHP), classified raster — a 270m landscape-scale fuels-and-fire-behavior rating from the USFS Rocky Mountain Research Station, served via the USFS Interagency Image and Point Product (IIPP) ImageServer. This is a background wildland-fuels metric, not a structure-level risk score or a prediction that a specific building will burn — treat it as one input to a broader risk picture, alongside the live perimeter distance above.
  • NIFC InterAgency Fire Perimeter History (All Years) — the historical companion to the WFIGS Current layers; mapped perimeters going back decades, contributed independently by multiple agencies (this actor takes the most recent burn year per point when a fire is mapped more than once).

Keyless, official, and free — you pay only for the per-asset checks. The two background lookups can be turned off (includeWhp: false, includeHistoricalBurn: false) if you only want the live-perimeter distance check.

Use as an MCP tool

This actor is exposed via mcp.apify.com — AI agents (Claude, Cursor, etc.) can call it as a wildfire-exposure verification tool. The input schema (lat/lon/label list) and the field-level output descriptions are designed to be read and chained by agents: geocode an address upstream, screen it here, branch on exposure_level downstream.

FAQ

Is this an official evacuation source? No. Perimeters can lag real fire spread by hours — fire_perimeter_date tells you when the polygon was last mapped. This is an advisory screening layer — every row carries a disclaimer. For life-safety decisions use local authorities and inciweb.wildfire.gov.

Why does exposure_level say IN_PERIMETER for a fire that is out? Because NIFC keeps fully-contained fires in its Current layers, sometimes for months — 25.8% of perimeters were 100% contained when this was last measured. exposure_level has always meant "against all current WFIGS records" and is unchanged so existing pipelines keep working. Read active_exposure_level (and fire_is_contained) for a verdict that excludes them.

What does null mean? Not checked. false means checked and negative. If a WFIGS source did not load, this actor emits exposure_level: "ERROR" with in_perimeter: null rather than a confident CLEAR — check perimeters_status, incident_points_status and screening_complete.

How is pricing calculated? $10 per 1,000 result rows ($0.01 per asset check). Graduated discounts apply on paid Apify plans. A run in which nothing could be determined bills nothing.

How do I check if an address is near a wildfire? Geocode the address to lat/lon (any geocoder), then pass it in assets. The row tells you the nearest active fire and the distance in miles.

What does distance_miles: 0 mean? The point is inside the fire perimeter polygon (in_perimeter: true,

exposure_level: IN_PERIMETER
).

Why did a fire I saw in the news not appear? If it is fully contained and dropped from the Current WFIGS layers it is no longer an active fire. Very new starts may exist only as incident points (keep includeIncidentPoints: true).

Can I screen only one state? Yes — set states: ["CA"] to fetch only fires originating in California. Leave it empty when assets sit near state lines (fires cross borders; the point of origin determines the state tag).

How is the distance computed? Locally: ray-casting point-in-polygon (holes and multi-part perimeters respected) plus haversine-based point-to-segment distance to every perimeter edge, taking the minimum. No server-side geometry calls, so 500 assets screen in seconds.

What does a "Non-burnable" WHP class mean — is that an error? No. The USFS raster classifies developed land and open water as Non-burnable / Water rather than assigning a hazard tier — a town center or a lake pixel legitimately comes back that way even in a fire-prone region. Check the surrounding wildland (or the live perimeter distance above) for the actual local exposure picture.

Has this location ever burned before? historical_burn checks the point against NIFC's historical fire-perimeter archive (decades of mapped fires, independent of the current active-fire layers). true means the point falls inside a past fire perimeter; last_burn_year and last_burn_fire_name give the most recent one on record.

Is WHP a guarantee a property will or won't burn? No. It's a landscape-scale (270m) wildland-fuels and fire-behavior potential rating, not a structure-level risk score, defensible-space assessment, or insurance underwriting verdict — use it as one input alongside the live perimeter/historical-burn signals, not a standalone yes/no answer.