# CalFire Fire Hazard Severity Zone (FHSZ) Screener — CA Parcels (`malonestar/calfire-fhsz-screener`) Actor

California Fire Hazard Severity Zone lookup for real-estate disclosure and underwriting. Point-in-polygon against CalFire SRA/LRA FHSZ maps: hazard class, responsibility area, adopted vs pending, and the legally required disclosure flag.

- **URL**: https://apify.com/malonestar/calfire-fhsz-screener.md
- **Developed by:** [Kyle Maloney](https://apify.com/malonestar) (community)
- **Categories:** Real estate, Developer tools, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## CalFire Fire Hazard Severity Zone (FHSZ) Screener — CA Parcels

California Fire Hazard Severity Zone lookup: batch point-in-polygon screening against the
CAL FIRE Fire Hazard Severity Zone (FHSZ) map service, with an editorial flag for whether
California's Natural Hazard Disclosure statute (**Civil Code Section 1103.7** / **Government Code
Section 51178**) requires the seller/agent to disclose the zone on a real-estate transaction.

Answers, per property: **is my house in a fire hazard severity zone**, which class
(Moderate / High / Very High), which jurisdiction (SRA / LRA / Federal), and is disclosure
legally required.

### Who it's for
- **CA real-estate agents & brokers** — every California residential transfer requires a
  Natural Hazard Disclosure statement; this actor answers the "State Fire Responsibility
  Area" and "Very High Fire Hazard Severity Zone" checkboxes programmatically, for one
  parcel or a whole portfolio of listings.
- **NHD report firms & title companies** — cross-check or pre-screen parcels before
  ordering a full natural-hazard disclosure report.
- **Insurance underwriters** — screen a book of California policies for FHSZ exposure
  ahead of renewal/pricing decisions.
- **Home inspectors & appraisers** — flag wildfire-hazard zoning as part of a due-diligence
  checklist.
- **Land developers & lenders** — batch-screen a pipeline of California sites before
  acquisition or construction lending.

### What it does
1. Resolves the CAL FIRE FHSZ MapServer's 4 layers (SRA, LRA-Very-High, pending/not-yet-
   adopted, and Federal Responsibility Area) at **runtime** by fetching the service's layer
   list and matching by name — so a CAL FIRE-side layer reorder doesn't silently break the
   actor (falls back to documented indices 0-3 if name-matching fails).
2. Runs an authoritative point-in-polygon query per layer for each input coordinate.
3. If the exact coordinate is clear on every layer, optionally checks a configurable radius
   (default 0.5 mi) for a nearby zone — useful near a parcel boundary.
4. Classifies the result: `in_fhsz`, `hazard_class` (Moderate/High/Very High),
   `responsibility_area` (SRA/LRA/Federal), `zone_status` (adopted/pending), and the
   headline field — `disclosure_required` — true for any adopted SRA hit (any class) or
   an adopted LRA Very High hit.

### Example input
```json
{
  "assets": [
    { "lat": 34.083, "lon": -118.78, "label": "Malibu hills property" },
    { "lat": 38.582, "lon": -121.494, "label": "Downtown Sacramento control" }
  ],
  "checkNearby": true,
  "nearbyRadiusMiles": 0.5
}
````

### Output fields (one row per asset)

| Field | Description |
|---|---|
| `asset_label`, `asset_lat`, `asset_lon` | Echo of the input site |
| `in_fhsz` | TRUE if the coordinate falls inside any mapped FHSZ layer |
| `hazard_class` | Moderate / High / Very High / null |
| `responsibility_area` | SRA / LRA / Federal / null |
| `zone_status` | adopted / pending / null |
| `disclosure_required` | TRUE = Civ. Code Section 1103.7 / Gov. Code Section 51178 disclosure trigger |
| `layers_matched` | Every FHSZ layer whose polygon hits this coordinate |
| `nearby_zone_within_radius`, `nearby_hazard_class`, `nearby_distance_miles` | Near-boundary flag when the exact point is clear |
| `layer_source` | MapServer query URL used for the primary hit |
| `clear_flag` | TRUE when fully outside every FHSZ layer (or outside CA coverage) |
| `note` | Plain-English summary, cites the statute when disclosure applies |
| `error` | Per-asset error (invalid coordinate or query failure); null when OK |
| `disclaimer`, `source_url`, `checked_at` | Standard screening metadata |

A coordinate outside California returns a valid **clear** row (not an error) noting it is
outside CAL FIRE FHSZ coverage.

### Use as an MCP tool

This actor is Pay-Per-Event (Result-only) and discoverable via **mcp.apify.com** — an AI
agent (Claude, Cursor, etc.) can call it directly as a chainable tool: pass an array of
`{lat, lon, label}` assets and get back a structured disclosure determination per site,
ready to feed into a due-diligence or listing-preparation workflow.

### FAQ

**Is my house in a fire hazard severity zone?** Pass its coordinates as an asset; `in_fhsz`
and `hazard_class` answer directly.

**FHSZ map lookup California — is there an API?** Yes — this actor wraps CAL FIRE's own
ArcGIS FHSZ service in a batch-friendly, disclosure-aware API.

**Natural hazard disclosure fire zone — do I have to disclose this on a home sale?**
`disclosure_required` answers this per Civ. Code Section 1103.7 / Gov. Code Section 51178
for adopted SRA (any class) and adopted LRA Very High zones. Always confirm with a licensed
NHD provider before closing.

**What's the difference between SRA and LRA?** SRA = State Responsibility Area (CAL FIRE
jurisdiction, any hazard class triggers disclosure); LRA = Local Responsibility Area (only
the Very High class is mapped/disclosure-triggering); Federal = federal land, informational
only, not a state disclosure trigger.

### Source & disclaimer

Data: CAL FIRE / CA Government Operations Agency Fire Hazard Severity Zone MapServer
(`services.gis.ca.gov`). This is an informational screening tool, not a substitute for an
official CAL FIRE FHSZ viewer lookup or a licensed Natural Hazard Disclosure report. Zone
boundaries are periodically revised — confirm current adopted status before any real-estate,
insurance, or construction decision.

**Pricing:** $8 per 1,000 result rows (Pay-Per-Event, Result-event only).
**Categories:** Real estate, Developer tools, Agents.

# Actor input Schema

## `assets` (type: `array`):

List of California properties/sites to screen for Fire Hazard Severity Zone status. Each item is an object with numeric lat and lon (WGS84 decimal degrees) and an optional label. One billable result row is returned per asset, even when the site is clear.

## `checkNearby` (type: `boolean`):

When the exact coordinate is clear on every FHSZ layer, also check for a mapped zone within nearbyRadiusMiles (near-boundary flag). Adds up to 4 extra queries per clear asset.

## `nearbyRadiusMiles` (type: `number`):

Radius (miles) to search for a mapped FHSZ near a clear coordinate, when checkNearby is true. Clamped to 0.1-10 miles. Not used when the coordinate itself is already inside a mapped zone.

## `maxAssets` (type: `integer`):

Safety cap on how many assets to screen in one run.

## Actor input object example

```json
{
  "assets": [
    {
      "lat": 34.083,
      "lon": -118.78,
      "label": "Malibu hills property"
    },
    {
      "lat": 38.582,
      "lon": -121.494,
      "label": "Downtown Sacramento control"
    }
  ],
  "checkNearby": true,
  "nearbyRadiusMiles": 0.5,
  "maxAssets": 500
}
```

# Actor output Schema

## `results` (type: `string`):

The default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "assets": [
        {
            "lat": 34.083,
            "lon": -118.78,
            "label": "Malibu hills property"
        },
        {
            "lat": 38.582,
            "lon": -121.494,
            "label": "Downtown Sacramento control"
        }
    ],
    "checkNearby": true,
    "nearbyRadiusMiles": 0.5,
    "maxAssets": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("malonestar/calfire-fhsz-screener").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "assets": [
        {
            "lat": 34.083,
            "lon": -118.78,
            "label": "Malibu hills property",
        },
        {
            "lat": 38.582,
            "lon": -121.494,
            "label": "Downtown Sacramento control",
        },
    ],
    "checkNearby": True,
    "nearbyRadiusMiles": 0.5,
    "maxAssets": 500,
}

# Run the Actor and wait for it to finish
run = client.actor("malonestar/calfire-fhsz-screener").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "assets": [
    {
      "lat": 34.083,
      "lon": -118.78,
      "label": "Malibu hills property"
    },
    {
      "lat": 38.582,
      "lon": -121.494,
      "label": "Downtown Sacramento control"
    }
  ],
  "checkNearby": true,
  "nearbyRadiusMiles": 0.5,
  "maxAssets": 500
}' |
apify call malonestar/calfire-fhsz-screener --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=malonestar/calfire-fhsz-screener",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CalFire Fire Hazard Severity Zone (FHSZ) Screener — CA Parcels",
        "description": "California Fire Hazard Severity Zone lookup for real-estate disclosure and underwriting. Point-in-polygon against CalFire SRA/LRA FHSZ maps: hazard class, responsibility area, adopted vs pending, and the legally required disclosure flag.",
        "version": "1.0",
        "x-build-id": "mEnDjNlRVtjabHvAB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/malonestar~calfire-fhsz-screener/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-malonestar-calfire-fhsz-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/malonestar~calfire-fhsz-screener/runs": {
            "post": {
                "operationId": "runs-sync-malonestar-calfire-fhsz-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/malonestar~calfire-fhsz-screener/run-sync": {
            "post": {
                "operationId": "run-sync-malonestar-calfire-fhsz-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "assets"
                ],
                "properties": {
                    "assets": {
                        "title": "Assets (coordinates to screen)",
                        "type": "array",
                        "description": "List of California properties/sites to screen for Fire Hazard Severity Zone status. Each item is an object with numeric lat and lon (WGS84 decimal degrees) and an optional label. One billable result row is returned per asset, even when the site is clear.",
                        "default": [
                            {
                                "lat": 34.083,
                                "lon": -118.78,
                                "label": "Malibu hills property"
                            },
                            {
                                "lat": 38.582,
                                "lon": -121.494,
                                "label": "Downtown Sacramento control"
                            }
                        ]
                    },
                    "checkNearby": {
                        "title": "Check nearby zones when clear",
                        "type": "boolean",
                        "description": "When the exact coordinate is clear on every FHSZ layer, also check for a mapped zone within nearbyRadiusMiles (near-boundary flag). Adds up to 4 extra queries per clear asset.",
                        "default": true
                    },
                    "nearbyRadiusMiles": {
                        "title": "Nearby-zone search radius (miles)",
                        "minimum": 0.1,
                        "maximum": 10,
                        "type": "number",
                        "description": "Radius (miles) to search for a mapped FHSZ near a clear coordinate, when checkNearby is true. Clamped to 0.1-10 miles. Not used when the coordinate itself is already inside a mapped zone.",
                        "default": 0.5
                    },
                    "maxAssets": {
                        "title": "Max assets",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Safety cap on how many assets to screen in one run.",
                        "default": 500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
