SaaS Ranking

Bulk download

Every result we hold, in one file. Rebuilt once per measurement run, not once per request.

Snapshot r83.103592, 103,592 results, written 2026-09-13. Licence CC BY 4.0.

FileRowsSizeSHA-256
results.ndjson.gz103,5920.8 MB9e781af740b3383f…
results.csv.gz103,5920.7 MB582202ea64759eb5…
vendors.ndjson.gz8,6330.2 MB19eccdac6ed9e9f1…

The checksums are in manifest.json, together with the snapshot identifier. Two downloads with the same identifier are the same data.

What a row says

One row per vendor and criterion: the vendor's domain, the criterion, one of three results, the address we read it at, and the date we checked.

{"domain":"example.com","criterion":"dpa","result":"found",
 "source":"https://example.com/dpa","measured_on":"2026-09-11"}

not_found means we did not find the document at the addresses we checked on that date. It is a statement about our measurement, never about the vendor. not_measured means we reached no address at all, and it falls out of both the numerator and the denominator of the score. The same three words are used by the API, and they come from the same constant.

Why a file and not an endpoint

Generating this on every request would serialise around 90 MB on a two-core machine that also serves everything else here. As a file it is written once per measurement run and handed out by the web server. If you need a single vendor or a single category, the API answers that in milliseconds.

Licence CC BY 4.0: use it, publish it, build on it – name us as the source. Developers · All data pages