# Severe Weather Business Impact Monitor — NWS, By Location (`alaudinburki/weather-impact-monitor`) Actor

Matches active NOAA/NWS severe weather alerts against your specific business locations (lat/lon), not a raw statewide feed. Severity, urgency, and certainty are NWS's own official classification, never a re-derived heuristic. Free, keyless, real-time.

- **URL**: https://apify.com/alaudinburki/weather-impact-monitor.md
- **Developed by:** [alaudin burki](https://apify.com/alaudinburki) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.

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

## Severe Weather Business Impact Monitor — NWS, By Location

Nobody wants a raw statewide weather-alert feed. A trucking company wants
to know if a route is affected. A retail chain wants to know if a specific
store is under a warning. An insurer wants exposure by address, not by state.

This matches NOAA's live active-alert feed against your specific business
locations (lat/lon) — not a firehose, a filtered answer.

**Severity, urgency, and certainty are NWS's own official classification**,
passed through directly. Unlike most of this portfolio's other feed-matcher
actors, no heuristic scoring was needed here — the source already ranks itself.

### How it works

1. Each location's lat/lon is resolved to its NWS forecast zone and county
   zone via the official `/points` endpoint.
2. Active alerts for that location's state are fetched once (cached per
   run — 10 locations in the same state means one alert fetch, not ten).
3. An alert matches a location if either of its resolved zones appears in
   the alert's own zone list — not a distance calculation, the same zone
   system NWS itself uses to scope an alert.

### Input

```json
{
  "locations": [
    { "label": "Warehouse A", "lat": 34.05, "lon": -118.24 },
    { "label": "Store #12", "lat": 40.71, "lon": -74.00 }
  ],
  "minSeverity": "Moderate"
}
```

US locations only — NWS coverage.

### Sample output

```json
{
  "locationLabel": "Lompoc facility",
  "resolvedCity": "Lompoc",
  "resolvedState": "CA",
  "event": "Wind Advisory",
  "severity": "Moderate",
  "urgency": "Expected",
  "certainty": "Likely",
  "headline": "Wind Advisory issued September 3 at 7:53AM PDT until September 4 at 6:00AM PDT by NWS Los Angeles/Oxnard CA",
  "instruction": "Winds this strong can make driving difficult, especially for high profile vehicles.",
  "expires": "2026-09-04T06:00:00-07:00"
}
```

### Typical uses

- **Logistics / trucking** — check active alerts along a set of route
  waypoints before dispatch.
- **Retail chain operations** — know which specific stores are under an
  active warning, not just "somewhere in the state."
- **Insurance exposure monitoring** — track active severe-weather risk
  across a portfolio of insured addresses.
- **Field service / event planning** — check a job site or venue before
  sending crews or opening gates.

### Pricing

**$2.00 / 1,000 results** (`$0.002` per matched alert row).

### ⚠️ Read before you act

- **This is a real-time snapshot of ACTIVE alerts only** — it does not
  forecast, and it doesn't retain history. Pair with a schedule for
  ongoing monitoring rather than treating one run as a standing watch.
- **US locations only.** NWS has no coverage outside US territory; a
  location outside coverage returns a clear error in the problems report,
  not a silent empty result.
- **Zone matching, not distance.** A location right on a zone boundary
  matches based on which NWS zone it falls in, the same way NWS itself
  scopes an alert — not a radius calculation.

### FAQ

- **Do I need an API key?** No — api.weather.gov is free and keyless. It
  only requires a descriptive User-Agent header (NWS's documented
  etiquette, not an auth mechanism).
- **Why pass severity/urgency/certainty through unchanged?** NWS already
  publishes an official classification for every alert — re-deriving it
  would be strictly worse than the source, so this actor trusts it directly.
- **Can I filter to only severe alerts?** Yes — set `minSeverity` to
  `"Severe"` or `"Extreme"` to exclude lower-severity advisories.

### Related actors

- **Recall Exposure Monitor** — the same "official feed, filtered to what
  actually matters to you" pattern, for CPSC product recalls.
- **Layoff Early Warning (WARN Act)** — the same pattern again, for
  mass-layoff filings.

# Actor input Schema

## `locations` (type: `array`):

Business locations to check, each with a lat/lon and an optional label. Example: \[{"label": "Warehouse A", "lat": 34.05, "lon": -118.24}]. US locations only (NWS coverage).

## `minSeverity` (type: `string`):

Only return alerts at or above this severity. Leave empty for all severities.

## `maxItems` (type: `integer`):

Hard cap on items returned. You are never charged beyond this.

## Actor input object example

```json
{
  "locations": [
    {
      "label": "Los Angeles, CA",
      "lat": 34.0522,
      "lon": -118.2437
    }
  ],
  "maxItems": 1000
}
```

# Actor output Schema

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

Active NWS alerts matched to your locations, ranked by official severity.

## `qualityReport` (type: `string`):

Locations checked, severity breakdown, problems.

# 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 = {
    "locations": [
        {
            "label": "Los Angeles, CA",
            "lat": 34.0522,
            "lon": -118.2437
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("alaudinburki/weather-impact-monitor").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 = { "locations": [{
            "label": "Los Angeles, CA",
            "lat": 34.0522,
            "lon": -118.2437,
        }] }

# Run the Actor and wait for it to finish
run = client.actor("alaudinburki/weather-impact-monitor").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 '{
  "locations": [
    {
      "label": "Los Angeles, CA",
      "lat": 34.0522,
      "lon": -118.2437
    }
  ]
}' |
apify call alaudinburki/weather-impact-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alaudinburki/weather-impact-monitor"
        }
    }
}
```

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/iimBNYUHlcjnyZfIz/builds/Llid6jKYQgOhIYw0v/openapi.json
