Compatibility data API
Published
Everything the compatibility explorer renders is served as JSON from the same URLs
the pages live at. No key, no rate limit, no signup — Access-Control-Allow-Origin: *,
so you can call it straight from a browser.
If you are building a build-target checker, a linter, an editor plugin, a dashboard, or an answer engine that needs to say “can I use X in a PWA”, this is the entry point.
Start here
Section titled “Start here”curl https://openpwa.net/compatibility/index.jsonThe index lists every feature with its category, provenance, and a data_url:
{ "name": "OpenPWA compatibility dataset", "licence": "CC BY 4.0", "attribution": "OpenPWA — https://openpwa.net", "count": 38, "features": [ { "slug": "web-share", "name": "Web Share API", "category": "Capabilities", "confidence": "high", "verified_at": "2026-07-14", "support_rows": 4, "data_url": "https://openpwa.net/compatibility/web-share.json", "page_url": "https://openpwa.net/compatibility/web-share/" } ]}page_url is null when a dataset has been published but its prose entry has not,
so following it never lands on a 404.
Endpoints
Section titled “Endpoints”| Endpoint | What it returns |
|---|---|
/compatibility/index.json |
Every feature: category, provenance, data_url, page_url |
/compatibility/{slug}.json |
One feature: support rows, ecosystem-policy rows, provenance |
/compatibility/by-country.json |
Country-weighted effective reach per feature, per region |
A single feature
Section titled “A single feature”curl https://openpwa.net/compatibility/web-nfc.jsonEach record carries the spec and MDN URLs, a confidence grade, and the verified_at
date the row was last checked — so you can decide for yourself how much to trust a
given cell rather than taking a green tick on faith. confidence is never typed in by
an editor: it is computed from each row’s source (high for a row generated from a
browser-compat-data entry, medium for a vendor document or release note, low for
anything else), and a feature’s grade is its weakest row. Every row that cites a
browser-compat-data file is also cross-checked against the live BCD file on each
deploy; a row that disagrees with the source it cites, or cites a path that no longer
resolves, blocks the deploy.
biz_compat is the part general references do not carry: whether ad networks, payment
providers, and app stores actually accept a capability in production. Sponsored rows are
flagged with sponsored: true and never change an editorial support value.
Country-weighted reach
Section titled “Country-weighted reach”curl https://openpwa.net/compatibility/by-country.jsonreach is computed at build time from support × real browser market share, never
hand-stored. Each region carries its market-share source, source_url, and as_of
date, and the payload states the derivation method so you can reproduce or reject it.
Treat it as approximate — it is a weighted estimate, not a measurement.
Using it in a page
Section titled “Using it in a page”const { features } = await fetch( 'https://openpwa.net/compatibility/index.json',).then((r) => r.json());
const webShare = await fetch( features.find((f) => f.slug === 'web-share').data_url,).then((r) => r.json());
console.log(webShare.support, webShare.verified_at);Licence
Section titled “Licence”The dataset is CC BY 4.0. Use it commercially, modify it, redistribute it — the one condition is attribution:
Data: <a href="https://openpwa.net">OpenPWA</a>,<a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>Every JSON payload carries licence, licence_url, attribution, and
attribution_html, so a consumer can render the credit without hard-coding it.
Stability
Section titled “Stability”Feature slugs are stable: a slug is the dataset’s identity, and the build fails if one
stops matching its source file. Fields are added, not removed or repurposed. Data is
rebuilt on publish, so verified_at on a row tells you when a human last checked that
row — not when the file was regenerated.
Found a wrong cell? Tell us — a correction with a source is the most useful thing you can send.
← Back to the Compatibility explorer.