BYTETOOLS

W3C API

Query W3C for specifications, working groups, editors and publication history as HAL+JSON. No API key. Verified example plus a guide to following HAL links.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the W3C API?

The W3C publishes an official data API. `GET https://api.w3.org/specifications?items=2` returns paginated specification records as HAL+JSON, with `_links` pointing at each specification's own resource. Groups, series, translations and ecosystems are available on the same host, with no API key required.

This is the authoritative source for the state of web standards: which specifications exist, which working group owns each one, what maturity level it has reached and how its versions relate. If you have ever wanted to answer 'is this a Recommendation yet' programmatically rather than by reading a status box, this is the API for it.

It speaks HAL, which is a specific discipline rather than a decoration. A collection response gives you `page`, `limit`, `pages` and `total`, then a `_links` object where the actual items live as `{href, title}` pairs. You do not get full objects in a listing: you follow each `href` to fetch the record. Budget for the extra round trips, and use the `first`, `next` and `last` links for paging instead of computing offsets. The content type is `application/hal+json`, which some strict clients will not treat as JSON unless told to.

Quick facts

Base URL
https://api.w3.org
Authentication
Public read endpoints require no key. Some administrative endpoints are restricted to W3C members, but nothing documented here needs credentials.
Rate limit
Not published. The dataset changes slowly, so a daily cache is more than enough.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the W3C API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. List W3C specifications with paging

GET https://api.w3.org/specifications?items=2

curl
curl 'https://api.w3.org/specifications?items=2'
JavaScript (fetch)
const res = await fetch("https://api.w3.org/specifications?items=2");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.w3.org/specifications?items=2", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "page": 1,
  "limit": 2,
  "pages": 856,
  "total": 1711,
  "_links": {
    "specifications": [
      {
        "href": "https://api.w3.org/specifications/2dcontext",
        "title": "HTML Canvas 2D Context"
      },
      {
        "href": "https://api.w3.org/specifications/2dcontext2",
        "title": "HTML Canvas 2D Context, Level 2"
      }
    ],
    "self": {
      "href": "https://api.w3.org/specifications?page=1&items=2"
    },
    "first": {
      "href": "https://api.w3.org/specifications?page=1&items=2"
    },
    "last": {
      "href": "https://api.w3.org/specifications?page=856&items=2"
    },
    "next": {
      "href": "https://api.w3.org/specifications?page=2&items=2"
    }
  }
}

Parameters

ParameterTypeRequiredDescription
itemsintegerOptionalItems per page. The default is small, so raise it when walking the full list. 2
pageintegerOptionalOne-based page number. Prefer following the `next` link. 2
/specifications/{shortname}pathOptionalOne specification by shortname, such as `webrtc` or `css-flexbox-1`. webrtc
/groupspathOptionalWorking groups, interest groups and community groups. /groups
/specifications/{shortname}/versionspathOptionalPublication history for a specification, from Working Draft to Recommendation. webrtc/versions

Response fields

page / limit / pages / totalinteger
Paging state. `total` is the full count across all pages, which listings do not otherwise reveal.
_links.specificationsarray
The items themselves, as `{href, title}` pairs. This is a HAL listing, so you must follow each `href` to get the record.
_links.self / first / last / nextobject
Navigation links. Follow `next` until it is absent rather than incrementing `page` yourself.
(specification record) shortnamestring
The stable identifier used throughout W3C, such as `css-flexbox-1`. This is the key you cache against.
(specification record) titlestring
Human-readable specification title as published.
(content type)header
`application/hal+json`. Some HTTP clients will not auto-parse this as JSON, so parse the body explicitly.

What you can build with the W3C API

  • Build a dashboard tracking which specifications have reached Recommendation
  • Look up which working group owns a given specification
  • Generate a reference list of standards for documentation or a compliance matrix
  • Monitor a specification's publication history for new drafts
  • Cross-reference browser support data against official specification status

Common errors and how to fix them

Only links, no data

HAL listings return references, not full objects.

Fix: Follow each `_links.specifications[].href` to fetch the individual record. Batch these requests, because a full walk is thousands of calls.

Client will not parse the response

The content type is `application/hal+json`, not `application/json`.

Fix: Call your JSON parser explicitly on the body rather than relying on content-type sniffing.

404 on a shortname

Shortnames are versioned, so the unversioned form often does not exist.

Fix: Try the versioned form, such as `css-flexbox-1` rather than `css-flexbox`, or search the listing first.

W3C API — frequently asked questions

Does the W3C API need a key?

No. The public read endpoints covering specifications, groups, series and translations are open. Only some member-facing administrative endpoints are restricted.

What is HAL+JSON and why does it matter here?

It is a convention where responses carry a `_links` object describing related resources. In listings the items are links rather than embedded objects, so plan for a follow-up request per item.

How do I find a specification's current status?

Fetch the specification record by shortname and then its `versions` collection, which records each publication from Working Draft through to Recommendation.

Can I get the specification text itself?

No. The API returns metadata and links. The prose lives on w3.org at the URL referenced by each version record.

Tools that pair with this API

W3C API is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.