Data API and downloads
Everything on this site is also available as machine-readable data: a CSV download on each data-heavy page, and a free read-only JSON API. No key, no account, no sign-up. GET only — nothing here writes anything.
How it works
- Base URL:
https://canadash.com/api/v1. Responses are JSON withContent-Type: application/jsonand allow cross-origin requests. - Every response is the same envelope: version, when the data was retrieved from its source, when the response was generated, pagination, the sources that contributed, the derived fields, the attribution and licence notices, and
data. - Fields are always present. A missing figure is
null, never dropped and never a zero — a zero would say the real value was nought. - Lists are paged with
limit(1–200, default 50) andoffset. - The API only serves what this site has already loaded. A request never reaches Parliament, Elections Canada, Statistics Canada or a legislature, so you cannot use it to put load on them through us.
Endpoints
15 endpointsGET /api/v1
Machine-readable index of everything below, including the rate limit and the excluded sources.
GET /api/v1/members
Sitting members of the House of Commons.
- party
- Party name, e.g. Liberal
- province
- Two-letter code, e.g. on
- q
- Search on member name or riding
- limit
- 1–200, default 50
- offset
- Rows to skip, default 0
GET /api/v1/members/{slug}
One member, with party, riding and membership history.
GET /api/v1/ridings
Federal electoral districts on the 2023 Representation Order.
- province
- Two-letter code
- q
- Search on riding name
- limit
- 1–200, default 50
- offset
- Rows to skip
GET /api/v1/ridings/{fed_id}
One riding, its sitting member and its 2021 Census figures.
GET /api/v1/ridings/{fed_id}/elections
Election results for one riding: counted results, transposed 2021 estimates and earlier elections.
GET /api/v1/bills
Federal bills for one session.
- session
- e.g. 45-1, defaults to the current session
- category
- government, private or senate
- status
- Status text as published
- q
- Search on number or title
- limit
- 1–200, default 50
- offset
- Rows to skip
https://canadash.com/api/v1/bills?session=45-1&category=government&limit=5
GET /api/v1/bills/{session}/{number}
One bill, with its stages and the divisions held on it.
GET /api/v1/votes
Recorded divisions for one session.
- session
- e.g. 45-1
- result
- Agreed to, Negatived, and so on
- bill
- Bill number, e.g. C-2
- limit
- 1–200, default 50
- offset
- Rows to skip
GET /api/v1/votes/{session}/{number}
One division, with every member's ballot and the party breakdown.
GET /api/v1/committees
House of Commons committees.
- type
- standing, joint or other
- q
- Search on acronym or name
- limit
- 1–200, default 50
- offset
- Rows to skip
GET /api/v1/committees/{acronym}
One committee, with the membership we have on file.
GET /api/v1/provincial-bills
Bills before the provincial and territorial legislatures we may redistribute (Ontario, Nova Scotia, New Brunswick, Northwest Territories).
- province
- on, ns, nb or nt
- q
- Search on number, title or sponsor
- limit
- 1–200, default 50
- offset
- Rows to skip
https://canadash.com/api/v1/provincial-bills?province=on&limit=5
GET /api/v1/expenditures
Members' office expenditures by fiscal year.
- fiscal_year
- Starting year, e.g. 2024
- limit
- 1–200, default 50
- offset
- Rows to skip
https://canadash.com/api/v1/expenditures?fiscal_year=2024&limit=5
GET /api/v1/rankings
Cross-member measures. Includes Canadash-derived fields, flagged as derived in the response.
- metric
- participation, discipline, raised, spent, billsSponsored, billsPassed
- party
- Party name
- province
- Two-letter code
- limit
- 1–200, default 50
- offset
- Rows to skip
https://canadash.com/api/v1/rankings?metric=participation&limit=5
An example request and response
curl "https://canadash.com/api/v1/members?province=on&limit=5"
{
"api_version": "v1",
"data_retrieved_at": "2026-09-18T04:12:07.000Z",
"generated_at": "2026-09-18T21:44:51.221Z",
"pagination": { "limit": 5, "offset": 0, "count": 5, "total": 343, "has_more": true },
"sources": [
{
"id": "house-of-commons",
"name": "House of Commons of Canada",
"licence": "House of Commons Open Data",
"licence_url": "https://www.ourcommons.ca/en/important-notices",
"redistribution": "open",
"attribution": "Contains information from the House of Commons of Canada.",
"note": "Published for free reuse, including commercial reuse, with credit."
}
],
"derived_fields": [],
"derived_notice": "Fields marked derived are calculated by Canadash...",
"attribution_notice": "If you publish anything you took from here, credit the original publisher...",
"licence_notice": "Canadash's own derived measures... Creative Commons Attribution 4.0...",
"data": [
{
"slug": "example-member",
"name": "Example Member",
"party": "Liberal",
"riding_name": "Example Riding",
"riding_id": "35035",
"province": "on",
"email": null
}
]
}The notices above are abbreviated here; responses carry them in full.
Rate limit and errors
- 60 requests a minute per client address, counted per serving instance. Go over it and you get HTTP
429withretry_after_secondsand aRetry-Afterheader. Wait that long and carry on. Every response also carriesX-RateLimit-Remaining. The limit is deliberately modest: it is here so nobody can use this API to hammer our database or the bodies we read from. - HTTP
503with codenot_cachedmeans the record exists but this site has not loaded it yet. The API never fetches from the original source — that guarantee is the reason for this error rather than a slow live request. Open the matching page on the site once, then ask again. 400for a parameter we cannot use (including asking for a province we are not permitted to redistribute),404for a record that does not exist,405for anything other than GET. Errors are JSON with acodeand a plain-languagemessage.
Licence and attribution
Showing someone else’s data on a web page and handing it to you as a file are different acts, and the second one carries obligations. Read this part before you publish anything you take from here.
- 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.
- Every API response lists the sources behind it, and every CSV download carries the same credits as comment lines above the header row, so the attribution travels with the file.
| Source | What we take | Terms | What you may do |
|---|---|---|---|
| House of Commons of Canada | Recorded divisions, committee membership and members' office expenditures | House of Commons Open Data | Any purpose, with credit. The House publishes these as open data to be “freely shared, used and built on without restrictions”. Reuse for any purpose, with credit. |
| OpenParliament.ca | Member records, riding index, bill sponsors and the per-member ballots on each division | No formal data licence published | Non-commercial reuse only, with credit. OpenParliament is a volunteer project that republishes House of Commons records and offers its own bulk download, but publishes no formal data licence. We pass it on with both credits and no claim of endorsement, and we do not use its name or logo other than as an acknowledgement. If you need certainty for a commercial product, ask its maintainer. |
| LEGISinfo, Parliament of Canada | Federal bill numbers, titles, types, statuses and stage dates | Parliament of Canada Important Notices (permission-based) | Non-commercial reuse only, with credit. Parliament's site terms ask that permission to reproduce site content be sought from the source, and parliamentary privilege attaches to proceedings. The same bill fields are also published as House of Commons Open Data. We expose bill metadata only — never bill text — and you should seek Parliament's permission before republishing it commercially. |
| Elections Canada | Official voting results by electoral district, and the transposition of the 2021 vote onto the 2023 boundaries | Elections Canada terms of use (non-commercial reproduction) | Non-commercial reuse only, with credit. Elections Canada publishes no blanket open licence for its result files. Reproduction for non-commercial purposes with credit is accepted practice; commercial republication should be cleared with Elections Canada first. We pass that restriction on to you rather than removing it. |
| Statistics Canada | 2021 Census Profile figures for federal electoral districts | Statistics Canada Open Licence | Any purpose, with credit. The clearest terms of any source we hold: reuse, publish, distribute or sell, with the source credited and no suggestion that Statistics Canada endorses what you do with it. |
| Legislative Assembly of Ontario | Provincial bill numbers, titles, sponsors and statuses | Copyright and privacy — non-commercial use with credit | Non-commercial reuse only, with credit. The Speaker permits reasonable, fair, non-commercial use with the Assembly credited. That restriction travels with the data: non-commercial reuse only unless you have the Assembly's permission. |
| Nova Scotia House of Assembly | Provincial bill numbers, titles, sponsors and statuses | Copyright — non-commercial use | Non-commercial reuse only, with credit. Reproduction is permitted for non-commercial use; commercial publication needs the Speaker's approval. Same restriction downstream. |
| Legislative Assembly of New Brunswick | Provincial bill numbers, titles, sponsors and statuses | Disclaimer — education, study, research and reporting | Non-commercial reuse only, with credit. Reproduction without charge is permitted for education, private study, research and news reporting. General commercial redistribution is not covered, so ask the Assembly first. |
| Legislative Assembly of the Northwest Territories | Territorial bill numbers, titles, sponsors and statuses | No assembly-specific terms published | Non-commercial reuse only, with credit. The Assembly publishes no reuse terms of its own. Territorial government terms elsewhere allow non-commercial reproduction with credit and require consent for commercial use, so we treat this the same way. |
| Canadash (derived) | Participation, party discipline, voting alignment, competitiveness and small-donor share | Creative Commons Attribution 4.0 | Any purpose, with credit. These figures are ours, not anyone's official statistics. No parliament, legislature or agency publishes them. Reuse them freely with credit, and label them as derived so your own readers are not misled. |
What we deliberately leave out
4 sources excludedThese appear on the site but never in a download or an API response, because their terms do not permit us to pass them on. This is the most important part of this page for anyone planning to build on our data: if you need these, go to the publisher directly.
Assemblée nationale du Québec
Provincial bill numbers, titles, sponsors and statuses
The Assembly's terms require that content not be modified or altered and bar commercial use. Restructuring a bill list into rows of a CSV or JSON is an alteration, so Quebec bills are shown on the site but are not exported and are not in the API.
Conditions d'utilisation — non-commercial, no alterationLegislative Assembly of Manitoba
Provincial bill numbers, titles, sponsors and statuses
Manitoba's terms permit non-commercial use only and require that material remain unaltered. As with Quebec, a restructured data feed is an alteration, so Manitoba bills are shown on the site but are not exported and are not in the API.
Manitoba website copyright — non-commercial, unalteredElections Canada — political contributions
Named individual contributions to campaigns and associations
Contribution records name private individuals and are published for statutory purposes under the Canada Elections Act. We show them per member on the site, where the source intends them to be read, but we do not hand them out in bulk: no donor data in any export or API response.
Canada Elections Act, statutory-purpose restrictionsRepresent (Open North)
Postal-code lookups, boundaries and municipal representatives
Represent is a small non-profit service with rate limits and no published reuse licence, and re-serving its representative lists in bulk would put our traffic on top of theirs. Municipal representatives and postal-code lookups are therefore not exported and not in the API — use Represent directly.
No formal data licence published
Quebec and Manitoba bills are also held back: those legislatures permit reproduction without alteration only, and restructuring a bill list into rows is an alteration. They stay on the site, where you are reading their own published wording.
Downloads on the site
Each of these pages has a Download CSV control that exports exactly the rows on screen, with your filters and sort applied: members, bills, votes, committees, rankings, office spending, provincial bills and each riding page’s election results.
How each figure is worked out, and what it does not mean, is on About and methodology. Found something wrong? Tell us.