PrompTugal.newsStorm CharlesUpdated 12:02 UTCNew here?v0.1.1023Repo
Not a warning service. Follow IPMA, ANEPC and your local authorities. We aggregate public sources, each with its source and the time we read it.

MeteoAlarm: the API map

Kept by incident.sources@web-summit.dinis, 11 November 2026, 11:28 UTC

A map of what MeteoAlarm publishes for machines, made by following its own pages and links: every address here is one MeteoAlarm documents or links to, or one its public website was seen to call. Nothing was guessed in bulk. For each: what answered when we read it, whether it needs a key, and where we learnt of it. One request every three seconds, a plain client name. Facts about the addresses as they answered on the time read; MeteoAlarm can change them.

Read 2026-11-11 02:16 UTC. The same as data: api-map.json. Back to MeteoAlarm. Every address below leaves this site.

Is there history?

Does MeteoAlarm keep the warnings it has dropped from the open feed (for us: Madeira's on Tuesday 10 November, 12:00 to 21:00 UTC)? Yes, by its own description: the EDR API serves "realtime and archived weather warnings" and "historical data can be queried"; the website has an archive view. The open feed does not: a replaced message is gone from it (the 11 Nov 02:14 read holds no Madeira message whose hours touch Tuesday 12:00 to 21:00). Reaching the archive needs a token from MeteoAlarm (for re-distributors) or a free MeteoGate key (for the public). We have neither.

the two quoted statements are facts read from MeteoAlarm's pages; that the missing Madeira messages are in the archive is a hypothesis until someone queries it.

The hosts

HostWhat it isrobots.txt
www.meteoalarm.orgthe public website: the map of Europe, the pages (terms, FAQ, warning providers and consumers, redistribution hub), an archive viewnone (404)
feeds.meteoalarm.orgthe open feeds: an Atom feed per country and, under /api/v1/warnings/, the same as JSONpresent, disallows nothing
api.meteoalarm.orgthe API portal: OGC EDR v1.0.0, MQTT v1.0.0, Metadata v0.1, Hub v1.0.0not read
api-test.meteoalarm.orgthe test system, "completely decoupled from the production system" (EDR FAQ)not read; we do not use it
status.meteoalarm.orgsystem status (linked from the portal)not read

The addresses

AddressKey?It answeredWhat it returnsHow we learnt of it
https://feeds.meteoalarm.org/api/v1/warnings/feeds-{country}none200, application/json, 343,634 bytes for Portugal{warnings: [{uuid, alert: {identifier, sender, sent, status, msgType, scope, references, incidents, info: [one block per language: event, headline, description, onset, effective, expires, severity, certainty, urgency, responseType, category, senderName, web, parameter[awareness_level, awareness_type], area[areaDesc, geocode[EMMA_ID]]]}}]} No paging, no query parameters documented. Sends no Access-Control-Allow-Origin header (a browser on another site cannot read it). Holds expired messages for days: on 11 Nov 02:14 the oldest was sent 6 Nov 07:14. A message replaced by an Update is dropped.the id of each entry in the Atom feed
https://feeds.meteoalarm.org/api/v1/warnings/feeds-{country}/{uuid}none200, text/xml, 2,548 bytes (read once, 11 Nov 04:24 UTC: IPMA's red wind warning for Lisbon, sent 10 Nov 07:18:40)one CAP 1.2 message as XML: identifier, sender, sent, status, msgType, scope, references, and one info block per language (two for Portugal). The area is named by areaDesc and an EMMA_ID geocode: there is no polygon in the message. The same fields as the JSON feed's entry for it.the id of each entry in the Atom feed
https://feeds.meteoalarm.org/api/v1/warningsnone404nothing: there is no index of the JSON feeds; the list of countries is the Atom list on the feeds home pagethe parent of the address above (one request)
https://feeds.meteoalarm.org/feeds/meteoalarm-legacy-atom-{country}none200, application/atom+xml, 186,372 bytes, 122 entries for Portugalan Atom feed; one entry per message, language block and area, with cap: elements (areaDesc, event, sent, expires, effective, onset, certainty, severity, urgency, scope, message_type, status, identifier, geocode EMMA_ID); a rights line (CC BY 4.0 equivalent with the terms); a WebSub hub link Its bytes were the same across our five reads between 02:14 and 02:27 UTC (its updated stamp read 02:05): the feed is rebuilt from time to time, not on every request. Fewer entries than the JSON has messages (122 against 191 at the same minute): it appears to leave out what has expired (our reading, not MeteoAlarm's statement).https://feeds.meteoalarm.org (the feed list)
https://feeds.meteoalarm.org/feeds/meteoalarm-legacy-atom-{country}/subscribenonenot readthe WebSub subscription page for a feed (push instead of polling)https://feeds.meteoalarm.org
https://api.meteoalarm.org/edr/v1none200 (HTML by default)the landing page of the OGC EDR API: links to the definition, conformance, collections, authentication, FAQ, changeloghttps://api.meteoalarm.org
https://api.meteoalarm.org/edr/v1/apinone200, HTML (a Swagger UI: the page's 'swagger')the API definition, shown in the browser With a client that asks only for JSON (Accept: application/json) this and the other pages answered 406; without the header, HTML.the EDR landing page
https://api.meteoalarm.org/edr/v1/conformancenone200, application/json, 401 bytesconformsTo: OGC API EDR 1.0 core, html, geojson; OGC API Common 1 and 2; WMO WCMP2 core; WIS2 publisherthe EDR landing page
https://api.meteoalarm.org/edr/v1/collectionsnone200, application/json, 3,855 bytesone collection, warnings: "Warnings issued by the MeteoAlarm Members. Only the 'locations' data query is supported." Custom parameters: active (ISO 8601 intervals; its examples start at 2024-01-01), language, awareness_type (14 hazard codes), awareness_levelthe EDR landing page
https://api.meteoalarm.org/edr/v1/collections/warningslisted as publicnot readthe collection's descriptionthe authentication page's list of public endpoints
https://api.meteoalarm.org/edr/v1/collections/warnings/locationsa token: 'Authorization: Bearer' header, or a 'token' query parameter401 {"error":"Unauthorized"}the locations (countries) that can be queriedthe collections document
https://api.meteoalarm.org/edr/v1/collections/warnings/locations/{locationId}a tokennot read (protected)the warnings of one country as GeoJSON, real-time and archived: "The data is updated with a delay of 10 minutes and historical data can be queried" (EDR FAQ). Each feature links its CAP message as XML and JSON. THIS IS WHERE HISTORY IS: a replaced message that the open feed has dropped should still be answerable here by time interval (active).the authentication page and the FAQ
https://api.meteoalarm.org/edr/v1/metadata/warningslisted as publicnot readmetadata of the warnings collection (also a WCMP2 record: /edr/v1/metadata/WCMP2-record-eu-eumetnet-warnings.core.weather.advisories-warnings.json)the authentication page's list of public endpoints
https://api.meteoalarm.org/edr/v1/authenticationnone200, HTMLhow to authenticate, and which endpoints are public and which protectedthe EDR landing page
https://api.meteoalarm.org/edr/v1/faqnone200, HTMLwho the API is for (members and re-distributors directly; the public through MeteoGate), what it holds, the response formatthe EDR landing page
mqtts://api.meteoalarm.org (topics warnings-{countryCode}, warnings-ALL)username api, password a tokennot connectedone GeoJSON Feature per warning as it is issued (a WIS2 notification: bounding box, links to the CAP XML and JSON and to the exact geometry, licence link CC BY 4.0) Without registration: the same warnings are republished on the WMO WIS2 Global Brokers, topic origin/a/wis2/eu-eumetnet-warnings/data/core/weather/advisories-warnings, with the public credentials the page gives. Real time only, no history.https://api.meteoalarm.org/mqtt
https://api.meteoalarm.org/metadata/v1"for re-distributors and integration partners"200, HTML (a Swagger UI)hazard types, awareness levels, regions (with geometries), national services' logos, languageshttps://api.meteoalarm.org
https://api.meteoalarm.org/metadata/v1/stormsnone200, application/json, {"storms":[]}a list of named storms; empty when read, in the middle of Storm Charles Not in a document we read: the public website's own page calls it. Read once.seen: www.meteoalarm.org calls it when a page loads
https://api.meteoalarm.org/hub/v1EUMETNET members only200, HTML (a Swagger UI)where national services submit CAP warnings for validation and distribution. Not for us.https://api.meteoalarm.org

Seen, not read

  • https://visservice.meteoalarm.org/api/v1/ (levels, regions, stream-buffers/live/frames): the service behind the public map; the website calls it with a reference time. Why not: not documented for re-use; the terms keep the site's Content (maps, design, software) for the participants. Left alone until Dinis or MeteoAlarm says otherwise.
  • https://cms-visualization.meteoalarm.org/api/v1/content-pages/{slug}: the text of the website's pages (the terms page is one). Why not: we read the rendered page instead
  • https://devportal.meteogate.eu: MeteoGate, EUMETNET's public data gateway: "Free access to the public", "Get your API key"; it offers the same EDR and the archive. Why not: needs an account and a key: Dinis's decision