# NOAA Storm Events Database Scraper (`automation-lab/noaa-storm-events-database-scraper`) Actor

Download and filter NOAA/NCEI Storm Events CSV records by year, state, event type, damage, magnitude, and location.

- **URL**: https://apify.com/automation-lab/noaa-storm-events-database-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## NOAA Storm Events Database Scraper

Download structured historical storm-event records from the official NOAA/NCEI Storm Events bulk CSV archive. Filter by year, state, event type, county/zone, magnitude, and damage, then export normalized records for insurance, risk, catastrophe modeling, weather research, and local-market analysis.

### What this actor does

NOAA Storm Events Database Scraper reads the public NOAA/NCEI Storm Events CSV files and converts matching rows into clean Apify dataset items. It uses the official bulk files, not a browser session, so runs are reliable and easy to audit.

Each output row represents one NOAA storm event detail record. You can use the actor to collect hail, tornado, thunderstorm wind, flash flood, winter storm, hurricane, wildfire, heat, cold, and other event categories recorded by NOAA.

### Why use NOAA Storm Events data

NOAA Storm Events is a standard source for historical severe weather analysis in the United States. It includes event timing, location, magnitude, casualties, property damage, crop damage, source, and narrative information for many events from 1950 onward.

Analysts use this data to understand regional hazard frequency, claims exposure, local market risk, catastrophe model assumptions, and long-term weather-impact patterns.

### Official data source

The actor downloads files from:

`https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/`

It scans `StormEvents_details-*_dYYYY_*.csv.gz` files for the years you request. The `sourceFileUrl` field is included in every output record so downstream users can trace each item back to the NOAA source file.

### Main use cases

- Build hail, tornado, wind, flood, and winter-storm event datasets by state.
- Pull event records for insurance and reinsurance exposure studies.
- Enrich claims, property, or portfolio data with historical storm context.
- Measure severe weather frequency by county or NOAA zone.
- Export normalized storm-event records for BI dashboards.
- Collect event damage and casualty fields for local-market research.
- Prepare catastrophe modeling inputs from NOAA official records.

### Input overview

You can control the run with these filters:

- `years`: exact years to scan.
- `startYear` and `endYear`: year range when `years` is not provided.
- `states`: NOAA state names such as `TEXAS`, `OKLAHOMA`, or `FLORIDA`.
- `eventTypes`: NOAA event types such as `Hail`, `Tornado`, `Thunderstorm Wind`, or `Flash Flood`.
- `czNames`: county/zone names such as `DALLAS` or `HARRIS`.
- `minMagnitude`: minimum event magnitude.
- `minDamageUsd`: minimum parsed property or crop damage.
- `includeNarrative`: include long NOAA narrative text.
- `maxItems`: stop after this many matching records.

### Example input

```json
{
  "years": [2024],
  "states": ["TEXAS"],
  "eventTypes": ["Hail"],
  "minMagnitude": 1,
  "includeNarrative": false,
  "maxItems": 100
}
````

### Example output

```json
{
  "eventId": "1170825",
  "episodeId": "188234",
  "year": 2024,
  "monthName": "May",
  "state": "TEXAS",
  "czName": "DALLAS",
  "eventType": "Hail",
  "beginDateTime": "08-MAY-24 18:12:00",
  "endDateTime": "08-MAY-24 18:12:00",
  "beginLatitude": 32.78,
  "beginLongitude": -96.8,
  "magnitude": 1,
  "damagePropertyUsd": 5000,
  "damageCropUsd": 0,
  "sourceFileUrl": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-...csv.gz",
  "scrapedAt": "2026-07-05T02:00:00.000Z"
}
```

### Output fields

The dataset contains IDs, timing, location, event classification, severity, casualties, damage, source, and audit fields:

- Event identifiers: `eventId`, `episodeId`.
- Date fields: `year`, `monthName`, `beginDateTime`, `endDateTime`.
- Location fields: `state`, `stateFips`, `czName`, `czType`, `czFips`, begin/end locations, begin/end latitude and longitude.
- Classification fields: `eventType`, `source`, `floodCause`.
- Severity fields: `magnitude`, `magnitudeType`, tornado scale, tornado length, tornado width.
- Casualties: direct and indirect deaths and injuries.
- Damage: raw NOAA damage strings plus parsed USD numbers.
- Provenance: `sourceFileUrl`, `scrapedAt`.
- Optional narratives: `episodeNarrative`, `eventNarrative`.

### Filtering by state

Use NOAA state names in uppercase for best results, for example `TEXAS`, `CALIFORNIA`, `FLORIDA`, `OKLAHOMA`, or `NEW YORK`. The actor compares filters case-insensitively.

If you leave `states` empty, the actor scans all states in the selected NOAA files until `maxItems` is reached.

### Filtering by event type

NOAA event types include categories such as `Hail`, `Tornado`, `Thunderstorm Wind`, `Flash Flood`, `Flood`, `Winter Storm`, `Heavy Snow`, `High Wind`, `Hurricane`, `Wildfire`, and more.

The actor compares event-type filters case-insensitively but keeps NOAA's original event type in the output.

### Damage parsing

NOAA damage values often use suffixes such as `K`, `M`, or `B`. The actor keeps the raw strings in `damagePropertyRaw` and `damageCropRaw`, and also emits parsed numeric values:

- `5K` becomes `5000`.
- `1.2M` becomes `1200000`.
- `0` remains `0`.

Use `minDamageUsd` when you only need events with significant property or crop damage.

### Magnitude filters

Use `minMagnitude` for event types where NOAA reports a numeric magnitude, such as hail size or wind speed. Not every event type has a magnitude. Records without a magnitude are excluded when `minMagnitude` is set.

### Narrative fields

Set `includeNarrative` to `true` when you need NOAA's episode and event narrative text. Narrative fields can be long, so the default is `false` to keep datasets compact and exports easier to work with.

### Performance notes

The actor streams gzip CSV files and stops after `maxItems` matching records. It does not use a browser and does not require proxies. Very broad filters across many years can still scan large NOAA files, so start with a limited year range and specific filters when exploring.

### Data freshness

NOAA updates Storm Events files over time. The actor reads the live public directory at run time, so it uses the current file URLs available from NOAA. Check `sourceFileUrl` and `scrapedAt` to audit when and where each record was collected.

### Limits and caveats

NOAA's historical data has source-specific quality characteristics. Some older records have sparse location or magnitude details. Damage values are estimates and may be rounded or missing. The actor preserves NOAA raw values where useful so you can audit transformations.

### How much does it cost to scrape NOAA storm event records?

This actor uses pay-per-event pricing. There is a $0.005 run-start charge and a per-record charge for each dataset item produced. Current per-record prices are:

| Plan tier | Price per storm event record |
|---|---:|
| Free | $0.000029248 |
| Starter / Bronze | $0.000025433 |
| Scale / Silver | $0.000019838 |
| Business / Gold | $0.00001526 |
| Platinum | $0.000010173 |
| Diamond | $0.00001 |

Concrete cost examples at the Free tier:

- A 100-record test export costs about `$0.005 + (100 × $0.000029248) = $0.0079`.
- A 1,000-record state/year export costs about `$0.005 + (1,000 × $0.000029248) = $0.0342`.
- A 10,000-record research export costs about `$0.005 + (10,000 × $0.000029248) = $0.2975` before any platform plan discounts.

The Apify Free plan includes monthly platform credits, so small validation runs and focused state/event samples can often be tested within the free allowance. The pricing is designed for filtered analytical exports while keeping exploratory NOAA storm-history checks inexpensive.

### Export options

After a run finishes, export the Apify dataset as JSON, JSONL, CSV, Excel, XML, or via the Apify API. CSV and Excel are convenient for analysts; JSON and JSONL are best for data pipelines.

### Integrations

Use the actor as a clean NOAA data source in repeatable workflows:

- Join storm events to policy, property, or claim locations by county and date in Snowflake, BigQuery, PostGIS, or a claims data warehouse.
- Feed filtered hail, tornado, flood, or wind events into catastrophe modeling workflows and exposure-review notebooks.
- Build state-level severe weather dashboards in Looker Studio, Power BI, Tableau, Metabase, or Apache Superset.
- Schedule monthly hazard reports for local markets by running the same input every month and exporting CSV or JSONL.
- Compare NOAA event counts with internal loss experience in insurance, reinsurance, agriculture, utility, and public-sector risk workflows.
- Trigger downstream alerts in Zapier, Make, Slack, or email when a scheduled run returns new records for a monitored state/event type.

### Tips for best results

Start with one year, one or two states, and a focused event type. Increase `maxItems` after confirming your filters. Turn on narratives only when you need descriptive text; leave them off for high-volume structured exports.

### Common event type examples

Useful NOAA event types include:

- `Hail`
- `Tornado`
- `Thunderstorm Wind`
- `Flash Flood`
- `Flood`
- `Winter Storm`
- `Heavy Snow`
- `High Wind`
- `Hurricane`
- `Wildfire`
- `Heat`
- `Cold/Wind Chill`

Use the exact NOAA wording when possible, but the actor matches filters without case sensitivity.

### Working with counties and zones

The NOAA `CZ_NAME` field can represent a county or forecast zone depending on the record. Use `czName`, `czType`, and `czFips` together when joining records to local geography. For county-level analysis, filter by state first and then post-process county names in your own GIS or BI workflow.

### Auditing the source file

Every row includes `sourceFileUrl`. Keep this field when exporting data for regulated workflows or internal review. It lets another analyst identify the exact NOAA yearly detail file used for the record.

### Suggested starter workflows

1. Run a small state/year/event-type export with `maxItems` set to 100.
2. Confirm the output fields and event types match your analysis need.
3. Increase `maxItems` or add more years.
4. Export CSV or JSONL for downstream processing.
5. Keep `includeNarrative` disabled unless narrative text is required.

### Who is it for

This actor is for insurance analysts, reinsurance teams, catastrophe modelers, claims analysts, weather-risk consultants, government researchers, academic users, and local-market teams that need official storm-event records in a clean export format.

### API usage

Run the actor from code when you need repeatable storm-event data pipelines.

#### Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/noaa-storm-events-database-scraper').call({
  years: [2024],
  states: ['TEXAS'],
  eventTypes: ['Hail'],
  maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length);
```

#### Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/noaa-storm-events-database-scraper').call(run_input={
    'years': [2024],
    'states': ['TEXAS'],
    'eventTypes': ['Hail'],
    'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(len(items))
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~noaa-storm-events-database-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"years":[2024],"states":["TEXAS"],"eventTypes":["Hail"],"maxItems":100}'
```

### MCP

You can use this actor through Apify MCP-compatible workflows by connecting your AI tool to the hosted Apify MCP endpoint:

```text
https://mcp.apify.com?tools=automation-lab/noaa-storm-events-database-scraper
```

This setup is useful for agents that need official historical weather-event context before producing risk summaries, local-market reports, insurance notes, or research briefs.

Claude Code example:

```bash
claude mcp add apify "https://mcp.apify.com?tools=automation-lab/noaa-storm-events-database-scraper"
```

Claude Desktop, Cursor, and VS Code can use the same hosted MCP URL in their MCP server configuration. Add your Apify API token in the client when prompted, or configure it through the client's secure environment/secret settings. Once connected, ask the tool to run `automation-lab/noaa-storm-events-database-scraper` with a JSON input such as:

```json
{
  "years": [2024],
  "states": ["TEXAS"],
  "eventTypes": ["Hail"],
  "maxItems": 100
}
```

Example prompts showing MCP usage:

- "Run the NOAA Storm Events actor for 2024 Texas hail records and summarize counties with the highest reported property damage."
- "Collect Oklahoma tornado events with narratives and extract a table of event dates, counties, EF scale, injuries, and damage."
- "Find damaging flash flood events in 2022 and prepare a concise risk brief with source file links."

### Legality

The actor reads public NOAA/NCEI bulk CSV files. NOAA data is public-sector information, but you are responsible for using exported data in compliance with your organization's policies, attribution requirements, and applicable laws.

### FAQ

#### Does this require a NOAA API key?

No. It reads the public NOAA/NCEI Storm Events bulk CSV directory.

#### Does it use a browser or proxy?

No. It uses direct HTTP downloads from official static files.

#### Why are some fields empty?

NOAA records vary by year and event type. Older records may not include every location, magnitude, or narrative field.

### Related scrapers

Other Automation Lab actors that pair well with public-risk, compliance, and research workflows:

- [Disease Outbreak News Scraper](https://apify.com/automation-lab/disease-outbreak-news-scraper) — monitor WHO outbreak notices alongside weather and disaster risk reporting.
- [openFDA 510(k) Device Clearances Scraper](https://apify.com/automation-lab/openfda-510k-device-clearances-scraper) — collect official public-sector health-regulatory datasets.
- [HHS OIG Exclusions List Scraper](https://apify.com/automation-lab/hhs-oig-exclusions-list-scraper) — enrich compliance workflows with another structured government data source.
- [SEC Investor Alerts Scraper](https://apify.com/automation-lab/sec-investor-alerts-scraper) — combine official alerts with risk-monitoring dashboards.

Related workflows include NOAA weather-alert scraping, open weather APIs, FEMA disaster declarations, insurance risk enrichment, climate hazard reporting, and local-market storm-history dashboards.

### Support

If a NOAA file changes format or a filter does not produce expected records, open an issue with your input and a short description of the expected data. Include the year, state, and event type you are targeting so the problem can be reproduced quickly.

For reproducible support, also include `sourceFileUrl` from one affected output item.

# Actor input Schema

## `years` (type: `array`):

Specific NOAA Storm Events years to scan. Leave empty to use Start year / End year.

## `startYear` (type: `integer`):

First year to scan when Years is empty.

## `endYear` (type: `integer`):

Last year to scan when Years is empty.

## `states` (type: `array`):

Optional state names or abbreviations as they appear in NOAA records, for example TEXAS or OKLAHOMA.

## `eventTypes` (type: `array`):

Optional NOAA event types, for example Hail, Tornado, Thunderstorm Wind, Flash Flood.

## `czNames` (type: `array`):

Optional NOAA CZ\_NAME values to include, such as DALLAS or HARRIS.

## `minMagnitude` (type: `number`):

Only emit records with magnitude at or above this value. Leave empty to disable.

## `minDamageUsd` (type: `integer`):

Only emit records whose parsed property or crop damage is at least this amount.

## `includeNarrative` (type: `boolean`):

Include NOAA episode and event narrative text in each output record.

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

Maximum matching storm-event records to emit.

## Actor input object example

```json
{
  "years": [
    2024
  ],
  "startYear": 2024,
  "endYear": 2024,
  "states": [
    "TEXAS"
  ],
  "eventTypes": [
    "Hail"
  ],
  "includeNarrative": false,
  "maxItems": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "years": [
        2024
    ],
    "startYear": 2024,
    "endYear": 2024,
    "states": [
        "TEXAS"
    ],
    "eventTypes": [
        "Hail"
    ],
    "includeNarrative": false,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/noaa-storm-events-database-scraper").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 = {
    "years": [2024],
    "startYear": 2024,
    "endYear": 2024,
    "states": ["TEXAS"],
    "eventTypes": ["Hail"],
    "includeNarrative": False,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/noaa-storm-events-database-scraper").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 '{
  "years": [
    2024
  ],
  "startYear": 2024,
  "endYear": 2024,
  "states": [
    "TEXAS"
  ],
  "eventTypes": [
    "Hail"
  ],
  "includeNarrative": false,
  "maxItems": 20
}' |
apify call automation-lab/noaa-storm-events-database-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/noaa-storm-events-database-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NOAA Storm Events Database Scraper",
        "description": "Download and filter NOAA/NCEI Storm Events CSV records by year, state, event type, damage, magnitude, and location.",
        "version": "0.1",
        "x-build-id": "SvUHWtd28koBHhNT2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~noaa-storm-events-database-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-noaa-storm-events-database-scraper",
                "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/automation-lab~noaa-storm-events-database-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-noaa-storm-events-database-scraper",
                "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/automation-lab~noaa-storm-events-database-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-noaa-storm-events-database-scraper",
                "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",
                "properties": {
                    "years": {
                        "title": "Years",
                        "type": "array",
                        "description": "Specific NOAA Storm Events years to scan. Leave empty to use Start year / End year.",
                        "items": {
                            "type": "integer",
                            "minimum": 1950,
                            "maximum": 2100
                        }
                    },
                    "startYear": {
                        "title": "Start year",
                        "minimum": 1950,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "First year to scan when Years is empty."
                    },
                    "endYear": {
                        "title": "End year",
                        "minimum": 1950,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Last year to scan when Years is empty."
                    },
                    "states": {
                        "title": "States",
                        "type": "array",
                        "description": "Optional state names or abbreviations as they appear in NOAA records, for example TEXAS or OKLAHOMA.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "eventTypes": {
                        "title": "Event types",
                        "type": "array",
                        "description": "Optional NOAA event types, for example Hail, Tornado, Thunderstorm Wind, Flash Flood.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "czNames": {
                        "title": "County/zone names",
                        "type": "array",
                        "description": "Optional NOAA CZ_NAME values to include, such as DALLAS or HARRIS.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minMagnitude": {
                        "title": "Minimum magnitude",
                        "minimum": 0,
                        "type": "number",
                        "description": "Only emit records with magnitude at or above this value. Leave empty to disable."
                    },
                    "minDamageUsd": {
                        "title": "Minimum damage (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only emit records whose parsed property or crop damage is at least this amount."
                    },
                    "includeNarrative": {
                        "title": "Include narratives",
                        "type": "boolean",
                        "description": "Include NOAA episode and event narrative text in each output record.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Maximum records",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum matching storm-event records to emit.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
