Embed CME Tracker on your site
A small live widget with the current space weather — solar wind, Kp index, and inbound CME arrivals — plus an open JSON API if you'd rather render the numbers yourself. Free, no key, no scripts on your page.
1The widget
Pick a look, then copy the snippet. The widget refreshes itself every 2 minutes and always shows how fresh its data is — if our upstream feeds ever hiccup it shows the last good numbers with their timestamp, never an error on your page.
Parameters — numbers widget (/embed)
| Param | Values | Meaning |
|---|---|---|
theme | light (default) · dark | Match your site's background. |
size | full (default) · compact | Full shows Kp, wind, Bz and the next CME arrival; compact is a single row (Kp · wind · Bz). Suggested iframe sizes: 320×180 full, 320×92 compact — the layout is fluid, so nearby sizes work too. |
Parameters — live map widget (/embed-map)
The map is the real tracker renderer in miniature: every CME NASA has catalogued in the last 90 days, expanding from the Sun past the inner planets in real time, with the same drag-model physics as the full site. It's always dark (it's space). Square iframes work best — 320×320 and up.
| Param | Values | Meaning |
|---|---|---|
zoom | 0.35–3 (default 0.82) | Default fits Mars' orbit; 1 matches the full site's framing. |
hide | classes, e.g. S (default) · S,C · empty for all | Hide CME speed classes; slow S-class is hidden by default to keep the small view clean. |
labels / flares | 1 (default) · 0 | Planet/Sun labels and the solar-flare bursts at the Sun. |
interactive | 0 (default) · 1 | By default the map is a click-through link to the tracker (so it never captures your page's scroll); 1 enables drag-pan and scroll-zoom inside the frame. |
2The JSON API
GET https://www.cmetracker.ai/api/current — open CORS, no key. Cached at the edge for 2 minutes (the data itself refreshes from NASA/NOAA every 15). The shape below is a stable contract: fields may be added, but existing ones won't change without a schemaVersion bump.
{
"schemaVersion": 1,
"dataUpdatedAt": "2026-07-03T21:15:04Z", // last successful upstream refresh
"stale": false, // true when that's >35 min ago
"wind": { "speed": 421.3, "density": 4.2, "bz": -1.8 }, // km/s · p/cm³ · nT (null if unavailable)
"kp": { "value": 2.7, "gScale": null }, // gScale "G1".."G5", null below storm level
"latestCme": {
"time": "2026-07-03T04:24:00Z", // most recent CME NASA has catalogued
"speed": 512.0, // km/s
"earthDirected": false,
"arrivalTime": null // ISO time if Earth-directed
},
"nextArrival": { // soonest inbound Earth-directed CME, or null
"cmeTime": "2026-07-02T11:00:00Z",
"arrivalTime": "2026-07-05T03:00:00Z",
"speed": 890.0,
"estKp": 6.2, // model estimate — see /science
"gScale": "G2"
},
"attribution": "Data: NASA DONKI & NOAA SWPC · cmetracker.ai"
}
- Availability: an upstream (NASA/NOAA) outage never produces an error — you get the last good numbers with their real
dataUpdatedAtandstale: true. A non-200 response means there has never been data. - Fair use: it's edge-cached, so poll politely (every 1–5 min is plenty). Please keep the attribution when you display the numbers.
- What the numbers mean: see the guide; how they're computed: the science.
3Notes
- The widget is a static page with one same-origin fetch — no cookies, no analytics, no third-party scripts run on your site.
- Estimated storm levels are model output for education, not operational forecasts — for those, see NOAA SWPC.