# Weather Anomaly & Extreme Forecast Ranker (`saint_person/weather-anomaly-ranker`) Actor

Rank multiple cities by 7-day extreme-weather risk (heat, cold, wind, rain) computed from official forecast data - spot the worst spot before it hits.

- **URL**: https://apify.com/saint\_person/weather-anomaly-ranker.md
- **Developed by:** [saint person](https://apify.com/saint_person) (community)
- **Categories:** Business
- **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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## 🌪️ Weather Anomaly & Extreme Forecast Ranker

> 🚀 **Compare extreme-weather risk across cities in one run.** Not a raw forecast dump - a ranked risk score built from heat, cold, wind, and rain thresholds.

> 🕒 **Last updated:** 2026-07-07 · 📊 **12 fields** per location · Built on Open-Meteo (official, no key)

> 🎁 **Try it free:** the free Apify plan returns up to **10 results per run** - enough to see the output quality. Any paid Apify plan unlocks full-size runs.

Give it a list of cities and it scores each one's 7-day forecast for extreme heat, cold, wind, and rain, then ranks them by a composite risk score - so you can spot the worst spot on your list without reading twelve separate forecasts.

Useful for event planners, logistics teams, insurers, travel bloggers, or anyone comparing multiple locations at once instead of looking up one city at a time.

| 🎯 Target Audience | 💡 Primary Use Cases |
| --- | --- |
| Event planners, logistics/ops teams, travel writers, insurers, disaster-prep teams | Multi-city risk comparison, travel planning, supply-chain weather monitoring, content research |

***

### 📋 What this Actor does

One input, one run, a clean dataset:

- Fetches official 7-day (configurable 1-16 day) forecasts for every city you list
- Scores each city on heat, cold, wind, and rain threshold crossings
- Ranks by a single composite `riskScore` and labels it EXTREME/HIGH/MODERATE/LOW
- Flags the `dominantHazard` driving the score (Heat, Cold, Wind, Rain, or None)

> 💡 **Why it matters:** One number lets you triage 15 cities in seconds instead of eyeballing 15 forecasts.

***

### 🎬 Full demo

🚧 Video walkthrough coming soon - the Quick Start below takes under 3 minutes end to end.

***

### ⚙️ Input

| Input | Type | Default | Behavior |
| --- | --- | --- | --- |
| `locations` | string | (prefilled) | Semicolon-separated `Name@lat,lon` pairs, up to 15 |
| `forecastDays` | integer | 7 | Days ahead to evaluate (1-16) |
| `maxResults` | integer | 15 | Cap on number of locations processed |

**Example: Compare 5 major cities**

```json
{ "locations": "New York@40.71,-74.01; London@51.51,-0.13; Tokyo@35.68,139.69; Dubai@25.20,55.27; Miami@25.76,-80.19", "forecastDays": 7 }
```

**Example: Two-city storm check**

```json
{ "locations": "Houston@29.76,-95.37; Manila@14.60,120.98", "forecastDays": 10 }
```

> ⚠️ **Good to know:** coordinates, not city names, drive the lookup - grab lat/lon from any map app or geocoding tool.

***

### 📊 Output

Each location returns **12 fields**. Download as CSV, Excel, JSON, or XML, or consume via the Apify API.

#### 🧾 Schema

| Field | Type | Example |
| --- | --- | --- |
| location | string | Miami |
| latitude / longitude | number | 25.76 / -80.19 |
| forecastDays | integer | 7 |
| avgMaxTempC / avgMinTempC | number | 32.1 / 27.9 |
| maxWindKmh | number | 41.2 |
| maxPrecipProbabilityPct | number | 31 |
| riskScore | integer | 7 |
| riskLevel | string | HIGH |
| dominantHazard | string | Heat |
| generatedAt | string | 2026-07-07T12:00:00Z |

#### 📦 Sample record

```json
{"location":"Dubai","latitude":25.2,"longitude":55.27,"forecastDays":7,"avgMaxTempC":37.9,"avgMinTempC":30.1,"maxWindKmh":20.4,"maxPrecipProbabilityPct":0,"riskScore":21,"riskLevel":"EXTREME","dominantHazard":"Heat","generatedAt":"2026-07-07T10:16:09Z"}
```

***

### ✨ Why choose this Actor

| | Capability |
| --- | --- |
| 🏆 | **Ranks, doesn't just report.** One composite score across heat/cold/wind/rain, not a raw daily array you have to interpret yourself. |
| 🌍 | **Multi-city in one run.** Compare up to 15 locations side by side. |
| ⚡ | **Built on Open-Meteo.** Official, free, no API key - stable and durable. |
| 🔁 | **Automatic retries.** Transient failures retry with backoff. |
| 💳 | **Pay per result.** No subscription. A typical 5-city run costs about $0.035. |

> 📊 Turns 5 separate forecast lookups into 1 ranked table.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Setup |
| --- | --- | --- | --- | --- |
| **⭐ Weather Anomaly & Extreme Forecast Ranker** *(this Actor)* | $5 free credit, then pay-per-use | Any city worldwide, up to 15 per run | **Live per run** | ⚡ 2 min |
| Generic weather app | Free | One city at a time | Live | 🐢 Manual, one by one |
| Weather API + own script | Free API, dev time | Any city | Live | 🐢 Hours of coding |
| Manual copy-paste | Free | Current session only | One-shot | 🐢 Hours of clicking |

Pick this Actor when you want a ranked, multi-city risk view without writing scoring logic yourself.

***

### 🚀 How to use

1. 📝 **Sign up.** Create a free Apify account with $5 credit (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the Weather Anomaly & Extreme Forecast Ranker page on the Apify Store.
3. ✏️ **Set your input.** List your cities as `Name@lat,lon` - or just press Start, the prefilled example works.
4. 🚀 **Run it.** Watch results stream into the Dataset tab.
5. 📥 **Download.** Grab results as CSV, Excel, JSON, or XML - or pipe them anywhere via the Apify API.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

- **Event planners:** compare venue cities before locking a date.
- **Logistics/supply chain:** flag routes crossing extreme-weather zones this week.
- **Insurers:** quick multi-region risk screen ahead of underwriting calls.
- **Travel/content:** rank destinations by "worst weather risk" for a listicle or newsletter.

***

### 🌟 Beyond business use cases

- 🎓 **Research & academia** - reproducible multi-site weather-risk datasets for coursework.
- 🎨 **Personal & creative** - trip planning, weather-aware content calendars.
- 🤝 **Non-profit & civic** - disaster-prep and community alerting groundwork.
- 🧪 **Experimentation** - prototype climate-risk dashboards on real data.

***

### 🔌 Automating Weather Anomaly & Extreme Forecast Ranker

**Node.js** (`apify-client` on NPM):

```javascript
const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('saint_person/weather-anomaly-ranker').call({ locations: "New York@40.71,-74.01; London@51.51,-0.13", forecastDays: 7 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**Python** (`apify-client` on PyPI):

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('saint_person/weather-anomaly-ranker').call(run_input={"locations": "New York@40.71,-74.01; London@51.51,-0.13", "forecastDays": 7})
items = client.dataset(run['defaultDatasetId']).list_items().items
```

📚 [Full Apify API documentation](https://docs.apify.com/api/v2)

[Apify Schedules](https://docs.apify.com/platform/schedules) triggers this Actor on any cron interval - daily for a standing multi-city risk watch.

***

### 🧠 Use via MCP (for AI agents)

Weather Anomaly & Extreme Forecast Ranker is directly callable by any MCP-compatible AI agent (Claude, ChatGPT, Cursor, and others) through Apify's hosted MCP server - no custom integration code needed.

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/sse?actors=saint_person/weather-anomaly-ranker",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

Once connected, just ask your agent something like: *"Use the Weather Anomaly & Extreme Forecast Ranker Actor to compare extreme weather risk across my 3 warehouse cities this week."*

📚 [Apify MCP server docs](https://docs.apify.com/platform/integrations/mcp)

***

### 🤖 Ask an AI assistant about this Actor

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20Weather%20Anomaly%20%26%20Extreme%20Forecast%20Ranker%20on%20Apify%3F)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20Weather%20Anomaly%20%26%20Extreme%20Forecast%20Ranker%20on%20Apify%3F)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20Weather%20Anomaly%20%26%20Extreme%20Forecast%20Ranker%20on%20Apify%3F)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

It calls Open-Meteo's official forecast API for each city, then scores each day's max/min temp, wind, and rain probability against fixed extreme-weather thresholds.

#### Why coordinates instead of city names?

Coordinates are unambiguous (no "which Springfield?" problem) and skip an extra geocoding call, keeping runs fast and cheap.

#### Can I use this for a single city?

Yes - list just one `Name@lat,lon` pair. The ranking benefit shows up once you compare 2+.

#### What counts as "EXTREME"?

A composite score of 8+ points from heat (35C+/30C+), cold (-10C-/0C-), wind (60km/h+), and rain (80%+) threshold crossings across the window.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval.

#### ⚖️ Is this data legal to collect?

This Actor only collects data that is publicly accessible via Open-Meteo's free API. No login, no bypass of access controls.

#### 💳 Do I need a paid Apify plan?

No. The free Apify plan is enough for testing and small runs.

#### 🔁 What happens if a run fails?

Transient errors retry automatically with backoff. If a run still fails, the log explains exactly why.

#### 🆘 What if I need help?

Open an issue on this Actor's Issues tab.

***

### 🔌 Integrate with any app

- [**Zapier**](https://docs.apify.com/platform/integrations/zapier)
- [**Make**](https://docs.apify.com/platform/integrations/make)
- [**n8n**](https://docs.apify.com/platform/integrations)
- [**Google Sheets**](https://docs.apify.com/platform/integrations/drive)
- [**Slack**](https://docs.apify.com/platform/integrations/slack)
- [**Gmail**](https://docs.apify.com/platform/integrations/gmail)
- [**Webhooks**](https://docs.apify.com/platform/integrations/webhooks)
- [**MCP**](https://docs.apify.com/platform/integrations/mcp)

***

### 🔗 Recommended Actors

Pairs well with [USGS Seismic Risk Profiler](https://apify.com/saint_person/usgs-seismic-risk-profiler) for a fuller multi-hazard risk picture.

> 💡 **Pro tip:** browse the complete [saint\_person collection](https://apify.com/saint_person) for more tools like this.

***

### 🆘 Help & custom requests

- 🐛 **Something not working?** Open an issue on this Actor's **Issues tab**.
- 🛠️ **Need a custom feature or a different data source?** Open an issue describing what you need.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Open-Meteo. All trademarks are the property of their respective owners. Only publicly available data is collected.

# Actor input Schema

## `locations` (type: `string`):

Semicolon-separated list of 'Name@lat,lon' pairs to compare. Works out of the box with the prefilled example.

## `forecastDays` (type: `integer`):

How many days ahead to evaluate (Open-Meteo supports up to 16).

## `maxResults` (type: `integer`):

Maximum number of locations to process. Controls your cost: you pay per location risk profile.

## Actor input object example

```json
{
  "locations": "New York@40.71,-74.01; London@51.51,-0.13; Tokyo@35.68,139.69; Dubai@25.20,55.27; Miami@25.76,-80.19",
  "forecastDays": 7,
  "maxResults": 15
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": "New York@40.71,-74.01; London@51.51,-0.13; Tokyo@35.68,139.69; Dubai@25.20,55.27; Miami@25.76,-80.19"
};

// Run the Actor and wait for it to finish
const run = await client.actor("saint_person/weather-anomaly-ranker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "locations": "New York@40.71,-74.01; London@51.51,-0.13; Tokyo@35.68,139.69; Dubai@25.20,55.27; Miami@25.76,-80.19" }

# Run the Actor and wait for it to finish
run = client.actor("saint_person/weather-anomaly-ranker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": "New York@40.71,-74.01; London@51.51,-0.13; Tokyo@35.68,139.69; Dubai@25.20,55.27; Miami@25.76,-80.19"
}' |
apify call saint_person/weather-anomaly-ranker --silent --output-dataset

```

## MCP server setup

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

```

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/XcFnNYCAu4CUoacV7/builds/AMcs2ptd9QWZ1otYL/openapi.json
