PSK Reporter and WSPR spot archive

A continuous, deduplicated archive of amateur radio reception reports, published as Parquet you can query straight off the web. No account, no download, no API key.

Updated as each day is sealed, about two hours after it ends.

Try it

With DuckDB, which reads only the byte ranges it needs:

SELECT band, count(*) AS spots, median(snr_db) AS snr
FROM read_parquet('https://archive.spots.radio/spots/daily/day=2026-08-12/spots.parquet')
WHERE transmit_start BETWEEN '2026-08-12 17:00' AND '2026-08-12 19:00'
GROUP BY 1 ORDER BY spots DESC;

That is the two hours of the 12 August 2026 partial solar eclipse, and it returns in about a second over an ordinary connection. A single-band query on a quiet band reads a few per cent of the file.

Where things are

PathWhat
spots/daily/day=<date>/spots.parquetPSK Reporter spots, one file per UTC day
wspr/daily/day=<date>/spots.parquetWSPR spots
integrity/pskr/day=<date>/day.jsonhow complete that day is, measured
manifest/pskr.jsonevery sealed day
raw/merged/the same spots as received, byte for byte, recent days

Keys are deterministic, so a URL can be built from a date. There is no special prefix for notable events: the eclipse is at day=2026-08-12 like any other day.

Before you draw conclusions

Four properties of this data will mislead you if you do not know them, and they are all in the README: a spot is not a decode, reports arrive late with a long tail, source_topic is not always a partition, and not every day comes from the same upstream feed. Each day also publishes its own completeness accounting rather than asking you to assume it.