Skip to main content

No key · no account · no charge

Read and reuse this data by computer — free.

Datasets marked open can be read, downloaded, mirrored and built upon without an account, under the listed licences. The API is read-only and works from any website. Every response carries its sources, licences, dates and coverage limits.

https://api.taxsorted.io/v1/politics/uk

The short version

  • Everything marked open is free to read — no key, no account.
  • Most record downloads are still closed, waiting for a human privacy review.
  • Start at the catalogue: it says what is open right now.

Honest status: most record downloads are switched off. Automated checks have run, but no human has approved a release yet. Records stay closed until the project's maintainer approves the privacy boundary, reviews the published list of what each dataset holds, and a confidential safety-contact route is live. This page describes the API as built; the public address may not answer until it is deployed. Once deployed, the catalogue, rights statement and dataset schemas stay readable even while records are closed.

After this API release is deployed

Check what is open, in 30 seconds

curl -fsS \
  'https://api.taxsorted.io/v1/politics/uk/datasets' \
  -o taxsorted-politics-catalogue.json

The catalogue distinguishes development-preview, publication-review, approved-disabled, open and emergency-stopped. Only open is an approved hosted release. There is no token or request header to add.

Plain browser JavaScript

Look before you download

const response = await fetch(
  "https://api.taxsorted.io/v1/politics/uk/datasets"
);

if (!response.ok) throw new Error(`TaxSorted returned ${response.status}`);

const { publication, datasets } = await response.json();
console.log(publication.status);
console.log(datasets.map(({ id, availability }) => ({ id, availability })));

This example does not assume approval. Fetch a record body only when its catalogue entry says availability: open.

Made to travel

One catalogue, three useful formats.

Once deployed, the catalogue stays readable through review. A dataset's JSON, CSV and NDJSON files become downloadable only after the catalogue marks it open.

JSON

A self-describing envelope with dataset metadata, records and links. Best for applications and archiving.

CSV

One record per row. Arrays and objects stay as exact JSON inside one cell, so no values are guessed or flattened away.

NDJSON

One complete JSON record per line. Best for streaming, command-line tools and larger mirrors.

Polite mirroring

Ask whether it changed first.

The catalogue, and each dataset file once open, has an ETag (a short version fingerprint). Send it back as If-None-Match; an unchanged file returns 304 with no body. ETags differ by format, so keep one beside each JSON, CSV or NDJSON mirror.

curl -fsS \
  --etag-save taxsorted.etag \
  --etag-compare taxsorted.etag \
  'https://api.taxsorted.io/v1/politics/uk/datasets' \
  -o taxsorted-politics-catalogue.json

X-Dataset-Version, X-Schema-Version, X-Record-Count and X-Checksum-SHA256 make unattended checks straightforward.

Keep the meaning

IDs and sources are the join.

  • Stable IDs: dataset and record IDs are permanent identifiers and must not be recycled. A public ledger of removed IDs is still needed to audit that promise across releases.
  • Schema versions: new optional fields may stay within major version 1; removed fields and required, nullable, type, meaning, primary-key or money-unit changes require a new major.
  • Source IDs: keep sourceIds where present. Source-ledger records carry their own sourceId and official URL.
  • Licences: TaxSorted curation and upstream data can have different terms. Read the mixed-rights statement, then the official-sources dataset before redistribution.
After release: read the source and reuse ledger Read the mixed-rights statement After deployment: read the admission ledger

Reference

Main API doors

Start here

Find out what exists and what is open right now.

GET

The front door: access terms and links to everything else.

GET

/manifest

A stable alias of the catalogue, for scripts and mirrors.

GET

/datasets

Every dataset: coverage, counts, fields, licences, sources, downloads.

GET

/datasets/rights

Where TaxSorted's licence ends and each source's rights begin.

GET

/datasets/admissions

After API deployment: each dataset's purpose, limits, risks and pending human decision.

Changing a public decision

Find who can change a UK central tax rule and what each public door can formally cause.

GET

/public-decision-pathways

One deeply sourced central-tax primary-law chain: proposer, Commons authority, scrutiny, implementation, public doors, personal remedy hand-offs and explicit gaps.

GET

/public-decision-pathways/doors

Eight lawful public doors, each with its deadline rule, identity and publication boundary, formal effect and no-guarantee field. No ranking or message sending.

The political system

Non-personal maps of how UK politics works.

GET

/system

After human approval: the full non-personal map — elections, offices, money, enforcement, history.

GET

/power/method

How office power is scored: six dimensions, office not person.

GET

/power/offices

Draft office scores with evidence. No sorting, no leaderboard.

GET

/law/watch

Proposed laws, kept clearly separate from law in force.

GET

/history/method

How changed rules and history are recorded, with dates and limits.

Standing for office

Public, non-personal routes into elected office — law, nomination, money, duties.

GET

/public-office-pathways

Public, non-personal routes outside the pending record gates: current law, nomination, agents, money, support, safety, pay, duties, sources and explicit coverage gaps. The politics emergency stop still closes this API.

Money records

Rules and records about political money — each says what it does not prove.

GET

/funding/rules

Campaign-money rules by date. Not the donation register.

GET

/funding/public

Public support schemes for parties, kept separate from private donations.

Police & enforcement

Institutions, powers and pay — never personal dossiers or operations.

People & parties

Current members of Parliament, from official records only.

GET

/people/5131

One member's sourced record. Gated fields are not fetched while closed.

Trust & corrections

How to check us, and how corrections work.

GET

/integrity

The scope, the evidence rule and each publication gate's state.

GET

/sources

Coverage, sources, licences and known gaps.

Source-first

Each dataset names its supporting source IDs; the source ledger resolves them to official URLs.

Bounded

Small pages, date limits, upstream timeouts and useful cache headers.

Deliberately less

Private contacts and donor address fields are removed, not redistributed.

Party donations are not here yet: the Electoral Commission's own search and downloads remain the official route today. Our donations door answers with a clear “unavailable” until Political Finance Online's database-reuse and attribution terms are confirmed in writing.

Parliamentary information is attributed under the Open Parliament Licence v3.0; applicable GOV.UK material uses the Open Government Licence v3.0. No licence is assumed for a Political Finance Online mirror. Read our publishing rules before republishing joined data.