# FEMA Flood & Climate Risk Report for Any US Home (`sian.agency/climate-environmental-risk-lens`) Actor

Cross-check flood, fire, heat and wind risk for any US property. Compare the home-level climate score with the ZIP-level climate score and flag disagreements. Returns FEMA flood zone, insurance flags, heat-day forecasts and a per-hazard verdict. Address, ZPID or coordinates.

- **URL**: https://apify.com/sian.agency/climate-environmental-risk-lens.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Agents, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 property risks

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Climate Risk Report — FEMA Flood, Fire, Heat & Wind 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Sibling 1](https://img.shields.io/badge/Store-Zillow%20Property%20Enrichment-1F4E79)](https://apify.com/sian.agency/zillow-property-enrichment-scraper?fpr=sian) [![Sibling 2](https://img.shields.io/badge/Store-Zillow%20Property%20Detail-1F4E79)](https://apify.com/sian.agency/zillow-property-detail-scraper?fpr=sian) [![Sibling 3](https://img.shields.io/badge/Store-Redfin%20Market%20Analytics-A02021)](https://apify.com/sian.agency/redfin-market-analytics-scraper?fpr=sian)

#### 🎉 Two public climate scores. One verdict. Disagreements stay visible.

##### For investors, insurers and agents who need a second opinion before they bind.

### 🔍 What is the Climate Environmental Risk Lens — and when should you use it?

The **Climate Environmental Risk Lens** turns one US address into a cross-checked flood, fire, heat and wind report. You get the home-level climate score and the ZIP-level climate score in the same row. Gaps are flagged, not merged.

**Use it when you need:** FEMA flood zone, flood/fire/heat/wind scores, insurance flags, heat-day forecasts, and an agree/disagree verdict per hazard.

**Use something else when:** you want comps, tax history and owner contact folded into the same row. Use [Zillow Property Enrichment](https://apify.com/sian.agency/zillow-property-enrichment-scraper?fpr=sian) for that merged dossier.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/climate-environmental-risk-lens

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want a climate risk report for a US home using the Apify Actor `sian.agency/climate-environmental-risk-lens`.

Use it when I need: FEMA flood zone, flood/fire/heat/wind scores, and a verdict that flags when the home score and the ZIP score disagree.

Don't use it when: I need comps, tax history or owner contact — use `zillow-property-enrichment-scraper` instead.

How to call it: pass one address (best), or a ZPID plus ZIP, or latitude and longitude.

Start with this input:
{
  "address": "1875 Avondale Circle, Jacksonville, FL 32205"
}

Ask me for the street address or ZPID, then run the Actor and summarise flood, fire, heat and wind as a table with the verdict column first.
```

**Things you can ask your agent for:**

- *Score this Jacksonville address and tell me which hazards the two public scores disagree on.*
- *Run these three Texas ZPIDs and list any FEMA zone other than X.*
- *Give me heat-day now vs 30-year for this Austin home.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/climate-environmental-risk-lens.md](https://apify.com/sian.agency/climate-environmental-risk-lens.md).

### 📋 Overview

**You are looking at a second-opinion climate report** — one US property, two public scores, a verdict per hazard.

**Why teams use it:**

- ✅ **Disagreements stay visible**: the two scores are never silently merged
- ⚡ **One address, one row**: FEMA zone, four hazards, insurance flags
- 🎯 **Live probes, not guesses**: Jacksonville fire disagrees; heat agrees at Extreme
- 💰 **Pay per scored property**: failed lookups are not billed
- 💎 **Scale map included**: home 1–10 and ZIP 0–5 land in the same 6 buckets
- ✨ **NEW**: first SIÁN persona actor built only on climate data

### ✨ Features

- 🌊 **FEMA flood zone**: X\_UNSHADED and friends, straight from the home record
- 🔥 **Fire / wildfire score**: home label plus ZIP homes-at-risk count
- 🌡️ **Heat path**: hot days now and in 30 years
- 💨 **Wind and hurricane flag**: insurance recommendation when the home score calls it critical
- ⚖️ **Per-hazard verdict**: agree, lean-disagree, disagree, or single-source
- 📮 **ZIP or city fallback**: a ZIP-only run still returns the neighborhood score
- 📍 **Coordinates**: lat/lng reverse-geocode a ZIP for the ZIP-level half
- 📄 **Ledger report**: risk scores in the hero, one fold per hazard

### 🎬 Quick Start

Paste an address. Run. Open the dataset.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~climate-environmental-risk-lens/runs?token=[YOUR_TOKEN] \
-d '{"address": "1875 Avondale Circle, Jacksonville, FL 32205"}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Open the actor

Find Climate Environmental Risk Lens on the SIÁN Agency Store.

#### Step 2: Paste a US address

Street, city, state and ZIP. A ZPID or listing URL works too.

#### Step 3: Run

The dataset row and the HTML report land together.

**That's it! In under a minute, you'll have:**

- A verdict for flood, fire, heat and wind
- Both raw scores, not a blended number
- FEMA zone and insurance flags

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| address | string | No | Full US street address |
| zpid | string | No | Zillow property id |
| propertyUrl | string | No | Zillow listing URL |
| zip | string | No | 5-digit ZIP for the ZIP-level score |
| latitude | string | No | Decimal latitude |
| longitude | string | No | Decimal longitude |
| properties | array | No | Bulk mix of the above |

**Example:**

```json
{
  "address": "1875 Avondale Circle, Jacksonville, FL 32205"
}
```

**Bulk Processing:**

```json
{
  "properties": [
    "1875 Avondale Circle, Jacksonville, FL 32205",
    "10411 Turnbull Loop, Austin, TX 78717"
  ]
}
```

### 📤 Output

Results are saved to the Apify dataset with **40+ fields** including:

| Field | Type | Description |
|-------|------|-------------|
| overallVerdict | string | agree, lean-disagree, disagree, single-source |
| femaZone | string | FEMA flood zone |
| floodVerdict | string | Flood cross-check |
| floodZillowScore | number | Home-level flood 1–10 |
| floodRedfinScore | number | ZIP-level flood 0–5 |
| fireVerdict | string | Fire cross-check |
| heatVerdict | string | Heat cross-check |
| windVerdict | string | Wind cross-check |
| zillowHeatDaysNow | number | Hot days this year |
| zillowHeatDays30y | number | Hot days in 30 years |

**Example:**

```json
{
  "address": "1875 Avondale Circle, Jacksonville, FL 32205",
  "zip": "32205",
  "overallVerdict": "disagree",
  "femaZone": "X_UNSHADED",
  "floodVerdict": "agree",
  "floodZillowLabel": "MINIMAL",
  "floodRedfinLabel": "Minor",
  "fireVerdict": "disagree",
  "fireZillowLabel": "MINIMAL",
  "fireRedfinLabel": "Moderate",
  "heatVerdict": "agree",
  "heatZillowLabel": "EXTREME",
  "heatRedfinLabel": "Extreme",
  "windVerdict": "agree",
  "coverage": "both",
  "status": "success"
}
```

### 💼 Use Cases & Examples

#### 1. Insurance pre-bind screening

**An underwriter scores the subject property before a quote goes out.**

**Input:** Street address with ZIP
**Output:** FEMA zone plus four hazard verdicts
**Use:** Hold the file if fire or wind is a disagree

#### 2. Investor due diligence

**An acquisitions analyst drops a ZPID from a bid list.**

**Input:** ZPID and ZIP
**Output:** Heat-day path and insurance flags
**Use:** Price the cap-ex for cooling and wind

#### 3. Listing risk disclosure

**An agent attaches the report to a packet.**

**Input:** Listing address
**Output:** One-row verdict the buyer can read
**Use:** Answer "is this in a flood zone?" without a portal login

#### 4. Portfolio exception review

**A risk team runs 50 addresses overnight.**

**Input:** Bulk properties list
**Output:** Filter overallVerdict=disagree
**Use:** Manual review only where the two scores split

#### 5. Underwriting second opinion

**A desk already has one vendor score and wants the other public view.**

**Input:** Address
**Output:** Both raw scores, never a blend
**Use:** Keep the disagreement as the signal

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/climate-environmental-risk-lens').call({
  address: '1875 Avondale Circle, Jacksonville, FL 32205'
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/climate-environmental-risk-lens').call(
    run_input={'address': '1875 Avondale Circle, Jacksonville, FL 32205'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~climate-environmental-risk-lens/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"address": "1875 Avondale Circle, Jacksonville, FL 32205"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: New deal or scheduled book
2. **HTTP Request**: Call this actor
3. **Process**: Read overallVerdict
4. **Action**: Slack the disagrees

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **1 property** per run — full verdict, same fields
- No credit card required
- Perfect for a single underwrite

#### PAID Tier (Production Ready)

- **Unlimited** properties per run
- Same cross-check, no extra setup
- Pay-per-result: only charged for successful scores

💰 **Report-shaped pricing** — a small one-time report fee plus a cheap per-property event. The trial run stays cheap on purpose.

🔗 [View current pricing](https://apify.com/sian.agency/climate-environmental-risk-lens?fpr=sian)

### ❓ Frequently Asked Questions

**Q: How many properties can I score?**
A: FREE tier: 1 per run. PAID tier: unlimited.

**Q: What if only one score comes back?**
A: The row is marked single-source. We do not invent the missing half.

**Q: What output formats are available?**
A: JSON, CSV, Excel — export from the dataset. The HTML report is in the key-value store.

**Q: Do I need a portal account?**
A: No. Paste an address. No API key of your own.

**Q: Is this legal?**
A: Yes — we only return publicly shown climate scores. See our [legal section](#legal).

**Q: How long does one property take?**
A: Usually under 10 seconds.

**Q: Why do the two fire numbers disagree in Jacksonville?**
A: They measure different things on different scales. That gap is the product.

### 🐛 Troubleshooting

**ZIP-level score is missing**

- Add a 5-digit ZIP to the address
- Or fill the ZIP field next to a ZPID

**Home-level score is missing**

- Use a full street address, a ZPID or a listing URL
- Coordinates alone only unlock the ZIP-level half

**Empty dataset**

- Check the address is a real US home
- Re-run just that property from the retry block in the report

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### ⚠️ Trademark Disclaimer

Zillow® and Redfin® are registered trademarks of their respective owners. This actor is not affiliated with, endorsed by, or sponsored by Zillow, Redfin, or First Street Foundation. All trademarks remain the property of their owners.

### 🤝 Support

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/climate-environmental-risk-lens/changelog.md

# Actor input Schema

## `address` (type: `string`):

📍 **ONE HOME:** Full US street address. Best input. We pull the home-level climate score and the ZIP-level climate score, then flag disagreements.

📋 **Format:** street, city, state ZIP — e.g. `1875 Avondale Circle, Jacksonville, FL 32205`.

💡 **TIP:** A ZIP in the address unlocks both scores. Without a ZIP we still try the home-level score.

⚡ **TIER:** FREE runs score 1 property. Paid plans score a whole list.

## `zpid` (type: `string`):

🔢 **ZILLOW PROPERTY ID:** Digits before `_zpid` in a listing URL. Fastest exact home-level lookup.

📋 **Example:** `44471319`.

💡 **TIP:** Pair with ZIP below if you also want the ZIP-level score. A ZPID alone still returns the home-level score and is marked single-source if the ZIP is missing.

## `propertyUrl` (type: `string`):

🔗 **LISTING LINK:** A Zillow home-details URL. We read the ZPID from the path when it is present.

📋 **Example:** `https://www.zillow.com/homedetails/44471319_zpid/`

## `zip` (type: `string`):

📮 **ZIP-LEVEL SCORE:** 5-digit US ZIP. Use alone for a neighborhood climate read, or with a ZPID so both scores can be compared.

📋 **Example:** `32205`.

## `latitude` (type: `string`):

🌐 **COORDINATES:** Decimal latitude. Pair with longitude. We reverse-geocode a ZIP for the ZIP-level score. Home-level climate needs an address or ZPID.

## `longitude` (type: `string`):

🌐 **COORDINATES:** Decimal longitude. Pair with latitude.

## `properties` (type: `array`):

📋 **BULK:** Mix of addresses, ZPIDs, listing URLs, ZIPs or `lat,lng` pairs. One per line.

⚡ **TIER:** FREE runs the first property only. Paid plans run the full list. Duplicates are removed.

## Actor input object example

```json
{
  "address": "1875 Avondale Circle, Jacksonville, FL 32205",
  "zpid": "44471319",
  "propertyUrl": "https://www.zillow.com/homedetails/44471319_zpid/",
  "zip": "32205",
  "latitude": "30.314",
  "longitude": "-81.705",
  "properties": []
}
```

# Actor output Schema

## `climateVerdicts` (type: `string`):

Per-property rows with both raw scores and the agree/disagree verdict

## `scrapingSummary` (type: `string`):

HTML run report with risk scores first and a fold per hazard

# 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 = {
    "address": "1875 Avondale Circle, Jacksonville, FL 32205",
    "zpid": "",
    "propertyUrl": "",
    "zip": "",
    "latitude": "",
    "longitude": "",
    "properties": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/climate-environmental-risk-lens").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 = {
    "address": "1875 Avondale Circle, Jacksonville, FL 32205",
    "zpid": "",
    "propertyUrl": "",
    "zip": "",
    "latitude": "",
    "longitude": "",
    "properties": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/climate-environmental-risk-lens").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "address": "1875 Avondale Circle, Jacksonville, FL 32205",
  "zpid": "",
  "propertyUrl": "",
  "zip": "",
  "latitude": "",
  "longitude": "",
  "properties": []
}' |
apify call sian.agency/climate-environmental-risk-lens --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/climate-environmental-risk-lens"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/vnShzMcDUeIcnzsYY/builds/FYEY2VpyLQc6Ft8a2/openapi.json
