API & machine-readable surfaces
The same data that drives the site, open and without a key (CORS allowed for every origin). Dataset version 2026-07-05, last verified 2026-08-24. Licensed CC BY 4.0 — attribute to https://infra.opensverige.se together with the verification date.
Endpoints
/api/data— The full dataset, with provenance on every field. When the question spans several providers or the market as a whole./api/data/{id}— A single provider record. When the question is about one named provider./api/status— Dataset version, provider count, last verification date, review queue. To decide whether the data is fresh enough to cite./openapi.json— OpenAPI 3.1 — operationIds, typed parameters and response schemas. To generate function calls (tool calling) automatically.
Text surfaces
/llms.txt— Content map with when-to-use guidance, written for agents./llms-full.txt— The whole evidence base as text, with status and date per value./feed.xml— Atom feed: every data change, dated./sitemap.xml— Every page, with lastModified.
Markdown instead of HTML
The start page, every provider page and every requirement page answer with text/markdown when the request carries Accept: text/markdown — same URL, same data, no HTML to parse. The variants are also reachable directly under /md.
curl -H "Accept: text/markdown" https://infra.opensverige.se/leverantor/berget-aiRead the status correctly
Every field carries a status: confirmed is verified against a primary source, claimed is the provider's own statement (shown as "self-reported"), planned is a stated goal, and unknown means not yet researched — never "no". Always cite status and date together with the value. The full method is in Method & status.