A record of the public activity of Britain's political parties over time: parliamentary contributions, the parties' own videos, donations, and self-reported membership figures. There are currently 47,962 entries across 7 parties: Conservative and Unionist Party, Green Party, Labour Party, Liberal Democrats, Plaid Cymru, Reform UK, Scottish National Party.
Every party is tracked by the same rules, from the same sources, over the same period. Nothing on this site is set per party except the party's name, the names Parliament uses for it, and its official channel.
The aim is to be citable. Every entry links to a primary source, summaries are factual, and nothing is asserted without a link to back it.
No source link, no entry. This is enforced in the database rather than left to application code: source_url is NOT NULL with a length check, so a record without a citation cannot be stored at all. The card component refuses to render one as a second line of defence.
Where a source provides the text — as Hansard does — the summary shown is that text verbatim, marked extractive, and can be diffed word for word against the page it cites. Nothing in the ingestion pipeline condenses, characterises, or rewords it.
This matters more than it might look. A site whose defence is that it does not editorialise cannot have a machine writing its summaries. Where a paraphrase is unavoidable, the record is marked abstractive and a database constraint prevents it being published until a named reviewer has signed it off.
No verified source for party membership exists. Every figure is self-reported, from press releases or social posts, and is stored and labelled as a claim — never as a fact. The claim marker is a structural element, not a line of prose that can be skimmed past or lost in a truncation.
The marker is deliberately grey rather than red or amber. It records what is known about a figure's provenance, not a judgement about the person who stated it.
The record begins on , polling day of the general election that began the current Parliament, for every party alike. The larger parties have decades of Hansard behind them; pulling all of it for some and not others would make the record lopsided in a way that looks like a choice.
A parliamentary contribution is filed under the party the member sat for on the day they made it. A member who crossed the floor has their earlier contributions under their former party and their later ones under the new one.
Within that window the record is complete rather than sampled: every spoken contribution Hansard returns is ingested. There is no cap. A limit would look like a tidy default and read on the page as “this is what they said”.
Every sitting MP's party history is re-checked on each ingest, which is how members who have left a party are found — searching by current party would never show them again. Someone who left the Commons entirely before being recorded would not be picked up this way.
Hansard records every interjection as a contribution: “Will the hon. Lady give way?”, “Nonsense!”. They stay in the record, but timelines hide spoken contributions under 12 words by default, with the number hidden and a link to show them stated above every timeline.
The only test applied is counting words. Nothing reads what was said, and the same threshold applies to every party.
Events record when something happened and, separately, when it became public. The Electoral Commission publishes donations quarterly in arrears, so a single date column would necessarily be wrong about one or the other.
Party affiliation is stored with a start and end date rather than as a field on a person. People defect in and are suspended out; a static field would silently re-attribute old entries under someone's current status every time they crossed the floor.
The dates come from Parliament's published party history for each member, which records affiliation as dated periods. They are deliberately not the date a person was elected. Several MPs elected for one party now sit for another, and dating their current affiliation from their election would backdate one party's record over another's.
Parliament re-issues a party record whenever a seat changes, so a member who held a seat through a dissolution and won it back appears there twice. Nobody left their party on the day Parliament was dissolved, so those are shown as one continuous period, as are back-to-back records for one party under two names (Labour and “Labour (Co-op)”). A member who sat throughout and was not in the party for part of that time did really leave, and keeps two periods.
Each party is shown in the colour Parliament publishes for it, read from the same records. The colour is a small mark beside the name, the same size for every party.
Policy tags come from a fixed vocabulary of plain policy-area nouns. A tag names a subject, never a position on it. Free-growing tags are where framing enters invisibly — the difference between “immigration” and “anti-immigration” is an editorial act that no schema migration review would catch.
Tags are not currently applied automatically. Assigning them at scale is a judgement, and an automated judgement is still a judgement.
If an entry misrepresents a source, or a source link is dead or wrong, write to [email protected] with the entry and the source. Corrections are made to the record rather than appended to it, and the ingest timestamp shows when the record was last refreshed.