---
type: "firecrawl-provider"
description: "NOAA NCEI Storm Events Database (1950 to present) bulk CSV files: per-year details, locations and fatalities gzips. Directory status with file versions, paged rows of one (type, year) file pinned to its ETag, and one event joined with its locations and fatalities."
use_when: "NOAA NCEI Storm Events Database (1950 to present) bulk CSV files: per-year details, locations and fatalities gzips. Directory status with file versions, paged rows of one (type, year) file pinned to its ETag, and one event joined with its locations and fatalities."
categories: "Public records"
capabilities: 3
credits_per_call: 5
---
# NOAA NCEI Storm Events Database bulk CSVs on Firecrawl Alexandria

NOAA NCEI Storm Events Database (1950 to present) bulk CSV files: per-year details, locations and fatalities gzips. Directory status with file versions, paged rows of one (type, year) file pinned to its ETag, and one event joined with its locations and fatalities.

- Categories: Public records
- Category index: [Public records category](https://firecrawl.dev/alexandria/agents/categories/public-records)
- Provider key: `ncei-noaa-gov`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/ncei-noaa-gov)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/ncei-noaa-gov/openapi.json)

## Capabilities

- [Records get](https://firecrawl.dev/alexandria/agents/providers/ncei-noaa-gov/storm-events/records_get): One event by EVENT_ID and data year: its details row from the year's details file (ep-3) joined with every row of the year's locations and fatalities files for that EVENT_ID. Three gzip reads; not_found when the year's details file has no such EVENT_ID.
- [Records list](https://firecrawl.dev/alexandria/agents/providers/ncei-noaa-gov/storm-events/records_list): One page of rows from one bulk file (ep-3), segment key (type, year). Each page re-fetches the gzip, stream-decompresses it through an RFC 4180 parser (narratives hold commas, quotes and newlines), skips to the row offset, returns up to 2000 typed rows and stops. The cursor pins file name and ETag; if NCEI reissued the file in between (new c date, missing old name or different ETag) the call fails with upstream_error `publication_changed: ...` instead of mixing versions. Every row carries source_record_id, source_url, publication_id and retrieved_at; DAMAGE_* are kept verbatim with a parsed USD value beside them.
- [Source status](https://firecrawl.dev/alexandria/agents/providers/ncei-noaa-gov/storm-events/source_status): Cheap version check of the bulk directory (ep-1 autoindex): every StormEvents_<type>-ftp_v1.0_d<YYYY>_c<YYYYMMDD>.csv.gz with its c date, size and listing time; optionally narrowed to one type and/or year. When exactly one file is selected its HTTP ETag and Last-Modified are read with one Range request. Files above the 32 MiB fetch cap are flagged hand_off with the URL and size.

## 1. Choose this provider when

NOAA NCEI Storm Events Database (1950 to present) bulk CSV files: per-year details, locations and fatalities gzips. Directory status with file versions, paged rows of one (type, year) file pinned to its ETag, and one event joined with its locations and fatalities.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "ncei-noaa-gov",
  "capability": "storm-events/records_get",
  "options": {
    "event_id": 1318063,
    "year": 2026
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `event_id` (string, required): EVENT_ID as in the CSVs and the event page URL. Example: `<event_id>`
- `year` (number, required): The data year whose files hold the event (BEGIN year). Example: `1950`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "ncei-noaa-gov",
    capability: "storm-events/records_get",
    options: {
      event_id: 1318063,
      year: 2026,
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "ncei-noaa-gov",
  "capability": "storm-events/records_get",
  "options": {
    "event_id": 1318063,
    "year": 2026
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "ncei-noaa-gov",
    "capability": "storm-events/records_get",
    "options": {
      "event_id": 1318063,
      "year": 2026
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'ncei-noaa-gov/storm-events/records_get' \
  --options '{"event_id":1318063,"year":2026}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "ncei-noaa-gov",
  "capability": "storm-events/records_get",
  "options": {
    "event_id": 1318063,
    "year": 2026
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "ncei-noaa-gov",
  "capability": "storm-events/records_get",
  "options": {
    "event_id": 1318063,
    "year": 2026
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "event": {
    "begin_azimuth": "N",
    "begin_date_time": "14-APR-26 19:00:00",
    "begin_day": 14,
    "begin_lat": 42.43,
    "begin_local": "2026-04-14T19:00:00",
    "begin_location": "BROOKS",
    "begin_lon": -71.9,
    "begin_range": 0.69,
    "begin_time": 1900,
    "begin_yearmonth": 202604,
    "category": null,
    "cz_fips": 27,
    "cz_name": "WORCESTER",
    "cz_timezone": "EST-5",
    "cz_type": "C",
    "damage_crops": "0.00K",
    "damage_crops_usd": 0,
    "damage_property": "1.00K",
    "damage_property_usd": 1000,
    "data_source": "CSV",
    "deaths_direct": 0,
    "deaths_indirect": 0,
    "end_azimuth": "N",
    "end_date_time": "14-APR-26 19:00:00",
    "end_day": 14,
    "end_lat": 42.43,
    "end_local": "2026-04-14T19:00:00",
    "end_location": "BROOKS",
    "end_lon": -71.9,
    "end_range": 0.69,
    "end_time": 1900,
    "end_yearmonth": 202604,
    "episode_id": 210980,
    "episode_narrative": "A front moving through brought a squall line through western Massachusetts and into central Massachusetts producing pockets of damaging winds which downed several trees.",
    "event_id": 1318063,
    "event_narrative": "In Princeton, there were downed trees and wires near Ball Hill Rd.",
    "event_type": "Thunderstorm Wind",
    "flood_cause": null,
    "injuries_direct": 0,
    "injuries_indirect": 0,
    "magnitude": 51,
    "magnitude_type": "EG",
    "month_name": "April",
    "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
    "record_type": "details",
    "retrieved_at": "2026-10-18T20:32:01Z",
    "source": "Law Enforcement",
    "source_record_id": "details:1318063",
    "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318063",
    "state": "MASSACHUSETTS",
    "state_fips": 25,
    "tor_f_scale": null,
    "tor_length": null,
    "tor_other_cz_fips": null,
    "tor_other_cz_name": null,
    "tor_other_cz_state": null,
    "tor_other_wfo": null,
    "tor_width": null,
    "wfo": "BOX",
    "year": 2026
  },
  "event_id": 1318063,
  "fatalities": [],
  "locations": [
    {
      "azimuth": "N",
      "episode_id": 210980,
      "event_id": 1318063,
      "lat2": 4225800,
      "latitude": 42.43,
      "location": "BROOKS",
      "location_index": 1,
      "lon2": 7154000,
      "longitude": -71.9,
      "publication_id": "StormEvents_locations-ftp_v1.0_d2026_c20260918.csv.gz",
      "range": 0.69,
      "record_type": "locations",
      "retrieved_at": "2026-10-18T20:32:01Z",
      "source_record_id": "locations:1318063:1",
      "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318063",
      "yearmonth": 202604
    }
  ],
  "observed_at_ms": 1792355522247,
  "publications": {
    "details": {
      "c_date": "2026-09-18",
      "etag": "\"724d4c-65bc31eee393b\"",
      "hand_off": false,
      "hand_off_reason": null,
      "last_modified": "Fri, 18 Sep 2026 14:57:35 GMT",
      "listing_modified": "2026-09-18 10:57",
      "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "size_bytes": 7490892,
      "type": "details",
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "year": 2026
    },
    "fatalities": {
      "c_date": "2026-09-18",
      "etag": "\"f8c-65bc31eeed193\"",
      "hand_off": false,
      "hand_off_reason": null,
      "last_modified": "Fri, 18 Sep 2026 14:57:35 GMT",
      "listing_modified": "2026-09-18 10:57",
      "publication_id": "StormEvents_fatalities-ftp_v1.0_d2026_c20260918.csv.gz",
      "size_bytes": 3980,
      "type": "fatalities",
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_fatalities-ftp_v1.0_d2026_c20260918.csv.gz",
      "year": 2026
    },
    "locations": {
      "c_date": "2026-09-18",
      "etag": "\"ae9aa-65bc31ef209cb\"",
      "hand_off": false,
      "hand_off_reason": null,
      "last_modified": "Fri, 18 Sep 2026 14:57:36 GMT",
      "listing_modified": "2026-09-18 10:57",
      "publication_id": "StormEvents_locations-ftp_v1.0_d2026_c20260918.csv.gz",
      "size_bytes": 715178,
      "type": "locations",
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_locations-ftp_v1.0_d2026_c20260918.csv.gz",
      "year": 2026
    }
  },
  "retrieved_at": "2026-10-18T20:32:01Z",
  "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318063",
  "year": 2026
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Records get

- Capability: `storm-events/records_get`
- Description: One event by EVENT_ID and data year: its details row from the year's details file (ep-3) joined with every row of the year's locations and fatalities files for that EVENT_ID. Three gzip reads; not_found when the year's details file has no such EVENT_ID.
- Instructions: Fetch one storm event with its track points and fatality records when the EVENT_ID and the data year are known.
- Cost: 5 credits per call
- Capability file: [Records get](https://firecrawl.dev/alexandria/agents/providers/ncei-noaa-gov/storm-events/records_get)

Accepted options:
- `event_id` (string, required): EVENT_ID as in the CSVs and the event page URL. Example: `<event_id>`
- `year` (number, required): The data year whose files hold the event (BEGIN year). Example: `1950`

Response schema example:
```json
{
  "event": {
    "begin_azimuth": "N",
    "begin_date_time": "14-APR-26 19:00:00",
    "begin_day": 14,
    "begin_lat": 42.43,
    "begin_local": "2026-04-14T19:00:00",
    "begin_location": "BROOKS",
    "begin_lon": -71.9,
    "begin_range": 0.69,
    "begin_time": 1900,
    "begin_yearmonth": 202604,
    "category": null,
    "cz_fips": 27,
    "cz_name": "WORCESTER",
    "cz_timezone": "EST-5",
    "cz_type": "C",
    "damage_crops": "0.00K",
    "damage_crops_usd": 0,
    "damage_property": "1.00K",
    "damage_property_usd": 1000,
    "data_source": "CSV",
    "deaths_direct": 0,
    "deaths_indirect": 0,
    "end_azimuth": "N",
    "end_date_time": "14-APR-26 19:00:00",
    "end_day": 14,
    "end_lat": 42.43,
    "end_local": "2026-04-14T19:00:00",
    "end_location": "BROOKS",
    "end_lon": -71.9,
    "end_range": 0.69,
    "end_time": 1900,
    "end_yearmonth": 202604,
    "episode_id": 210980,
    "episode_narrative": "A front moving through brought a squall line through western Massachusetts and into central Massachusetts producing pockets of damaging winds which downed several trees.",
    "event_id": 1318063,
    "event_narrative": "In Princeton, there were downed trees and wires near Ball Hill Rd.",
    "event_type": "Thunderstorm Wind",
    "flood_cause": null,
    "injuries_direct": 0,
    "injuries_indirect": 0,
    "magnitude": 51,
    "magnitude_type": "EG",
    "month_name": "April",
    "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
    "record_type": "details",
    "retrieved_at": "2026-10-18T20:32:01Z",
    "source": "Law Enforcement",
    "source_record_id": "details:1318063",
    "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318063",
    "state": "MASSACHUSETTS",
    "state_fips": 25,
    "tor_f_scale": null,
    "tor_length": null,
    "tor_other_cz_fips": null,
    "tor_other_cz_name": null,
    "tor_other_cz_state": null,
    "tor_other_wfo": null,
    "tor_width": null,
    "wfo": "BOX",
    "year": 2026
  },
  "event_id": 1318063,
  "fatalities": [],
  "locations": [
    {
      "azimuth": "N",
      "episode_id": 210980,
      "event_id": 1318063,
      "lat2": 4225800,
      "latitude": 42.43,
      "location": "BROOKS",
      "location_index": 1,
      "lon2": 7154000,
      "longitude": -71.9,
      "publication_id": "StormEvents_locations-ftp_v1.0_d2026_c20260918.csv.gz",
      "range": 0.69,
      "record_type": "locations",
      "retrieved_at": "2026-10-18T20:32:01Z",
      "source_record_id": "locations:1318063:1",
      "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318063",
      "yearmonth": 202604
    }
  ],
  "observed_at_ms": 1792355522247,
  "publications": {
    "details": {
      "c_date": "2026-09-18",
      "etag": "\"724d4c-65bc31eee393b\"",
      "hand_off": false,
      "hand_off_reason": null,
      "last_modified": "Fri, 18 Sep 2026 14:57:35 GMT",
      "listing_modified": "2026-09-18 10:57",
      "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "size_bytes": 7490892,
      "type": "details",
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "year": 2026
    },
    "fatalities": {
      "c_date": "2026-09-18",
      "etag": "\"f8c-65bc31eeed193\"",
      "hand_off": false,
      "hand_off_reason": null,
      "last_modified": "Fri, 18 Sep 2026 14:57:35 GMT",
      "listing_modified": "2026-09-18 10:57",
      "publication_id": "StormEvents_fatalities-ftp_v1.0_d2026_c20260918.csv.gz",
      "size_bytes": 3980,
      "type": "fatalities",
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_fatalities-ftp_v1.0_d2026_c20260918.csv.gz",
      "year": 2026
    },
    "locations": {
      "c_date": "2026-09-18",
      "etag": "\"ae9aa-65bc31ef209cb\"",
      "hand_off": false,
      "hand_off_reason": null,
      "last_modified": "Fri, 18 Sep 2026 14:57:36 GMT",
      "listing_modified": "2026-09-18 10:57",
      "publication_id": "StormEvents_locations-ftp_v1.0_d2026_c20260918.csv.gz",
      "size_bytes": 715178,
      "type": "locations",
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_locations-ftp_v1.0_d2026_c20260918.csv.gz",
      "year": 2026
    }
  },
  "retrieved_at": "2026-10-18T20:32:01Z",
  "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318063",
  "year": 2026
}
```

### Records list

- Capability: `storm-events/records_list`
- Description: One page of rows from one bulk file (ep-3), segment key (type, year). Each page re-fetches the gzip, stream-decompresses it through an RFC 4180 parser (narratives hold commas, quotes and newlines), skips to the row offset, returns up to 2000 typed rows and stops. The cursor pins file name and ETag; if NCEI reissued the file in between (new c date, missing old name or different ETag) the call fails with upstream_error `publication_changed: ...` instead of mixing versions. Every row carries source_record_id, source_url, publication_id and retrieved_at; DAMAGE_* are kept verbatim with a parsed USD value beside them.
- Instructions: Full collection of a year's details, locations or fatalities rows. Pass type and year for the first page, then only the cursor.
- Cost: 5 credits per call
- Capability file: [Records list](https://firecrawl.dev/alexandria/agents/providers/ncei-noaa-gov/storm-events/records_list)

Accepted options:
- `cursor` (string): `next_cursor` of the previous page; carries the segment, so type and year may be omitted (if given they must match). Example: `next_cursor`
- `page_size` (number): Rows per page, at most 2000. Example: `2000`
- `type` (string): Required without a cursor. Example: `details`
- `year` (number): Data year (the `d` part of the file name), 1950 to the current year. Example: `1950`

Response schema example:
```json
{
  "next_cursor": "v1|StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz|\"724d4c-65bc31eee393b\"|2",
  "observed_at_ms": 1792355511826,
  "page_size": 2,
  "publication": {
    "c_date": "2026-09-18",
    "columns": [
      "BEGIN_YEARMONTH",
      "BEGIN_DAY",
      "BEGIN_TIME",
      "END_YEARMONTH",
      "END_DAY",
      "END_TIME",
      "EPISODE_ID",
      "EVENT_ID",
      "STATE",
      "STATE_FIPS",
      "YEAR",
      "MONTH_NAME",
      "EVENT_TYPE",
      "CZ_TYPE",
      "CZ_FIPS",
      "CZ_NAME",
      "WFO",
      "BEGIN_DATE_TIME",
      "CZ_TIMEZONE",
      "END_DATE_TIME",
      "INJURIES_DIRECT",
      "INJURIES_INDIRECT",
      "DEATHS_DIRECT",
      "DEATHS_INDIRECT",
      "DAMAGE_PROPERTY",
      "DAMAGE_CROPS",
      "SOURCE",
      "MAGNITUDE",
      "MAGNITUDE_TYPE",
      "FLOOD_CAUSE",
      "CATEGORY",
      "TOR_F_SCALE",
      "TOR_LENGTH",
      "TOR_WIDTH",
      "TOR_OTHER_WFO",
      "TOR_OTHER_CZ_STATE",
      "TOR_OTHER_CZ_FIPS",
      "TOR_OTHER_CZ_NAME",
      "BEGIN_RANGE",
      "BEGIN_AZIMUTH",
      "BEGIN_LOCATION",
      "END_RANGE",
      "END_AZIMUTH",
      "END_LOCATION",
      "BEGIN_LAT",
      "BEGIN_LON",
      "END_LAT",
      "END_LON",
      "EPISODE_NARRATIVE",
      "EVENT_NARRATIVE",
      "DATA_SOURCE"
    ],
    "etag": "\"724d4c-65bc31eee393b\"",
    "file_sha256": "61c1dfebdfb24d561bad4528a31659791cf9a83d74663dd4e97b1e0088003f44",
    "last_modified": "Fri, 18 Sep 2026 14:57:35 GMT",
    "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
    "size_bytes": 7490892,
    "type": "details",
    "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
    "year": 2026
  },
  "records": [
    {
      "begin_azimuth": "N",
      "begin_date_time": "14-APR-26 19:00:00",
      "begin_day": 14,
      "begin_lat": 42.43,
      "begin_local": "2026-04-14T19:00:00",
      "begin_location": "BROOKS",
      "begin_lon": -71.9,
      "begin_range": 0.69,
      "begin_time": 1900,
      "begin_yearmonth": 202604,
      "category": null,
      "cz_fips": 27,
      "cz_name": "WORCESTER",
      "cz_timezone": "EST-5",
      "cz_type": "C",
      "damage_crops": "0.00K",
      "damage_crops_usd": 0,
      "damage_property": "1.00K",
      "damage_property_usd": 1000,
      "data_source": "CSV",
      "deaths_direct": 0,
      "deaths_indirect": 0,
      "end_azimuth": "N",
      "end_date_time": "14-APR-26 19:00:00",
      "end_day": 14,
      "end_lat": 42.43,
      "end_local": "2026-04-14T19:00:00",
      "end_location": "BROOKS",
      "end_lon": -71.9,
      "end_range": 0.69,
      "end_time": 1900,
      "end_yearmonth": 202604,
      "episode_id": 210980,
      "episode_narrative": "A front moving through brought a squall line through western Massachusetts and into central Massachusetts producing pockets of damaging winds which downed several trees.",
      "event_id": 1318063,
      "event_narrative": "In Princeton, there were downed trees and wires near Ball Hill Rd.",
      "event_type": "Thunderstorm Wind",
      "flood_cause": null,
      "injuries_direct": 0,
      "injuries_indirect": 0,
      "magnitude": 51,
      "magnitude_type": "EG",
      "month_name": "April",
      "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "record_type": "details",
      "retrieved_at": "2026-10-18T20:31:50Z",
      "source": "Law Enforcement",
      "source_record_id": "details:1318063",
      "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318063",
      "state": "MASSACHUSETTS",
      "state_fips": 25,
      "tor_f_scale": null,
      "tor_length": null,
      "tor_other_cz_fips": null,
      "tor_other_cz_name": null,
      "tor_other_cz_state": null,
      "tor_other_wfo": null,
      "tor_width": null,
      "wfo": "BOX",
      "year": 2026
    },
    {
      "begin_azimuth": "SW",
      "begin_date_time": "14-APR-26 19:10:00",
      "begin_day": 14,
      "begin_lat": 42.44,
      "begin_local": "2026-04-14T19:10:00",
      "begin_location": "SOUTH LANCASTER",
      "begin_lon": -71.69,
      "begin_range": 0.86,
      "begin_time": 1910,
      "begin_yearmonth": 202604,
      "category": null,
      "cz_fips": 27,
      "cz_name": "WORCESTER",
      "cz_timezone": "EST-5",
      "cz_type": "C",
      "damage_crops": "0.00K",
      "damage_crops_usd": 0,
      "damage_property": "10.00K",
      "damage_property_usd": 10000,
      "data_source": "CSV",
      "deaths_direct": 0,
      "deaths_indirect": 0,
      "end_azimuth": "SW",
      "end_date_time": "14-APR-26 19:10:00",
      "end_day": 14,
      "end_lat": 42.44,
      "end_local": "2026-04-14T19:10:00",
      "end_location": "SOUTH LANCASTER",
      "end_lon": -71.69,
      "end_range": 0.86,
      "end_time": 1910,
      "end_yearmonth": 202604,
      "episode_id": 210980,
      "episode_narrative": "A front moving through brought a squall line through western Massachusetts and into central Massachusetts producing pockets of damaging winds which downed several trees.",
      "event_id": 1318061,
      "event_narrative": "In Lancaster, a tree was down on a house near Crescent St.",
      "event_type": "Thunderstorm Wind",
      "flood_cause": null,
      "injuries_direct": 0,
      "injuries_indirect": 0,
      "magnitude": 51,
      "magnitude_type": "EG",
      "month_name": "April",
      "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "record_type": "details",
      "retrieved_at": "2026-10-18T20:31:50Z",
      "source": "Fire Department/Rescue",
      "source_record_id": "details:1318061",
      "source_url": "https://www.ncei.noaa.gov/access/storm-events-database/event-details/1318061",
      "state": "MASSACHUSETTS",
      "state_fips": 25,
      "tor_f_scale": null,
      "tor_length": null,
      "tor_other_cz_fips": null,
      "tor_other_cz_name": null,
      "tor_other_cz_state": null,
      "tor_other_wfo": null,
      "tor_width": null,
      "wfo": "BOX",
      "year": 2026
    }
  ],
  "retrieved_at": "2026-10-18T20:31:50Z",
  "returned": 2,
  "row_offset": 0,
  "total_rows": null
}
```

### Source status

- Capability: `storm-events/source_status`
- Description: Cheap version check of the bulk directory (ep-1 autoindex): every StormEvents_<type>-ftp_v1.0_d<YYYY>_c<YYYYMMDD>.csv.gz with its c date, size and listing time; optionally narrowed to one type and/or year. When exactly one file is selected its HTTP ETag and Last-Modified are read with one Range request. Files above the 32 MiB fetch cap are flagged hand_off with the URL and size.
- Instructions: Before records_list, to learn the current publication_id for a (type, year) segment and whether NCEI reissued it (new c date).
- Cost: 5 credits per call
- Capability file: [Source status](https://firecrawl.dev/alexandria/agents/providers/ncei-noaa-gov/storm-events/source_status)

Accepted options:
- `type` (string): Narrow to one file type. Example: `details`
- `year` (number): Data year (the `d` part of the file name), 1950 to the current year. Example: `1950`

Response schema example:
```json
{
  "auxiliary_files": [
    {
      "listing_modified": "2026-03-24 12:05",
      "name": "README",
      "size_bytes": 2013,
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/README"
    },
    {
      "listing_modified": "2026-03-11 12:00",
      "name": "Storm-Data-Bulk-csv-Format.pdf",
      "size_bytes": 341218,
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/Storm-Data-Bulk-csv-Format.pdf"
    },
    {
      "listing_modified": "2024-07-30 10:02",
      "name": "Storm-Data-Export-Format.pdf",
      "size_bytes": 150527,
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/Storm-Data-Export-Format.pdf"
    },
    {
      "listing_modified": "2014-02-18 09:15",
      "name": "ugc_areas.csv",
      "size_bytes": 924123,
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/ugc_areas.csv"
    }
  ],
  "hand_off_count": 0,
  "observed_at_ms": 1792355502276,
  "publication_count": 231,
  "publications": [
    {
      "c_date": "2026-09-18",
      "etag": "\"724d4c-65bc31eee393b\"",
      "hand_off": false,
      "hand_off_reason": null,
      "last_modified": "Fri, 18 Sep 2026 14:57:35 GMT",
      "listing_modified": "2026-09-18 10:57",
      "publication_id": "StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "size_bytes": 7490892,
      "type": "details",
      "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-ftp_v1.0_d2026_c20260918.csv.gz",
      "year": 2026
    }
  ],
  "retrieved_at": "2026-10-18T20:31:41Z",
  "selected_count": 1,
  "source_url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/",
  "year_max": 2026,
  "year_min": 1950
}
```
