# Natural Disaster & Earthquake Tracker (`scrapemint/natural-disaster-tracker`) Actor

Live worldwide disaster feed from official USGS and GDACS sources: earthquakes, cyclones, floods, volcanoes, droughts, and wildfires with alert levels, coordinates, and severity. Filter by magnitude, alert level, type, and country. Schedule with dedupe for a new-events feed. Pay per event.

- **URL**: https://apify.com/scrapemint/natural-disaster-tracker.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** News, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 disaster event rows

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Natural Disaster & Earthquake Tracker

A live worldwide feed of earthquakes, tropical cyclones, floods, volcanic eruptions, droughts, and wildfires, from the two official sources risk teams trust:

- **USGS** - the US Geological Survey's global earthquake catalog, updated every minute, with magnitude, depth, tsunami flags, and PAGER impact alerts
- **GDACS** - the UN/European Commission Global Disaster Alert and Coordination System, with Green/Orange/Red alert levels and severity assessments for everything else

One normalized row per event, whatever the type.

### What you get

| Field | Description |
| --- | --- |
| `eventType` | Earthquake, Tropical cyclone, Flood, Volcanic eruption, Drought, Wildfire |
| `title` | Human-readable event name |
| `alertLevel` | green / orange / red severity assessment |
| `magnitude`, `depthKm`, `tsunamiWarning` | Earthquake specifics |
| `severityText` | GDACS impact assessment, e.g. affected area or population |
| `country`, `latitude`, `longitude` | Where |
| `startedAt`, `updatedAt` | When |
| `url` | Link to the official event report |
| `source` | USGS or GDACS |

### Run it as a monitor

Turn on `dedupe` and put the actor on a schedule (hourly, daily): every run returns only events it has not returned before. Quiet windows return nothing and cost nothing. That gives you a push-style disaster feed for:

- **Supply chain and logistics risk**: is anything happening near your suppliers, plants, or shipping routes? Filter by `countries`.
- **Insurance and reinsurance**: catastrophe awareness without an enterprise alerting contract.
- **NGOs and relief organizations**: Orange/Red alerts as they are issued.
- **Travel safety products and news automation**: structured events with coordinates, ready to map.

### Filters

- `eventTypes` - track only what matters to you
- `minMagnitude` - earthquake floor (5 feels, 6 damages, 7 destroys)
- `minAlertLevel` - green for everything, orange/red for serious events only
- `countries` - substring match on the event location
- `includeOngoing` - droughts and floods run for weeks; include or exclude events that started before your window

### Pricing

You pay per event row (`disaster_row`). The first 2 rows of every run are free, and runs that find nothing new cost nothing.

### Input example

```json
{
    "eventTypes": ["earthquake", "cyclone", "flood"],
    "minMagnitude": 5,
    "minAlertLevel": "orange",
    "countries": ["Japan", "Philippines", "Indonesia"],
    "dedupe": true
}
```

### Notes

- Both sources are official, public, and keyless. No login, no browser.
- Earthquakes come exclusively from USGS; GDACS earthquake entries are skipped so the same quake never appears twice.
- GDACS alert levels can change as an event develops; with `dedupe` on you see each event once, at the alert level it had when first returned.

# Actor input Schema

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

Which disaster types to track. Empty = all.

## `minMagnitude` (type: `integer`):

Earthquakes below this magnitude are skipped. 4 to 5 keeps it to quakes people feel; 6 and up is destructive.

## `minAlertLevel` (type: `string`):

GDACS and USGS PAGER alert severity floor. Green returns everything; orange and red only the serious events.

## `sinceHours` (type: `integer`):

How far back to include earthquakes. Max 720 (30 days).

## `includeOngoing` (type: `boolean`):

Droughts, floods, and cyclones can run for weeks. On: all currently active events are included regardless of start date. Off: only events that started inside the window.

## `countries` (type: `array`):

Only events whose location mentions one of these, e.g. Japan, Kenya, Philippines. Empty = worldwide.

## `maxRows` (type: `integer`):

Cap on event rows returned. Controls total cost.

## `dedupe` (type: `boolean`):

Remember returned events across runs and skip them. Turn on with a schedule for a live new-disasters feed.

## Actor input object example

```json
{
  "eventTypes": [
    "earthquake",
    "cyclone",
    "flood",
    "volcano"
  ],
  "minMagnitude": 5,
  "minAlertLevel": "green",
  "sinceHours": 48,
  "includeOngoing": true,
  "countries": [],
  "maxRows": 50,
  "dedupe": false
}
```

# 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 = {
    "eventTypes": [
        "earthquake",
        "cyclone",
        "flood",
        "volcano"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/natural-disaster-tracker").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 = { "eventTypes": [
        "earthquake",
        "cyclone",
        "flood",
        "volcano",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/natural-disaster-tracker").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 '{
  "eventTypes": [
    "earthquake",
    "cyclone",
    "flood",
    "volcano"
  ]
}' |
apify call scrapemint/natural-disaster-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemint/natural-disaster-tracker"
        }
    }
}

```

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/AhOY7qAt3d6M5gW5n/builds/7Ep86zgRyslWWZscG/openapi.json
