Space Data API prototype

API for researchers

Read-only REST access to the data behind the globe: NOAA SWPC storm levels and real-time solar wind, NASA DONKI events, our own storm detection, and CODE's global ionosphere (TEC) maps. Every row names the raw record it came from, so any value can be traced to the exact response we fetched.

Prototype: the views may still change. Data is preliminary where the source says so (column quality_flag).

Access

Base URL
Public key
(send as header apikey; it is public and read-only)
Schema
send Accept-Profile: api
Limits
1,000 rows per request; page with limit and offset. Times are UTC.
Without a key
The same paths also work at https://asterionresearchgroup.com/api/<path>, cached for 5 minutes (raw records for a day). Fine for a browser or a quick look; for heavy use, call the base URL above.

Views

PathWhat
current_conditionsOne row per quantity: Kp, G-level, forecast peak, solar wind speed, density, Bz, Bt, L1-to-Earth delay. Each with its time and provenance.
solar_windLast 24 h, 1-minute: speed, density, Bz at L1, with the arrival time at Earth.
storm_levelsKp with NOAA G-level: the last 30 days observed plus NOAA's forecast.
eventsFlares, CMEs, shocks, high speed streams, storms (NASA DONKI) and our detections, last 30 days.
tec_mapsHourly global TEC maps, last 7 days: 71 × 73 values in 0.1 TECU (see tec_latest for the grid).
tec_latestThe newest TEC map with its grid: 87.5°N to 87.5°S every 2.5°, 180°W to 180°E every 5°, geocentric latitude, 450 km shell.
aurora_reachGeomagnetic pole and the latitude lines aurora typically reaches at the current and forecast storm level.
geomagnetic_gridLines of geomagnetic latitude (0°, ±50°, ±60°, ±70°) around today's dipole pole, as [lon, lat] points.
tec_forecastCODE's predicted TEC maps for the hours after the newest observed map (up to 48 h ahead), the newest issue per hour. A prediction, not an observation: classification = predicted.
gps_elementsThe newest orbital elements (CCSDS OMM, for SGP4) of each operational GPS satellite, from CelesTrak; satellites without elements from the last 7 days are left out.
satellite_dragSpace stations and Planet's small satellites: CelesTrak's elements from the last 3 days, the mean height, and the height change in km a day from their own sets about 3 days apart. Empty until there's history. Not only drag: reboosts and manoeuvres change it too. Also a draft level (0 normal, 1 raised, 2 high): how much thicker the air is than at Kp 1 for 300 to 600 km, a proxy calibrated to a model, not a density.
swarm_elementsThe same for ESA's Swarm A, B and C: CelesTrak's public orbital elements, from the last 3 days. Where they are, not what they measure.
galileo_elementsThe same for CelesTrak's Galileo group, which isn't limited to satellites in service; satellites without elements from the last 14 days are left out.
forecast_skillNOAA's and GFZ's Kp forecasts over 30 days, each on its first published version, against the Kp it forecasts: MAE, RMSE, bias, the same for persistence, a skill score against it and G1+ hits, misses and false alarms, per lead and for all leads (lead_bucket null). scope shared keeps the intervals both forecast at that lead. Method forecast-score-1.
forecast_rollingFor each of the last 30 days: the seven days up to it, per provider, with MAE against persistence. The means are empty under 20 scored values.
solar_wind_responseThe correlation of half-hourly Newell coupling with GFZ's Hp30 at each lag, timed by arrival at Earth and at L1, last 30 days. A correlation over few storms, not a proof.
source_reliabilityScheduled runs and failed runs per active source and UTC day, last 30 days. A failed run is a failed fetch or a changed format.
solar_wind_coverageMinutes of solar wind from NOAA's active spacecraft held per UTC day against those possible, last 30 days. NOAA's active stream skips scattered minutes; other spacecraft aren't used to fill them.
storm_chainsStorms of the last 90 days traced back through NASA DONKI's links: shock at L1, CMEs, flare, Sun-to-L1 transit time, Earth arrival, minimum Bz and Kp peaks (ours and DONKI's).
rpc/gnss_check?lat=&lon="Is it space weather or my receiver?" for a place: a verdict (space_weather, watch, quiet or unknown), its reasons, and the Kp, Hp30, forecast, shock and TEC it used, with raw ids. Rules of thumb, method gnss-check-1.
rpc/gnss_risk_mapA level per cell of CODE's TEC grid (0 low, 1 moderate, 2 high, null no value), for the newest observed map, or the one at map_time within the last 7 days, laid out like tec. From the map alone: vertical L1 delay, gradient and hourly change, with the limits used and raw ids. It can't show scintillation and doesn't count the storm level (rpc/gnss_risk does, at a place). Rules of thumb, method gnss-map-1.
cme_arrivalsCMEs of the last 90 days with our drag-based arrival prediction at Earth and its range (Earth-directed ones), the observed arrival from the storm chains, and the error in hours.
kp_forecast_rangeNOAA's current Kp forecast with an 80 % range from NOAA's own errors at the same lead time over 30 days (each forecast scored as first published).
flare_reliabilityHow reliable NOAA's M- and X-class flare probabilities per region were over 90 days, in 10 % bins: mean forecast vs observed frequency (outcomes from DONKI).
aurora_edgeOur analysis of ESA Swarm: the measured edge of the auroral oval per crossing, last 45 days, about 5 days behind, with the storm level and our reach line. © ESA 2026 · Data provided by the European Space Agency. Non-commercial use; Swarm's own values and raw records aren't served.
rpc/location?lat=&lon=For a place (GPS degrees): geomagnetic latitude, which storm level reaches it, now and forecast, TEC and GPS L1 delay.
storm_libraryThe famous-storms library: October 2024, May 2024, Halloween 2003, March 1989, each with its window, the sources we hold for it, what the record doesn't have, and a default place. Replayed on the Storms page.

Research queries

For time series, the catalogue, and the raw responses behind every value. The functions take a time window and return at most 31 days per call; page through longer periods.

PathWhat
measurement_typesWhat exists: one row per source, type and series, with unit, first and last time, row count and quality flags. Start here.
sourcesWhere each value comes from: provider, feed, endpoint, reference frame, the last successful fetch and the result of the last run.
rpc/measurements?type=&start=&stop=One measurement type in a window. Optional: source_id, series, versions (latest, the default, or all for every stored revision), bucket.
rpc/derived_values?type=&start=&stop=Derived solar wind physics (flow pressure, electric field, Newell coupling and more; see measurement_types, source derived). Optional: at_earth=true (re-timed to the arrival at Earth), bucket.
rpc/tec_series?lat=&lon=&start=&stop=TEC at a place (GPS degrees) for every hourly map in the window, with the GPS L1 delay in metres. Observed maps only.
rpc/raw_record?raw_id=The response we stored for a raw record, exactly as stored, with its URL, fetch time and SHA-256 hash. Payloads over 1 MB come without their body, with a note.
rpc/events_between?start=&stop=NASA DONKI's events (flares, CMEs, shocks, streams, storms) starting in any window, for example a storm of the library; events covers the last 30 days only.
rpc/place_during?lat=&lon=&start=&stop=A place during a window: every 3-hour Kp interval (GFZ's Kp, definitive or nowcast) with its G-level, the place's geomagnetic latitude at the time, the level that reaches it, and whether this one did.
rpc/aurora_during?start=&stop=The aurora reach line for every 3-hour Kp interval in a window (GFZ's Kp): G-level, the geomagnetic latitude it reaches, the pole of that time, and both lines (none below G1). Our rule from Kp, not an observed aurora.
rpc/tec_maps_between?start=&stop=The whole TEC maps of a past window, at most 1 day per call, oldest first, in 0.1 TECU with their raw record. Observed maps only; the grid is in tec_latest.

Rules

Examples

curl


    

Python


    

Filters follow PostgREST: ?measurement_type=eq.proton_speed, ?observed_at_l1=gte.2026-10-21T00:00Z, ?order=start_time.desc, ?select=col1,col2. Add Accept: text/csv for CSV.

Put it on your site

A small widget with the current Kp and storm level, from NOAA. It uses no cookies and no tracking, loads when it scrolls into view, and refreshes every 30 minutes while it can be seen. It isn't a warning service.

HAPI

/hapi is a read-only HAPI 3.1 server, the standard for heliophysics time series, so tools such as hapiclient, Autoplot and SpacePy can read our data directly. Start with /hapi/catalog. It has solar wind and the magnetic field at L1, Kp, Hp30, Hp60, and GOES X-rays and protons, with the newest version of each value.

Sources and credit

NOAA Space Weather Prediction Center (real-time solar wind, Kp and forecast), NASA CCMC DONKI (events), CODE, Astronomical Institute of the University of Bern (global ionosphere maps), GFZ Potsdam (Kp, Hp30 and Hp60, CC BY 4.0), NASA/JPL (close approaches and fireballs), NASA SPDF (OMNI, for the storm library), IGRF-14 (IAGA) for geomagnetic coordinates, CelesTrak (GPS orbital elements). Please credit the original source along with the Space Data API.