Skip to content

Data API

The benchmark results on this site are also published as static JSON at stable URLs, so you can retrieve the full dataset programmatically instead of scraping the figures and tables. The files are regenerated from the committed records on every build, so the API always matches what the pages show.

Everything lives under a versioned base URL:

https://leuven-gravity-institute.github.io/gwmock-benchmark/data/v1/

Endpoints

Path Contents
index.json Manifest: API/schema version, build timestamp, total record count, and per-package/per-suite counts with links to every other file. Start here.
records.json Every record across all packages and suites in a single response.
<package>/<suite>.json One package + suite, e.g. signal/performance.json and signal/consistency.json.
schema/record-v1.json JSON Schema (draft 2020-12) describing a single record.

records.json and the per-suite files share one envelope:

{
    "api_version": "v1",
    "schema_version": 1,
    "generated": "2026-06-21T00:00:00+00:00",
    "count": 19,
    "records": [/* ... */]
}

Record shape

Each entry in records is a committed benchmark record — a small, metrics-only document of configuration (run settings), metrics (measured numbers), and provenance (code versions + hardware, no hostname). See schema/record-v1.json for the authoritative definition and the data layout notes for how records are produced.

Examples

Fetch the manifest, then the full dataset:

curl -s https://leuven-gravity-institute.github.io/gwmock-benchmark/data/v1/index.json
curl -s https://leuven-gravity-institute.github.io/gwmock-benchmark/data/v1/records.json

Load every record in Python (standard library only):

import json
import urllib.request

BASE = "https://leuven-gravity-institute.github.io/gwmock-benchmark/data/v1/"

with urllib.request.urlopen(BASE + "records.json") as response:
    payload = json.load(response)

for record in payload["records"]:
    print(record["suite"], record["label"], record["metrics"])

Stability

The v1 base is additive — new records, packages, suites, and fields may appear, but existing fields keep their meaning. A breaking change to the layout would be published under a new version (data/v2/) so existing consumers keep working.