Open data

MyGearCheck open data API

Three JSON endpoints. No key, no registration, no rate limit worth mentioning, CORS open to everyone.

A hardware test cannot run on a server: every test on this site reads a browser API on your own device, so there is nothing meaningful to expose as a remote endpoint and we are not going to invent one. What this API does serve is the reference data behind the tests, in the form a program wants it: the full key code table, the standard gamepad mapping, and an index of the tests themselves.

Endpoints

Every endpoint, what it returns and where it is documented
EndpointReturnsHuman page
/api/v1/key-codesThe complete key code reference: 107 keys with event.key, event.code, the legacy keyCode and a note wherever a value is not consistent across browsers./data/key-codes
/api/v1/gamepad-mappingsThe W3C standard gamepad mapping: 17 button indexes and four axes, each with the specification's positional description and the label printed on Xbox, DualSense and Switch Pro controllers./data/gamepad-mappings
/api/v1/testsA machine-readable index of all 11 tests: name, URL, embed URL, category, what it checks and which browser API it uses./tests

Example response

Every response carries the attribution string as its first field, so it survives being copied into somebody else's codebase.

GET https://mygearcheck.com/api/v1/gamepad-mappings

{
  "_attribution": "Data from https://mygearcheck.com/ (CC BY 4.0). Please link back when you use it.",
  "dataset": "gamepad-mappings",
  "version": "1.0.0",
  "license": "CC BY 4.0",
  "documentation": "https://mygearcheck.com/data/gamepad-mappings",
  "source": {
    "spec": "https://w3c.github.io/gamepad/",
    "reviewed": "2026-08-05"
  },
  "appliesWhen": "navigator.getGamepads() reports mapping === \"standard\"",
  "buttons": [
    {
      "index": 0,
      "position": "Bottom button in right cluster",
      "xbox": "A",
      "dualsense": "Cross",
      "switchPro": "B"
    }
  ]
}

Licence and attribution

Everything here is published under CC BY 4.0. Use it commercially, ship it in a product, put it in your documentation. The one condition is attribution, and a link back to https://mygearcheck.com satisfies it. A link is also genuinely useful to your readers, because it is where a correction would appear.

Versioning

The path carries the major version. Within v1 we will add fields but not remove or repurpose them, so parsing by field name stays safe. A breaking change gets a new path rather than a silent edit. Each dataset also carries its own version number and changelog on its documentation page.

Caching and limits

These responses are generated at build time and served as static files from a CDN, so there is no server to overload and no rate limit to hit under normal use. Please cache on your side anyway rather than fetching per page view: the data changes at most a few times a year.

What is deliberately not here

Something wrong?

Tell us. Corrections are made, the version number moves, and the change is recorded in the changelog on the dataset page.