BRDMap.de
// SEKTION · API & DATEN · STATIC DOCUMENT

API & Daten-Endpoints

BRDMap stellt seine Aggregat-Daten in mehreren maschinenlesbaren Formaten zur Verfügung. Frei nutzbar, kein Authentication-Token, kein Sign-up. Fair-Use: bitte nicht öfter als alle ~10 Minuten pollen, die Quelle wird alle 20 Minuten neu gebaut (synchron zum Backend-Polling).

Lizenz-Hinweis: Die Aufbereitung (Schema, Geocodes, Kategorien) ist privat ohne Lizenzanspruch. Original-Pressemeldungen unterliegen der Lizenz der jeweiligen Behörde (i. d. R. § 5 Abs. 2 UrhG, gemeinfrei für amtliche Werke). Bei Weiterverwendung bitte mit Domain brdmap.de attribuieren und auf die Originalquelle (Feld external_url bzw. source_url) verlinken.

JSON-Snapshot — alle aktiven Events

Stündlich aus der Live-DB neu generiert (statischer Snapshot). Enthält alle Events des 30-Tage-Fensters mit allen Feldern (Geocodes, Kategorie, Severity, Lifecycle-Status). Für Realtime-Daten siehe /events weiter unten.

Endpoint: https://brdmap.de/events.json
Format: JSON-Array
Update: Static-Rebuild alle 20 Min, synchron zum Backend-Polling
Beispiel: /events.json (~1-2 MB unkomprimiert)

Live-Endpoint — aktuelle Events aus DB

Direkter Zugriff auf den FastAPI-Worker. Liefert die gleichen Daten wie events.json, aber realtime — ohne Wartezeit auf den nächsten Stunden-Build. Wird vom Live-Update-Banner der Karte verwendet.

Endpoint: https://brdmap.de/events
Query-Parameter (alle optional):
  ?hours=N — Zeitfenster in Stunden, Default 720 (= 30 Tage)
  ?limit=N — max Events, Default 1000
  ?severity_min=N — nur Events mit Severity ≥ N (1–5)
  ?category=KEY oder ?category=KEY1,KEY2,... — CSV der Kategorie-Codes (BRAND_FEUER, UNFALL_VERKEHR, KRIMINALITAET, POLIZEIEINSATZ, WETTER_NATUR, KATASTROPHE, DEMO_STREIK, POLITIK, GROSSEVENT)
Format: JSON-Array

Beispiel: ?severity_min=4&hours=24 liefert nur schwere Vorfälle der letzten 24 Stunden (Severity ≥ 4, also NINA-Warnungen, Großbrände, schwere Verkehrsunfälle etc.), ?category=BRAND_FEUER,UNFALL_VERKEHR&hours=168 nur Brände und Unfälle der letzten Woche.

Hauptseiten-Permalinks

Die Live-Karte unter brdmap.de/ persistiert ihren Filter-Status in der URL — jeder Filter-Klick aktualisiert die Adresse, jeder Permalink stellt den Filter-State beim Empfänger wieder her. Damit lassen sich gezielte Lagen mit ein-, zwei- oder dreidimensionalen Filtern teilen, ohne ein eigenes Dashboard bauen zu müssen.

Filter-Parameter auf https://brdmap.de/:
  ?q=... — Stichwort-Suche (Token-AND-Match auf Title, Summary, Stadt, Kategorie, Quelle)
  ?state=BY,NW,HE — CSV der Bundesland-Codes
  ?cat=BRAND_FEUER,UNFALL_VERKEHR — CSV der Kategorien
  ?hours=24|48|168|720|-1 — Zeitraum-Pill (24h, 48h, 7T, 30T, alle); fehlt = Default 48h
  ?sev=4 — Mindest-Severity (typisch 4 für den „Schwer ≥4"-Schnellfilter)
  ?missing=1 — nur Vermisstensuchen (Title oder Summary enthält „vermisst" / „Suchplakat")
  ?from=2026-04-22&to=2026-04-28 — tagesgenaue Range aus dem Histogramm-Slider; überschreibt hours

Beispiele: /?state=BY&sev=4 zeigt schwere Lagen in Bayern. /?missing=1 filtert auf aktive Vermisstensuchen bundesweit. /?cat=BRAND_FEUER&hours=24 zeigt nur Brände der letzten 24 Stunden. /?from=2026-04-22&to=2026-04-28&cat=UNFALL_VERKEHR filtert auf Verkehrsunfälle in einer konkreten Woche. Eigene Polygon-Regionen („Eigener Bereich" via Pinsel-Tool) werden bewusst nicht in der URL persistiert — sie bleiben ephemer im Browser.

RSS-Feeds

Klassisches Pull-Format für Feed-Reader, IFTTT, Discord-Bots, Mastodon-Bots oder Smart-Home-Notifications.

Bundesweit: /feed.xml (100 aktuellste)
Pro Bundesland: /bundesland/{slug}.rss — 16 Feeds (z. B. bayern.rss)
Pro Kategorie: /kategorie/{slug}.rss — 9 Feeds (z. B. brand.rss)
Slugs: baden-wuerttemberg, bayern, berlin, brandenburg, bremen, hamburg, hessen, mecklenburg-vorpommern, niedersachsen, nordrhein-westfalen, rheinland-pfalz, saarland, sachsen, sachsen-anhalt, schleswig-holstein, thueringen
    Kategorien: brand, unfall, kriminalitaet, polizei, wetter, katastrophe, demo, politik, grossevent

Sitemap

Endpoint: /sitemap.xml
Mit Google-News-Namespace (news:news) für Events <48 h.

Per-Event-Markdown

Jede News-Detail-Seite hat zusätzlich eine Markdown-Variante mit YAML-Frontmatter — speziell für LLM-Retrieval-Pipelines, Discord-Bots oder saubere Plain-Text-Verarbeitung.

HTML: https://brdmap.de/news/{slug}.html
Markdown: https://brdmap.de/news/{slug}.md (gleicher Slug, einfach .html.md)
Frontmatter-Felder: title, slug, canonical_url, category, bundesland, ort, occurred_at, expires_at, cancelled_at, severity, latitude, longitude, source, source_url, tags

LLM-Discovery

Folgt der llmstxt.org-Konvention. AI-Crawler (Claude, ChatGPT, Perplexity, Gemini, …) finden hier eine Markdown-Zusammenfassung der Site sowie eine Voll-Liste der aktiven Schlagzeilen.

Kompakt: /llms.txt (Site-Beschreibung, Datenquellen, Hub-Links)
Voll-Index: /llms-full.txt (aktuelle Schlagzeilen pro Kategorie und Bundesland, mit jedem Static-Rebuild neu)

robots.txt — AI-Crawler-Policy

BRDMap erlaubt explizit alle gängigen AI-Crawler (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, Applebot-Extended, Meta-ExternalAgent, MistralAI-User, …) zusätzlich zur Wildcard-Regel. Ziel: möglichst breite Verfügbarkeit der Daten in Antwort-Engines.

Endpoint: /robots.txt

Beispiel: Event-Objekt-Schema

{
  "id": "a35b2649-881d-4eb0-bcd1-0f4264f9cd2f",
  "title_de": "Einbruch in Wohnhaus — Kripo sucht Zeugen",
  "summary_de": "Unbekannte Täter sind am Samstag …",
  "category": "KRIMINALITAET",
  "category_slug": "kriminalitaet",
  "category_label": "Kriminalität",
  "geo_state": "BY",
  "state_name": "Bayern",
  "state_slug": "bayern",
  "geo_city": "Aßling",
  "lat": 47.99,
  "lon": 12.00,
  "geo_confidence": 0.41,
  "severity": 2,
  "occurred_at": "2026-05-04T14:56:00+00:00",
  "ingested_at": "2026-05-04T15:04:01.223481+00:00",
  "expires_at": null,
  "cancelled_at": null,
  "external_url": "https://www.polizei.bayern.de/…",
  "source_name": "polizei_bayern",
  "source_display": "Polizei Bayern (alle Praesidien)",
  "sub_tags": ["Einbruch", "Einfamilienhaus", "Zeugensuche"],
  "news_slug": "20260504-aling-einbruch-…-38ebe8e4"
}

Severity-Skala

Hinweis: Die Klassifikation läuft automatisch über ein Sprachmodell — es gibt Grauzonen, vor allem zwischen SEV 2 und SEV 3. Der UI-Filter „?sev=4" auf der Karte zeigt zuverlässig nur Großschadenslagen.

Embed-Widget

Eine kompakte iframe-fähige Mini-View der Live-Lage zum Einbinden in externe Seiten (lokale Nachrichten, Behörden-Portale, Blogs, Dashboards). Ohne Tracking, ohne Cookies, ohne externe CDNs — DSGVO sauber per Definition.

<iframe src="https://brdmap.de/embed.html?state=BY&hours=24"
        loading="lazy" frameborder="0"
        width="100%" height="420"
        style="border:0; max-width:480px"
        title="Live-Lage Bayern · BRDmap"></iframe>

URL-Parameter (alle optional):

Beispiele: ?state=BY&sev=4 zeigt nur schwere Lagen in Bayern. ?cat=BRAND_FEUER&hours=72&limit=10 zeigt die zehn jüngsten Brände der letzten drei Tage. ?state=NW&theme=light ist die light-Theme- Variante für NRW.

Der Footer-Link „Vollständige Karte" führt mit den gleichen Filtern auf brdmap.de — der Embed ist also auch ein Discovery-Funnel zur Hauptseite. Live-Polling alle 60 s über /events, pausiert wenn das Iframe nicht sichtbar ist (IntersectionObserver). Die Embed-Page selbst ist noindex,nofollow — nur Bestandteil des einbindenden Hosts.

Kontakt

Fragen, Bug-Reports, Lizenz-Klärungen: siehe Impressum.

Stand: 2026-05-06