About & methodology
What this site is, where every figure comes from, what we work out ourselves, and where the data runs out.
What Canadash is
Canadash is a non-partisan, non-commercial project that brings public data about Canadian political representation into one place: who represents you federally, provincially and (for now, in Toronto) municipally, how members of Parliament vote, what bills are before the House and the provincial legislatures, what campaigns raise and what members spend.
It is not an official source. Canadash is not affiliated with, endorsed by, or a publication of the House of Commons, the Parliament of Canada, Elections Canada, Statistics Canada, any provincial or territorial legislature, any municipal government, or any political party. Everything here is assembled from published open data. Where the two disagree, the official source is right and we are wrong.
Nothing on this site is legal, electoral or financial advice, and no figure should be relied on for an official purpose without confirming it against the source.
Parliament has a vocabulary of its own. Where we cannot avoid one of its words, we explain it in place and link it to the glossary, which defines every parliamentary, election and money term used on this site in plain language.
Where the data comes from
11 sources- OpenParliamentOpen data, free re-use with attribution
Sitting MPs, party and riding, bills, recorded divisions and individual ballots
Read live and cached for about an hour
- House of Commons open dataOpen Government Licence – Canada
Member roles, committee membership, caucus changes
Scheduled job, several times a week · last good data Nov 2, 2026
- House of Commons — Members' expendituresOpen Government Licence – Canada
Quarterly salaries, travel, hospitality and contract spending per member
Scheduled job; the source itself publishes quarterly · last good data Nov 1, 2026
- LEGISinfoOpen Government Licence – Canada
Bill text, sponsors, stages and status for the current Parliament
Read live and cached for about an hour
- Elections Canada — official voting resultsOpen Government Licence – Canada
Poll-level and riding-level results for general elections
Scheduled job; the source changes only after an election · last good data Aug 24, 2026
- Elections Canada — transposed 2021 resultsOpen Government Licence – Canada
2021 votes recalculated onto the 2023 riding boundaries, for comparison
Static dataset; refreshed with the election job · last good data Aug 24, 2026
- Elections Canada — political financing returnsOpen Government Licence – Canada
Individual contributions to candidates and riding associations
Scheduled job; the source publishes weekly · last good data Oct 1, 2026
- Statistics Canada — 2021 Census Profile (2023 Representation Order)Statistics Canada Open Licence
Riding census figures: population and age, income and low income, labour force, education, housing and dwelling types, language, immigration, Indigenous identity and commuting
Static dataset, loaded in full for all 343 ridings: 2021 Census, income reference year 2020. Not scheduled; re-run on demand · last good data Sep 18, 2026
- Represent (Open North)Open data, free re-use with attribution
Postal code lookup, federal / provincial / municipal representatives and contacts
Read live and cached for about an hour
- Provincial and territorial legislature websitesVaries by legislature; most under a provincial open licence
Bill lists, numbers, sponsors and stage history where the page is readable
Weekly scrape · last good data Nov 2, 2026
- Derived vote metrics (from OpenParliament ballots)Canadash calculation over open data
Party discipline and MP-to-MP voting agreement counts
Scheduled job, weekly · last good data Aug 3, 2026 · most recent refresh (Nov 2, 2026) failed, figures shown are older
Data freshness
The dates above are read from our own sync log at the moment you load this page — they are not written into the site. Sources we read live (OpenParliament, LEGISinfo, Represent) are cached for about an hour, so a change made in the last hour may not appear yet. Sources we import on a schedule show the date of the last run that finished cleanly. If a later run failed, we say so and keep showing the older, good data rather than an empty page.
A check runs every week and writes down whether each scheduled import succeeded inside the window its own schedule implies, whether the most recent attempt failed, and whether a run became wedged and had to be cleared. That is how a quietly broken import gets noticed instead of the pages simply showing old numbers for a month.
Last health check: Nov 2, 2026 — 3 failing or stuck: Member roles, Vote metrics, Donor data.
What we count about visitors
We do not use Google Analytics, Plausible, or any other outside service, and this site loads no tracking script of any kind. We keep our own count, in our own database, of one thing: how many times each kind of page was opened on each day. The count is against the shape of the page — for example “a member page” — and not the particular member, riding or bill you looked at.
Not collected, at all: no cookies, nothing saved in your browser, no IP address, no browser or device details, no screen size, no referring site or search term, no account, no visit or session stitched together, and no row per visit. There is nothing stored that could be linked back to a person or followed from one page to the next, which is also why this site shows you no cookie banner.
We also record uncaught errors so a page that breaks does not stay broken unnoticed. An error record holds the shape of the page, the error message and the programming stack trace, grouped by day with a count — nothing about who hit it. Error records are deleted after 30 days, and repeats of the same fault raise one counter rather than filling the table.
The counts are not published. They are readable only with the same shared secret our scheduled imports use.
What we calculate ourselves
5 derived measuresEverything in this section is a Canadash measure. None of it is published by Parliament, Elections Canada or any legislature. These are descriptive statistics over public records, not assessments. A number here is not a verdict on how well anyone does their job, and it is easy to construct a member who scores badly while working hard, or the reverse.
Participation
- How it is calculated ·
- We count only the votes where each member's choice was written down and published. A member's figure is the number of those they voted in, divided by the number held while they held their seat this session.
- Thresholds ·
- Shown only where the member could have voted at least 20 times, so someone sworn in last month is not judged on a handful of votes.
- What it does not mean ·
- It is not attendance. A member can be in the building all week and miss a vote, or be away on committee travel, ministerial duty, illness or parental leave. The published records cannot tell those apart.
Party discipline
- How it is calculated ·
- The share of votes in which a member voted the same way as most of their own party.
- Thresholds ·
- Needs a party of at least 5 sitting members and a minimum number of votes in common. Members who belong to no party are left out, because there is no party to compare them with.
- What it does not mean ·
- A low score is not disloyalty and a high score is not obedience. Most votes are uncontroversial, so nearly every member scores high.
Voting alignment
- How it is calculated ·
- For any two members: how many votes both took part in, and in what share of those they voted the same way.
- Thresholds ·
- Only votes where both members' choices were recorded are counted.
- What it does not mean ·
- Voting alike is not co-operation, and it is not agreement in principle — two members can vote the same way for opposite reasons.
Riding competitiveness
- How it is calculated ·
- How far the winner finished ahead of whoever came second, in votes and as a share of the ballots that could be counted.
- Thresholds ·
- Where a comparison crosses the 2023 boundary change, we use Elections Canada's recalculated figures and label them as recalculated.
- What it does not mean ·
- A narrow result last time does not predict the next one. Who votes, who runs and where the boundaries sit all change.
Small-donor share
- How it is calculated ·
- A campaign filing names a donor only if they gave more than $200 to that recipient in a year. Everything given below that line is reported as a single lump sum with no names attached. We divide that lump sum by the total contributions on the same filing.
- Thresholds ·
- Worked out only for filings we hold for the periods covered. A filing with no lump-sum line is marked as not reported rather than counted as zero.
- What it does not mean ·
- It is not a measure of grassroots support. The $200 naming line, fundraising events and the timing of a campaign all shape the figure.
Who can donate federally
Corporations, unions and associations are banned from contributing federally. Since the Federal Accountability Act took effect in 2007, only individual Canadian citizens and permanent residents may contribute to federal parties, candidates, riding associations, and leadership or nomination contestants. Contributions are capped at an annual limit per recipient category — roughly $1,750 in recent years, indexed each year, so the exact figure depends on the year.
This matters for how you read our contribution figures. Readers used to United States politics often assume corporate money is missing from what we show. It is not missing — federally, it does not exist. The individual contributions on this site are close to the complete picture of direct donations to federal politicians, not a partial view of a larger pot.
That does not mean money and organised interests are absent from federal politics. Direct donation is only one channel, and several others are outside our coverage: registered third-party election advertising, lobbying, the financing of leadership and nomination contests, party-level finances (transfers, national fundraising and election expenses), and sponsored travel and gifts disclosed to the Conflict of Interest and Ethics Commissioner. Absence of a large donor figure is not absence of influence.
Known limits and gaps
- Participation counts recorded divisions only. Committee work, ministerial duty, approved absence, illness and paired votes are indistinguishable from any other missed vote in the source data.
- Provincial coverage is uneven. Six legislatures publish a bill list a program can read (Ontario, Quebec, Nova Scotia, New Brunswick, Manitoba, Northwest Territories); six do not, each for its own reason — listed below.
- Municipal coverage is Toronto only. Other municipalities are not covered at all yet.
- Election results exclude by-elections. Only general election results are loaded, so a seat won in a by-election will show the last general election result.
- Boundaries changed in 2023. Results before 2025 were counted on different riding boundaries. Where we compare across that change we use Elections Canada’s transposed figures and label them as transposed.
- Campaign finance is matched by name and riding. Financing returns do not carry a person identifier, so a common name can be attached to the wrong person. Treat a surprising donor figure as a prompt to check the return itself.
- Provincial bills are read from web pages. No legislature publishes a machine-readable bill feed, so we parse HTML. A site redesign can break the parse, and when it does the page shows older data and says so.
Legislatures with no bill data
- British Columbia — British Columbia's Progress of Bills page is rendered entirely in the browser by JavaScript. The HTML the server sends contains no bill data at all, so there is nothing to read without running a full browser on every refresh. British Columbia does publish real open data — MLA compensation is a genuine CSV feed — but nothing for bills.
- Alberta — Alberta's bill status page is a JavaScript form that fetches its results after the page loads, so the server sends no bill data. Alberta's open data portal does run a standard catalogue API, but it sits behind bot protection that rejects automated requests. Hansard is published as PDF only.
- Saskatchewan — Saskatchewan publishes its progress of bills as a per-session PDF rather than a web page with structured markup, and the links to those PDFs change with every session. There is no page we could read reliably without parsing PDFs whose layout is not guaranteed.
- Newfoundland and Labrador — The Newfoundland and Labrador House of Assembly site blocks automated requests, and — more seriously — it answers requests for pages that do not exist with a success code and an error page. A scraper cannot tell a real page from a missing one, which is exactly the condition under which a scraper starts publishing nonsense. We will not ingest it.
- Prince Edward Island — Prince Edward Island publishes bills only behind a search form — there is no page that simply lists them — and the site runs bot management that rejects automated requests inconsistently. There is no stable address we could read on a schedule.
- Yukon — The Yukon Legislative Assembly site is protected by a challenge that only a full browser can pass. Every automated request is refused, including for the progress of bills page. The underlying page looks readable — the obstacle is access, not structure.
Reusing our data
Every data-heavy page on this site has a Download CSV control, and there is a free read-only JSON API at /api, documented endpoint by endpoint, with no key or account needed.
If you publish anything you took from here, credit the original publisher named in the record, not just Canadash. Where a source allows non-commercial use only, that restriction travels with the data.
Fields marked derived are calculated by Canadash. They are not published parliamentary statistics and no official body stands behind them.
Canadash's own derived measures, page text and the structure of these responses are offered under Creative Commons Attribution 4.0. The underlying records belong to the bodies that published them and carry their own terms, listed per response.
Some of what we show we may not pass on. Elections Canada contribution records, the Represent municipal lookup, and Quebec and Manitoba bills are all excluded from downloads and the API — donor records are personal information collected for a statutory purpose, Represent asks that its service be queried directly rather than re-served in bulk, and those two legislatures permit reproduction without alteration only. The reason for each is set out on the API page, alongside the 4 excluded sources in full. Where a source allows non-commercial use only — Elections Canada results and the provincial legislatures — that restriction travels with anything you take from us.
AI-generated summaries
Some member pages carry a short written summary. Those summaries are generated by a language model from that member’s voting record and sponsored bills. They are not written or reviewed by a person before publication, and they are not checked against news coverage, speeches or statements.
A language model can misread a pattern, overstate a tendency, or omit something important. Treat these summaries as a rough orientation only — never as an authoritative account of anyone’s positions or views. The underlying votes and bills are linked on the same page, and those are the record.
Corrections
If something here is wrong, we want to know. Two different things can be wrong, and they go to different places:
- We got it wrong — the wrong person attached to a figure, a stale number, a page stuck on old data, a measure that does not describe what it claims to. Report it to us.
- The source got it wrong — a mistaken spending filing, a wrong riding, a misspelled name in an official record. We cannot change that; it has to be corrected by the body that published it (the House of Commons, Elections Canada, Statistics Canada or the relevant legislature), after which it reaches us on the next refresh. The reporting page links each body directly.
If you are not sure which of the two it is, send it to us anyway — working out which body publishes a given figure is our job, not yours.