canonical: https://jentic.com/apis/api.openparliament.ca/openparliament-ca

# Openparliament Ca OpenParliament Canada API

Jentic publishes the only available OpenAPI specification for OpenParliament Canada API, keeping it validated and agent-ready. OpenParliament.ca exposes Canadian federal Parliament data - bills, votes, politicians, debates, and committees - through a simple read-only HTTP API. Applications can list bills and pull a specific bill by identifier, browse votes, look up a politician by slug, and read transcripts of debates and committee proceedings. The API is unauthenticated and aimed at civic transparency tools, journalists, researchers, and AI agents that need a structured view of Canadian parliamentary activity.

## For AI agents

Read Canadian Parliament data - bills, votes, politicians, debates, and committees - without authentication, suitable for civic and research agents.

## Scope

Does not cover provincial legislatures, election results, or campaign finance - use for Canadian federal parliamentary records only.

## Capabilities

- List bills before the Canadian Parliament with /bills/ and inspect a specific bill via `/bills/{bill_id}`/
- Browse parliamentary votes through /votes/ to track how legislation progressed
- List MPs and senators with /politicians/ and look up an individual by slug via `/politicians/{politician_slug}`/
- Read debate transcripts from /debates/ for context on policy discussions
- Inspect committee proceedings via /committees/
- Build civic-tech assistants that answer questions grounded in primary parliamentary records

## Use cases

### Civic Transparency Dashboard

Build a public dashboard that surfaces recent bills, votes, and debates from the Canadian Parliament by combining /bills/, /votes/, and /debates/ feeds. The dashboard can highlight new legislation, link to vote breakdowns, and embed transcript snippets - all from primary government sources. The API requires no authentication, so it can be used directly from a civic-tech site without managing keys.

Example prompt: Fetch /bills/ filtered to the current session, then for each bill call /votes/ to attach the most recent vote outcome and render a dashboard card.

### Politician Voting Record Lookup

Answer questions about how a specific MP or senator has voted by combining `/politicians/{politician_slug}`/ with `/votes/.` Journalists, advocacy groups, and constituents can build pages that show a politician's recent votes alongside their profile, sourced from OpenParliament.ca rather than scraped from PDFs. The slug-based lookup keeps URLs stable and shareable.

Example prompt: Resolve the politician slug for the named MP, GET `/politicians/{slug}`/ for the profile, and join with recent /votes/ entries that include their vote.

### Legislative Research Assistant

Power a research assistant that summarises the status and content of pending legislation by reading `/bills/{bill_id}`/ for the bill text and /debates/ for the discussion around it. Researchers and policy analysts can produce briefing notes faster by pulling structured data instead of navigating the parliamentary website. Committee context can be added from /committees/ where relevant.

Example prompt: Given a bill id, fetch `/bills/{bill_id}`/, retrieve associated /debates/ entries, and produce a one-paragraph status summary citing the latest action.

### AI Agent Civic Assistant via Jentic

Run an agent that answers natural-language questions about Canadian Parliament - for example, 'what did my MP vote on last week' or 'what is bill C-12 about'. Jentic returns the matching OpenParliament operation by intent so the agent does not need to memorise paths or slug formats, and responses are grounded in the official record.

Example prompt: Search Jentic for 'list canadian parliament bills', load the GET /bills/ schema, execute filtered to the current session, and return a structured summary of the top five active bills.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/bills/` | List bills |
| GET | `/bills/{bill_id}/` | Retrieve a single bill |
| GET | `/votes/` | List votes |
| GET | `/politicians/` | List politicians |
| GET | `/politicians/{politician_slug}/` | Retrieve a politician by slug |
| GET | `/debates/` | List debates |
| GET | `/committees/` | List committees |

## Key resources

- **Bills** — List bills and fetch details by id
- **Votes** — Browse parliamentary votes
- **Politicians** — List MPs and senators and fetch by slug
- **Debates** — Read debate transcripts
- **Committees** — Inspect committee proceedings

## Why Jentic

- **Setup:** Wiring the OpenParliament Canada API by hand means learning its bill, vote, politician, and debate resource shapes and paging through federal records yourself. Through Jentic you install once, import OpenParliament from the API Directory, and your agent calls it, no key to manage since the API is open.
- **Permission scoping:** OpenParliament is read-only over federal parliamentary records, so scope the agent to the operations it needs, such as listing bills, votes, and politicians, and leave out others unless you add them. You choose the allowed operations, so the agent only calls what you list.
- **Credential handling:** This API needs no credential, and any header your Jentic One instance does store is kept encrypted and injected at execution time. Nothing sensitive enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'find a Canadian federal bill' or 'look up a politician's votes', and Jentic returns the matching OpenParliament operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **UK Parliament Bills API** — Equivalent bill data for the UK Parliament
- **Open States API** — US state legislature bills, votes, and politicians
- **US Congress.gov API** — US federal legislative data

## FAQ

### Why is there no official OpenAPI spec for OpenParliament Canada API?

OpenParliament.ca does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call OpenParliament Canada API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the OpenParliament Canada API use?

The OpenParliament.ca API is unauthenticated. The spec defines no security schemes, so requests can be made without an API key or token. When using Jentic, no credential needs to be vaulted - Jentic invokes the operation directly.

### Can I look up an MP's voting record with this API?

Yes, indirectly. Use GET `/politicians/{politician_slug}`/ to confirm the politician and GET /votes/ to retrieve the votes feed. The votes payload includes the politicians involved, so you can filter to a specific MP's record by their slug.

### What are the rate limits for the OpenParliament Canada API?

The spec does not declare numeric rate limits. Because the API is open and unauthenticated, callers should be considerate - paginate /bills/, /votes/, and /debates/ rather than scraping in tight loops, and cache results that do not change between sessions.

### How do I retrieve a specific bill through Jentic?

Search Jentic for 'get a Canadian Parliament bill by id', load the GET `/bills/{bill_id}`/ schema, and execute with the bill identifier. With `pip install jentic` the entire flow is one search and one execute() call, and no credential handling is required.

### Is the OpenParliament Canada API free?

Yes. OpenParliament.ca is an open civic-tech project and the API is free to use. There are no paid tiers exposed in the spec; please respect the project's stated usage guidance and consider supporting the project if you depend on it.

### Can I limit what my agent is allowed to do with the OpenParliament Canada API?

Yes. Because you self-host Jentic One, your own rules decide which OpenParliament operations the agent may call, and this API is read-only over federal parliamentary records. You can scope the agent to just the operations it needs, such as listing bills, votes, and politicians, and leave out debates or committees unless you add them. The agent only calls the operations you list, and since the API is unauthenticated there is no credential to hand over.
