NASA EONET Natural Disasters: Wildfires, Storms, Volcanoes
Pricing
from $1.40 / 1,000 event row returneds
NASA EONET Natural Disasters: Wildfires, Storms, Volcanoes
Natural events from NASA's keyless EONET tracker as rows: wildfires, severe storms, volcanoes, floods, icebergs, dust. One row per event with category, open/closed status, dates, latest coordinates, magnitude and sources, or one row per track position. Filter by category, region, box, size.
Pricing
from $1.40 / 1,000 event row returneds
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
NASA's Earth Observatory Natural Event Tracker (EONET) is a public catalogue of natural events on Earth: editors open an event when a volcano observatory, a wildfire agency, a typhoon warning centre, the national ice centre or a disaster alert system reports one, add a position every time the reporter publishes a new one, and close it when the event is over. This actor turns that catalogue into rows — one row per event with its latest position, size and reporters, or one row per recorded position so you get the whole path of a storm, the drift of an iceberg or the growth of a fire.
Filter by category, by a named region or your own box, by status, by time window, by reporting organisation and by size
in the unit the reporters use (acres, knots, square nautical miles). No API key, no login, no proxy, no browser: one
public JSON endpoint on eonet.gsfc.nasa.gov, filtered and normalised in memory. Made by Yadroo.
Use cases
- Live fire map for one region —
categories: ["wildfires"],region: "usWest": every fire the catalogue holds open inside your map window, with coordinates and acres, ready to drop on a tile layer. - Storm paths for ports and marine insurance —
mode: "track",categories: ["severeStorms"]: the six-hourly positions of each cyclone with sustained wind in knots and the kilometres it moved since the previous advisory. - Eruption watch for aviation and travel desks —
categories: ["volcanoes"],status: "open": the volcanoes currently listed as erupting, with the vent coordinates and the observatory that reported them. - Iceberg drift for polar shipping and fisheries —
categories: ["seaLakeIce"],mode: "track": where each tracked berg has been, with its area in square nautical miles. - Weekly hazard line-up for a newsroom —
sinceDays: 7across all categories,onlyNew: trueon a schedule, so a daily run reports only what appeared since the previous one. - A hazard layer for an agent or a RAG index —
fields: ["eventId","title","categoryId","latitude","longitude","lastDate"]keeps the row small enough to paste into a model context, andeventIdsre-reads the same event every hour.
Input
Nothing is required: with no input at all the actor writes the 50 most recent open events of every category.
| Field | Type | Default | Allowed values / notes |
|---|---|---|---|
mode | string | events | events = one row per event, track = one row per recorded position. See Modes |
eventIds | string[] | — | e.g. ["EONET_24482"]. Fetches those events directly; the filters below are then unused. An id the catalogue does not know yields a row with found: false |
categories | string[] | all | 13 values, see Categories. Several are OR-ed by the source |
status | string | open | open, closed, all |
region | string | world | 17 named boxes, see Regions |
bbox | string | — | Your own box as minLon,maxLat,maxLon,minLat, e.g. -125,50,-100,31. Overrides region. See Box order |
sources | string[] | all | 33 reporting organisations, see Reporting organisations. OR-ed |
sinceDays | integer | — | 1–3650. Keeps events with a position in the last N days. No default on purpose, see Limits |
startDate | string | — | UTC YYYY-MM-DD, inclusive. Used instead of sinceDays |
endDate | string | run date | UTC YYYY-MM-DD, inclusive. Only together with startDate |
sinceHours | integer | — | 1–8760. Applied by the actor: the newest position must be younger than this |
onlyNew | boolean | false | Remember written event ids between runs and skip them next time |
magnitudeId | string | — | Which measurement the size bounds use, 11 values, see Measurements |
magnitudeMin | integer | — | Lower bound, inclusive. Needs magnitudeId |
magnitudeMax | integer | — | Upper bound, inclusive. Needs magnitudeId |
titleContains | string[] | — | Applied by the actor: keep titles holding one of these words, case-insensitive |
sortBy | string | latest | latest, oldest, magnitude, title. Decides which events survive maxItems |
includePolygonCoordinates | boolean | false | Write the full outline of polygon events into polygonCoordinates |
maxItems | integer | 50 | 1–2000 rows (events, or positions in track mode). The cost brake |
maxTrackPointsPerEvent | integer | 200 | 1–5000 positions per event in track mode, counted from the newest backwards |
fields | string[] | all | Keep only these output fields, in this order |
categories, region, sources, magnitudeId and fields are read against the catalogue's own vocabulary: an
obvious typo or a common word is corrected and the correction is logged ("typhoon" → severeStorms, "wildfire" →
wildfires, "acres" → ac, "usWests" → usWest). A value that matches nothing stops the run with the list of
valid values — the search is never widened behind your back.
Filters sent to the source: categories, status, sources, sinceDays/startDate+endDate, region/bbox,
magnitudeId+magnitudeMin/magnitudeMax. Applied by the actor after fetching: sinceHours, titleContains,
onlyNew, sortBy, maxItems, maxTrackPointsPerEvent, fields.
Reference
Modes
events— one row per event: the latest coordinates and size, the first and latest report date, how many positions were recorded, whether the editors still hold it open. Use the Events or Timeline & size view.track— one row per recorded position of each event, oldest first, withpointIndex, the observation time anddistanceKmto the previous position (nullon the first row of an event). Use the Track positions view.maxTrackPointsPerEventkeeps the newest positions of long-lived events — an iceberg can carry a decade of them.
Categories
| Id | What it holds |
|---|---|
drought | Long absence of precipitation affecting agriculture, livestock, food and water |
dustHaze | Dust storms, air pollution and other non-volcanic aerosols |
earthquakes | Shaking and displacement events |
floods | Inundation, water beyond river and lake extents |
landslides | Landslides, mudslides, avalanches |
manmade | Human-induced events extreme in their extent |
seaLakeIce | Icebergs and other sea and lake ice, mostly tracked bergs with a designation like D33D |
severeStorms | Tropical storms, hurricanes, typhoons, cyclones |
snow | Heavy snow events |
tempExtremes | Heat and cold extremes |
volcanoes | Eruptions and volcanic plumes |
waterColor | Algal blooms, sediment and other water discolouration |
wildfires | Wildfires and, from the US agencies, prescribed burns (their titles start with Prescribed Fire) |
Well filled today: wildfires, severe storms, volcanoes and sea/lake ice. Thin: drought, snow, landslides, earthquakes, temperature extremes, water colour and manmade — see Limits.
Regions
Sent to the source as bbox in its own order — west, north, east, south.
| Region | minLon, maxLat, maxLon, minLat |
|---|---|
world | no box is sent |
northAmerica | -170, 72, -50, 15 |
usWest | -125, 50, -100, 31 |
usEast | -100, 50, -66, 24 |
centralAmericaCaribbean | -118, 33, -59, 5 |
southAmerica | -82, 13, -34, -56 |
europe | -25, 71, 45, 34 |
africa | -20, 38, 52, -35 |
middleEast | 25, 42, 63, 12 |
centralAsia | 46, 56, 88, 35 |
russiaSiberia | 60, 78, 180, 48 |
southAsia | 60, 38, 93, 5 |
eastAsia | 100, 54, 146, 18 |
southeastAsia | 90, 25, 145, -12 |
australiaNewZealand | 110, -8, 180, -50 |
arctic | -180, 90, 180, 60 |
antarctic | -180, -60, 180, -90 |
Box order
bbox is four decimal degrees in the source's order: west edge, north edge, east edge, south edge
(minLon,maxLat,maxLon,minLat). 46,56,88,35 covers Kazakhstan and its neighbours; -125,50,-100,31 the US West. The
actor checks that west is smaller than east and south smaller than north and stops with a message naming the order when
they are swapped. A box crossing the 180th meridian is rejected: the source silently ignores such a box and answers with
the whole planet, so use two runs (… to 180 and -180 to …) instead.
Measurements
Reporters publish a size only for some categories, in their own unit. magnitudeId says which unit the bounds use;
the unit itself comes back in magnitudeUnit.
| Id | Unit in the rows | Used for |
|---|---|---|
ac | acres | Wildfires (US agencies) |
ha | hectare | Wildfires (other agencies) |
mag_kts | kts | Severe storms — average maximum sustained wind |
sq_NM | NM^2 | Icebergs — area in square nautical miles |
mb | Mb | Earthquakes — body wave magnitude |
mi | Mi/Mwp | Earthquakes — integrated P-wave magnitude |
ml | Ml | Earthquakes — Richter local magnitude |
mms | Mw/Mww | Earthquakes — moment magnitude |
mwb | Mwb | Earthquakes — body wave moment tensor |
mwc | Mwc | Earthquakes — centroid moment tensor |
mwr | Mwr | Earthquakes — moment tensor inversion |
Typical bounds: ac ≥ 1000 for large fires, mag_kts ≥ 64 for hurricane-force storms, mag_kts 34–63 for
tropical-storm strength, sq_NM ≥ 100 for big bergs.
Reporting organisations
AVO Alaska Volcano Observatory · ABFIRE Alberta Wildfire · AU_BOM Australia Bureau of Meteorology ·
BYU_ICE BYU Antarctic iceberg tracking · BCWILDFIRE British Columbia Wildfire Service · CALFIRE California
forestry and fire protection · CEMS Copernicus Emergency Management Service · EO NASA Earth Observatory ·
Earthdata NASA Earthdata · FEMA US Federal Emergency Management Agency · FloodList FloodList ·
GDACS Global Disaster Alert and Coordination System · GLIDE GLIDE identifiers · InciWeb US incident information ·
IRWIN US interagency wildfire reporting · IDC International Disasters Charter · JTWC Joint Typhoon Warning Center ·
MRR LANCE rapid response · MBFIRE Manitoba Wildfire Program · NASA_ESRS NASA Earth science and remote sensing ·
NASA_DISP NASA Earth science disasters programme · NASA_HURR NASA hurricane and typhoon updates ·
NOAA_NHC National Hurricane Center · NOAA_CPC NOAA weather and climate prediction · PDC Pacific Disaster Center ·
ReliefWeb ReliefWeb · SIVolcano Smithsonian global volcanism programme · NATICE US National Ice Center ·
UNISYS Unisys Weather · USGS_EHP USGS earthquake hazards · USGS_CMT USGS emergency operations ·
HDDS USGS hazards data distribution · DFES_WA Western Australia fire and emergency services.
The ids land in sourceIds and the reporter's own page in sourceUrls. Those pages live on other domains; the actor
prints them as data and never fetches them.
Examples
What is burning right now, anywhere
{ "mode": "events", "categories": ["wildfires"], "status": "open", "sortBy": "latest", "maxItems": 25 }
Fires inside the US West map window
{ "mode": "events", "categories": ["wildfires"], "status": "open", "region": "usWest", "maxItems": 20 }
Volcanoes the editors currently hold open
{ "mode": "events", "categories": ["volcanoes"], "status": "open", "sortBy": "latest", "maxItems": 20 }
Paths of the tropical storms of the last three months
{ "mode": "track", "categories": ["severeStorms"], "status": "all", "sinceDays": 90, "maxTrackPointsPerEvent": 40, "maxItems": 60 }
Fires of at least a thousand acres, largest first
{ "mode": "events", "categories": ["wildfires"], "status": "open", "magnitudeId": "ac", "magnitudeMin": 1000, "sortBy": "magnitude", "maxItems": 20 }
Anything disruptive in South-East Asia this quarter
{ "mode": "events", "categories": ["wildfires", "severeStorms", "floods", "volcanoes"], "status": "all", "region": "southeastAsia", "sinceDays": 90, "maxItems": 25 }
Output
A real row from a cloud run (mode: "events", open wildfires, newest first):
{"eventId": "EONET_24710","title": "Wildfire Round Prarie, Morehouse, Louisiana","description": "8 Miles NW from Bastrop, LA","categoryId": "wildfires","categoryTitle": "Wildfires","categoryIds": ["wildfires"],"status": "open","closedAt": null,"firstDate": "2026-09-20T17:32:00.000Z","lastDate": "2026-09-20T17:32:00.000Z","durationDays": 0,"latitude": 32.858241,"longitude": -91.989455,"geometryType": "Point","geometryCount": 1,"magnitudeValue": 738.55,"magnitudeUnit": "acres","maxMagnitudeValue": 738.55,"sourceIds": ["IRWIN"],"sourceUrls": ["https://irwin.doi.gov/observer/incidents/2026-LALAS-000390"],"polygonCoordinates": [],"found": true,"url": "https://eonet.gsfc.nasa.gov/api/v3/events/EONET_24710","fetchedAt": "2026-09-24T20:56:31.372Z"}
events mode — always filled: eventId, title, categoryId, categoryTitle, status, firstDate, lastDate,
latitude, longitude, geometryType, geometryCount, sourceIds, found, url, fetchedAt.
| Field | Type | Meaning |
|---|---|---|
eventId | string | Catalogue id, e.g. EONET_24482 |
title | string | Editor's title: the fire, storm, berg or volcano plus county or country |
description | string|null | Extra note from the reporter; often null |
categoryId / categoryTitle | string | First category of the event |
categoryIds | string[] | Every category of the event |
status | string | open or closed |
closedAt | string|null | When the editors closed it, UTC |
firstDate / lastDate | string | First and latest recorded position, UTC |
durationDays | number | Days between them |
latitude / longitude | number | Latest position; the centre of the outline for polygon events |
geometryType | string | Point or Polygon |
geometryCount | number | Positions recorded so far |
magnitudeValue / magnitudeUnit | number|null / string|null | Size at the latest position and its unit |
maxMagnitudeValue | number|null | Largest size recorded for the event |
sourceIds / sourceUrls | string[] | Reporting organisations and their pages (data, never fetched) |
polygonCoordinates | array | Outline as [longitude, latitude] pairs; empty unless includePolygonCoordinates |
found | boolean | false for a requested id the catalogue does not know |
url | string | The event in the source catalogue |
fetchedAt | string | Run time, ISO 8601 UTC |
track mode writes eventId, title, categoryId, categoryTitle, status, pointIndex (position number inside
the event), date (observation time, UTC), latitude, longitude, geometryType, magnitudeValue,
magnitudeUnit, distanceKm (great-circle kilometres since the previous position, null on the first row of an
event), found, url, fetchedAt.
Dataset views: Events (map columns), Timeline & size (first/latest report, days tracked, closing date, positions, largest size), Track positions (path with distance moved).
Every run also writes a SUMMARY record to the key-value store: the filters, how many events were read and matched,
how many rows were written, the ids that were not in the catalogue and any corrected input value.
Use it from code / agents
curl -X POST "https://api.apify.com/v2/acts/yadroo~nasa-eonet-events/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"categories":["wildfires"],"status":"open","region":"usWest","maxItems":20}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/nasa-eonet-events').call({ categories: ['volcanoes'], status: 'open', maxItems: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("yadroo/nasa-eonet-events").call(run_input={"mode": "track", "categories": ["severeStorms"], "sinceDays": 90, "maxItems": 200})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: add https://mcp.apify.com to Claude / Cursor / any MCP client and call the yadroo/nasa-eonet-events tool with
the same JSON input. For a model context, cut the row down with
"fields": ["eventId","title","categoryId","latitude","longitude","lastDate","magnitudeValue","magnitudeUnit"].
On a schedule, set onlyNew: true: the actor keeps the ids it has already written in a named key-value store (one per
task) and writes only what is new, so a daily job stays a few rows long.
Pricing
Pay per event: $0.001 per run start + $0.002 per dataset row. Every run is charged the start event, also when the
filters match nothing. Typical runs: 20 rows ≈ $0.041; 25 rows ≈ $0.051; 50 rows (the default) ≈ $0.101; a 60-position
storm-track run ≈ $0.121; the maximum maxItems: 2000 ≈ $4.001. Apify plan tiers discount both prices (Bronze −10 %,
Silver −20 %, Gold and above −30 %).
maxItems is the cost brake and the run-time brake: the source answers a whole filtered result set in one response and
has no paging, so the actor reads a bounded window, sorts it the way you asked and then stops at maxItems.
Limits & FAQ
- How much the actor reads. One request per run. The source has no paging, so the actor asks for a window of the
most recent matches — ten times
maxItems, at least 500 and at most 3000 events — then appliessinceHours,titleContains, the sort and the cap. When the window is full the status message says so; narrow the filters (category, region,sinceDays) to be sure you are looking at everything that matters. An unfilteredstatus: "all"run is answered by the source with an error, so a window is always sent. sinceDaysmeasures the last report, not the start of the event. An event stays out of a 7-day window when no reporter published a new position in those seven days, even though it started last month and is still open. That is whysinceDayshas no default: a volcano erupting since 2021 and an iceberg tracked since 2011 are open, but their newest position can be weeks old.- Thin categories. Floods, drought, snow, landslides, earthquakes, temperature extremes, water colour and manmade
are entered rarely;
floodswithstatus: "open"was empty on 2026-09-24 whilestatus: "all"with a one-year window held hundreds. An empty run on those categories is the catalogue's state, not a failure — the run succeeds and the status message says nothing matched. - Editors close events late.
status: "open"can still hold an event that visibly ended, andclosedAtarrives days after the fact. Count a season withstatus: "closed"or"all"rather than with the open list. - Outlines become a centre point. Flood extents and large fire perimeters are published as polygons of hundreds to
thousands of corners. A row carries their centre in
latitude/longitude; switchincludePolygonCoordinateson to get the ring itself ([longitude, latitude]pairs, truncated at 20 000 corners). Some 2026 flood outlines are published latitude first — the actor detects that (a latitude beyond ±90, or a box that only fits the other reading) and writes them the right way round. - Some dates run ahead of the clock. A few alert-system entries carry a report or closing date in the future (the
Thailand flood read on 2026-09-24 was closed
2026-10-06). Those are the reporter's own timestamps, passed through unchanged rather than silently clipped. - Freshness follows the reporter. Storm centres publish every six hours, ice and fire agencies once or twice a day,
volcano observatories irregularly.
sinceHoursbelow six hours is often empty by nature. - Seasonality. Fire and storm counts move with the season and the hemisphere; a category that fills 2000 rows in September can be quiet in February.
- What this is not. An event catalogue, not a warning service: no forecasts, no alert levels, no damage, casualty
or insured-loss figures, no evacuation notices. The reporter links in
sourceUrlslead to those where they exist. - Unknown ids. An id the catalogue does not know is answered by the source with a server error rather than a
"not found"; the actor verifies the service is up and then writes one row with
found: falseinstead of failing. - Rate limits and licence. The endpoint is keyless and publishes no rate limit; the actor sends one request per run
and backs off on 429/5xx.
robots.txtallows everything. The data is NASA's, published for open use — check the source's own terms before you republish it.
Made by Yadroo. Sibling actors: open-meteo-weather · osm-geocode · public-holidays · google-news-search · rss-to-json