CAP Alert Extractor (OASIS CAP 1.2 emergency alerts) avatar

CAP Alert Extractor (OASIS CAP 1.2 emergency alerts)

Pricing

from $0.35 / 1,000 alert records

Go to Apify Store
CAP Alert Extractor (OASIS CAP 1.2 emergency alerts)

CAP Alert Extractor (OASIS CAP 1.2 emergency alerts)

Point at ANY CAP alerting authority (US NWS, UN GDACS, Canada NAAD, PH PAGASA, NZ MetService + more in the WMO Register) and extract OASIS CAP 1.2 alerts as flat rows. Auto-decodes GeoJSON, inline CAP-XML feeds and Atom/RSS-linked CAP docs. One row per alert x info-language x area, with geometry.

Pricing

from $0.35 / 1,000 alert records

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

CAP Alert Extractor

Point at ANY CAP alerting authority and get structured emergency-alert rows.

This Actor is a generic runner over the OASIS Common Alerting Protocol (CAP) 1.2 — the international standard that national meteorological and emergency-management agencies use to publish public warnings (severe weather, floods, earthquakes, tsunamis, air-quality, civil emergencies). The WMO Register of Alerting Authorities lists ~130 authorities that publish CAP. Give this Actor any of their feeds — or a single CAP document — and get flat, analysis-ready rows. No per-country scraper needed.

Why this is one Actor, not a hundred

Every authority speaks CAP, but they serialize it three different ways on the wire. This Actor auto-detects and decodes all three, so a single input works everywhere:

SerializationExample authorityWhat it looks like
GeoJSONUS NWS (api.weather.gov/alerts/active)one features[] per alert, CAP fields in properties
Inline CAP-XML feedUN GDACS (gdacs_cap.xml)an RSS feed where each <item> embeds a full <cap:alert>
Atom/RSS → linked CAP docsCanada NAAD, PH PAGASA, NZ MetServicea feed whose entries link to standalone CAP XML documents (auto-followed)

It also handles the details the CAP spec leaves to the publisher:

  • the cap: namespace prefix is optional and inconsistent — elements are matched by local-name, so <cap:alert>, <alert>, and default-namespaced documents all parse.
  • <area> geometry can be a polygon, a circle, or a geocode (SAME / FIPS / UGC) — all three shapes are captured; alerts with only a geocode are fine.
  • status: Test / Exercise and msgType: Cancel / Update are real CAP values — the status filter (default Actual) keeps test messages out of your data, and msgType is surfaced so a Cancel is never mistaken for a live warning.
  • multi-language alerts (Canadian EN+FR, EU 24-language) emit one row per language.

Input

FieldTypeDefaultDescription
startUrlstring (required)A CAP feed URL (GeoJSON / CAP-XML / Atom-RSS) or a single CAP XML document URL
modeenum feed | alertfeedfeed lists current alerts from a feed; alert parses one CAP document
statusenumActualOnly emit alerts with this CAP status (empty = any). Keeps Test/Exercise out
severityenum(any)Filter by CAP severity (Extreme / Severe / Moderate / Minor / Unknown)
urgencyenum(any)Filter by CAP urgency (Immediate / Expected / Future / Past / Unknown)
certaintyenum(any)Filter by CAP certainty (Observed / Likely / Possible / Unlikely / Unknown)
maxRecordsinteger1000Stop after this many rows
userAgentstring(built-in)Override the User-Agent (some authorities request a descriptive UA)
timeoutSecsinteger60Per-request timeout

Example inputs

{ "startUrl": "https://api.weather.gov/alerts/active", "mode": "feed", "status": "Actual" }
{ "startUrl": "https://www.gdacs.org/xml/gdacs_cap.xml", "mode": "feed", "severity": "Severe" }
{ "startUrl": "https://rss.naad-adna.pelmorex.com/", "mode": "feed" }
{ "startUrl": "https://alerts.metservice.com/cap/rss", "mode": "feed" }

Output

The natural billable row is (alert × info-language × area) — one CAP <alert> with 2 language <info> blocks each covering 7 <area> blocks yields 14 rows. Every row is a flat, fully-nullable superset carrying alert-level fields (identifier, sender, sent, status, msgType, scope, references, incidents), info-level fields (language, categories, event, responseTypes, urgency, severity, certainty, effective, onset, expires, senderName, headline, description, instruction, eventCodes, parameters), and area-level fields (areaDesc, polygons, circles, geocodes, altitude, ceiling), plus provenance (_sourceUrl, _capUrl, _mode, _rowIndex, and the lossless _raw CAP XML when applicable).

{
"identifier": "urn:oid:2.49.0.1.840...",
"sender": "w-nws.webmaster@noaa.gov",
"sent": "2026-07-09T12:26:00-04:00",
"status": "Actual",
"msgType": "Update",
"language": "en-US",
"event": "Flood Watch",
"severity": "Severe",
"urgency": "Future",
"certainty": "Possible",
"effective": "2026-07-09T12:26:00-04:00",
"expires": "2026-07-10T00:00:00-04:00",
"senderName": "NWS State College PA",
"headline": "Flood Watch issued July 9 ...",
"areaDesc": "Perry; Dauphin; Lebanon; Cumberland; Adams; York; Lancaster",
"geocodes": [{ "valueName": "SAME", "value": "042099" }, { "valueName": "UGC", "value": "PAZ056" }]
}

Honest behavior

  • A reachable feed with 0 in-window alerts is a real result (exit 0, zero rows) — not an error.
  • If every source is unreachable / unparseable, the Actor fails fast rather than emitting a fabricated empty success, so you can trust a 0-row run.
  • It never invents rows and never reports an error as an honest empty.

Pricing

Pay-per-event: $0.0005 per alert record (one alert × info × area row), with a volume discount across subscription tiers.

Notes

  • Metadata only — the Actor reads the alert content the authority publishes; it does not download any linked binary attachments.
  • Discover more authorities and their feed URLs in the WMO Register of Alerting Authorities.