Die Werte des Funkwetters gibt es auch maschinenlesbar, für die eigene Webseite, ein Shack-Display oder ein Logprogramm. Eine Adresse, JSON, ohne Anmeldung und ohne Schlüssel. Wer nur anzeigen will, nimmt den fertigen Funkwetter-Banner zum Einbinden.
GET https://www.12db.de/api/v1/funkwetterWas die Antwort enthält
- Messwerte: Solar Flux (SFI), Sonnenfleckenzahl des Tages, Kp, A-Index, Röntgenklasse, Geschwindigkeit, Dichte und Bz des Sonnenwinds. Die Messwerte stammen vom NOAA Space Weather Prediction Center.
- Einordnung: dieselben Wörter wie auf der Funkwetter-Seite, etwa "Ruhig" oder "Sturm". Flux und Sonnenflecken bekommen bewusst kein Urteil, weil hoher Flux die oberen Bänder hebt und die unteren dämpft.
- DX-Prognose: für vier Bandpaare die Zahl der DX-Regionen außerhalb Europas, für die die eigene VOACAP-Rechnung in der aktuellen UTC-Stunde mindestens 50 % Zuverlässigkeit ergibt. Annahmen: Standort JN49, 100 W, Dipol, SSB. Regionen sind Nordamerika, Südamerika, Afrika, Asien und Ozeanien.
- Lagebericht: der Text der Funkwetter-Seite in drei Absätzen, gemessen, Bedingungen, erwartet.
- Quelle: Name, Link und Nutzungsbedingung, damit sie beim Anzeigen gleich zur Hand sind.
Fehlt ein Messwert, steht dort null. Ein fehlender Wert wird nie durch einen geschätzten ersetzt.
Beispielantwort
{
"version": 1,
"stand": "2026-11-04T14:10Z",
"messwerte": {
"sfi": 100, "sonnenflecken": 43, "kp": 2, "a_index": 5,
"roentgen": "B6.3", "sonnenwind_kms": 435,
"dichte_pcm3": null, "bz_nt": 1.0
},
"einordnung": {
"kp": "Ruhig", "a_index": "Ruhig", "roentgen": "Ruhig",
"sonnenwind": "Erhöht", "bz": "Neutral"
},
"dx_prognose": {
"stunde_utc": "2026-11-04T14:00Z",
"standort": "JN49",
"annahmen": {"modus": "SSB", "leistung_w": 100, "antenne": "Dipol"},
"schwelle": "mindestens 50 % modellierte Zuverlässigkeit (VOACAP, Monatsmedian)",
"regionen": {"NA": "Nordamerika", "SA": "Südamerika", "AF": "Afrika",
"AS": "Asien", "OC": "Ozeanien"},
"bandpaare": [
{"baender": ["80m", "40m"], "guenstige_regionen": 0, "regionen": []},
{"baender": ["30m", "20m"], "guenstige_regionen": 1, "regionen": ["AF"]},
{"baender": ["17m", "15m"], "guenstige_regionen": 1, "regionen": ["AF"]},
{"baender": ["12m", "10m"], "guenstige_regionen": 1, "regionen": ["AS"]}
]
},
"lagebericht": ["Der solare Fluxindex liegt bei 100 Einheiten, ..."],
"quelle": {
"name": "12db Funkwetter",
"url": "https://www.12db.de/amateurfunk/funkwetter/",
"nutzung": "Kostenlos bei Quellenangabe \"12db Funkwetter\" mit Link ...",
"messwerte": "NOAA Space Weather Prediction Center",
"prognose": "Eigene VOACAP-Rechnung von 12db",
"dokumentation": "https://www.12db.de/amateurfunk/funkwetter-api/"
}
}stand ist die Zeit der letzten Aktualisierung der Messwerte in UTC. Die einzelnen Werte misst NOAA zu unterschiedlichen Zeiten, die Tageswerte wie Flux und Sonnenflecken gelten für den ganzen Tag. stunde_utc ist die laufende UTC-Stunde beim Abruf, für sie gilt die DX-Prognose. Bei einem Abruf um 14:25 UTC steht dort also 14:00, auch wenn die Messwerte von 14:10 stammen. guenstige_regionen zählt Regionen, keine Verbindungsqualität. Eine Region zählt, wenn einer ihrer Zielpunkte die Schwelle erreicht. 0 heißt nur, dass unter den Annahmen keine Region die Schwelle erreicht, nicht, dass das Band geschlossen ist. Fehlen die Modelldaten, steht dort null.
Auf der eigenen Seite anzeigen
Ein kleines Beispiel, das Flux, Kp und die Quelle als Text ausgibt. Fehlende Werte erscheinen als "-", ein fehlgeschlagener Abruf als Hinweis:
<div id="funkwetter"></div>
<script>
fetch('https://www.12db.de/api/v1/funkwetter')
.then(r => {
if (!r.ok) throw new Error('API nicht erreichbar');
return r.json();
})
.then(d => {
const el = document.getElementById('funkwetter');
const wert = v => v == null ? '-' : v;
el.textContent = `SFI ${wert(d.messwerte.sfi)} · Kp ${wert(d.messwerte.kp)} · `;
const a = document.createElement('a');
a.href = d.quelle.url;
a.textContent = d.quelle.name;
el.appendChild(a);
})
.catch(() => {
document.getElementById('funkwetter').textContent = 'Funkwetter derzeit nicht verfügbar';
});
</script>Ohne eigenen Code geht es mit dem fertigen Funkwetter-Banner. Er zeigt Messwerte und DX-Prognose als Bild in Hell oder Dunkel, wird stündlich neu erzeugt und verlinkt die Quelle von selbst.
Nutzungsbedingungen
Die Nutzung der 12db-Auswertungen und des Lageberichts über diese Schnittstelle ist kostenlos, auch für Vereinsseiten und Programme, sofern bei öffentlicher Darstellung die Quelle "12db Funkwetter" mit einem Link auf https://www.12db.de/amateurfunk/funkwetter/ genannt wird. Die ursprünglichen NOAA/SWPC-Messwerte sind unabhängig davon direkt bei NOAA frei verfügbar.
- Aktualisierung: stündlich. Häufiger abzufragen bringt nichts, alle 15 bis 60 Minuten reicht. Die Antwort trägt einen
ETag, eine Abfrage mitIf-None-Matchbekommt bei gleichem Stand nur304. - Grenzen: 60 Abfragen je Minute und 600 je Stunde je Anschluss. Darüber antwortet die API mit
429undRetry-After. - Browser: Abfragen direkt aus dem Browser fremder Seiten sind erlaubt (CORS).
- Versionen: Felder kommen hinzu, aber keines ändert unter
/api/v1/seine Bedeutung.
Die Prognose ist ein Modell für den Monatsmedian. Sie sagt, was im Mittel zu erwarten ist, nicht was in dieser Stunde sicher geht. Was gerade tatsächlich gemeldet wird, zeigt die Funkwetter-Seite unter den aktuellen Spots.
