# UK Parliament

> Follow the UK Parliament: find MPs and Lords, how to contact them and what they have declared, see how they voted, track bills with their stages, documents and amendments, read written questions, answers and ministerial statements, check committees and their meetings, and search what was said in Hansard. No account or API key is required.

App · 20 actions. Web page: https://docs.lodol.com/docs/integrations/uk-parliament

## Actions

### Find a constituency and its MP

Find a constituency by name, or the one a postcode is in, with the MP who represents it now.

**Inputs**

- Constituency name or postcode (`query`, text, required): A constituency's name (or part of it), or a full UK postcode.

**Outputs**

- `constituencies` (list)
- `constituency` (object)
- `constituency_count` (number)
- `query` (text)

**Example output**

```json
{
  "constituencies": [
    {
      "abolished_on": null,
      "constituency_id": 4140,
      "created_on": "2024-05-31",
      "mp_id": 4031,
      "mp_name": "Rachel Reeves",
      "mp_party": "Labour",
      "mp_since": "2010-05-06",
      "name": "Leeds West and Pudsey",
      "url": "https://members.parliament.uk/constituency/4140/overview"
    }
  ],
  "constituency": {
    "abolished_on": null,
    "constituency_id": 4140,
    "created_on": "2024-05-31",
    "mp_id": 4031,
    "mp_name": "Rachel Reeves",
    "mp_party": "Labour",
    "mp_since": "2010-05-06",
    "name": "Leeds West and Pudsey",
    "url": "https://members.parliament.uk/constituency/4140/overview"
  },
  "constituency_count": 1,
  "query": "LS13 2ET"
}
```

### Find MPs and Lords

Find members of the House of Commons or the House of Lords by name, party or constituency: their party, seat, when they joined and whether they still sit.

**Inputs**

- Name (`name`, text): All or part of the member's name.
- House (`house`, text): Only members of this House. Leave empty for both. One of: `commons` (House of Commons), `lords` (House of Lords).
- Party (`party`, text): Only members of this party. Leave empty for all.
- Constituency or place (`constituency`, text): Only MPs whose constituency matches this name or place, for example Leeds.
- Current members only (`current_only`, true/false): Leave ticked to skip people who no longer sit. Default: `true`.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `member_count` (number)
- `members` (list)
- `total_count` (number)

**Example output**

```json
{
  "member_count": 1,
  "members": [
    {
      "constituency": "Leeds West and Pudsey",
      "constituency_id": 4140,
      "full_title": "Rt Hon Rachel Reeves MP",
      "gender": "F",
      "house": "Commons",
      "is_current": true,
      "left_on": null,
      "left_reason": null,
      "list_as": "Reeves, Rachel",
      "member_from": "Leeds West and Pudsey",
      "member_id": 4031,
      "member_since": "2010-05-06",
      "name": "Rachel Reeves",
      "party": "Labour",
      "party_abbreviation": "Lab",
      "party_id": 15,
      "profile_url": "https://members.parliament.uk/member/4031/contact",
      "status": "Current member",
      "thumbnail_url": "https://members-api.parliament.uk/api/Members/4031/Thumbnail"
    }
  ],
  "total_count": 1
}
```

### Get a member's career

Get the government and opposition posts, committee memberships, parties and constituencies an MP or Lord has held, newest first, and the posts they hold now.

**Inputs**

- Member (`member`, text, required): An MP's or Lord's name, for example Rachel Reeves, or their member id from an earlier step.

**Outputs**

- `committees` (list)
- `constituencies` (list)
- `current_posts` (list)
- `elections_contested` (list)
- `government_posts` (list)
- `house` (text)
- `house_memberships` (list)
- `member_id` (number)
- `name` (text)
- `opposition_posts` (list)
- `other_posts` (list)
- `parties` (list)

**Example output**

```json
{
  "committees": [
    {
      "from": "2015-10-26",
      "name": "Treasury Committee",
      "to": "2017-05-03"
    }
  ],
  "constituencies": [
    {
      "from": "2024-07-04",
      "name": "Leeds West and Pudsey",
      "note": "Elected 1 time",
      "to": null
    }
  ],
  "current_posts": [],
  "elections_contested": [
    {
      "constituency": "Bromley and Chislehurst",
      "date": "2005-05-05"
    }
  ],
  "government_posts": [
    {
      "department": "HM Treasury",
      "from": "2024-07-05",
      "title": "Chancellor of the Exchequer",
      "to": "2026-07-20"
    }
  ],
  "house": "Commons",
  "house_memberships": [
    {
      "from": "2010-05-06",
      "house": "Commons",
      "to": null
    }
  ],
  "member_id": 4031,
  "name": "Rachel Reeves",
  "opposition_posts": [
    {
      "department": "HM Treasury",
      "from": "2021-05-09",
      "title": "Shadow Chancellor of the Exchequer",
      "to": "2024-05-30"
    }
  ],
  "other_posts": [],
  "parties": [
    {
      "from": "2010-05-06",
      "name": "Labour",
      "to": null
    }
  ]
}
```

### Get bill

Get a bill's details: its long title, sponsors, current stage, every stage it has been through in each House with the dates, and its published documents newest first (each version of the bill, explanatory notes, amendment papers, impact assessments), with links to read them.

**Inputs**

- Bill id (`bill_id`, text, required): The bill's id, from 'Search bills' or the bill's page address.
- Document type (`document_type`, text): Only list documents of this kind. Leave empty for all.

**Outputs**

- `bill_id` (number)
- `bill_type` (text)
- `current_house` (text)
- `current_stage` (text)
- `current_stage_date` (text)
- `current_stage_house` (text)
- `document_count` (number)
- `documents` (list)
- `former_title` (text)
- `is_act` (true/false)
- `is_defeated` (true/false)
- `last_updated` (text)
- `latest_stage_id` (number)
- `long_title` (text)
- `originating_house` (text)
- `session_id` (number)
- `sponsors` (list)
- `stage_count` (number)
- `stages` (list)
- `summary` (text)
- `title` (text)
- `url` (text)
- `withdrawn_on` (text)

**Example output**

```json
{
  "bill_id": 4065,
  "bill_type": "Government bill",
  "current_house": "Lords",
  "current_stage": "Report stage",
  "current_stage_date": "2026-10-20",
  "current_stage_house": "Lords",
  "document_count": 1,
  "documents": [
    {
      "date": "2026-06-23",
      "document_id": 66879,
      "house": "Lords",
      "links": [
        {
          "content_type": "text/html",
          "title": "HL Bill 36 Explanatory Notes",
          "url": "https://publications.parliament.uk/pa/bills/lbill/59-02/036/en/5902036en01.htm"
        }
      ],
      "title": "HL Bill 36 Explanatory Notes",
      "type": "Explanatory Notes",
      "url": "https://publications.parliament.uk/pa/bills/lbill/59-02/036/en/5902036en01.htm"
    }
  ],
  "former_title": null,
  "is_act": false,
  "is_defeated": false,
  "last_updated": "2026-10-15T18:38:44",
  "latest_stage_id": 21073,
  "long_title": "A Bill to continue the Armed Forces Act 2006; to amend that Act and other enactments relating to the armed forces; and for connected purposes.",
  "originating_house": "Commons",
  "session_id": 39,
  "sponsors": [
    {
      "house": "Commons",
      "member_from": "Rawmarsh and Conisbrough",
      "member_id": 400,
      "name": "John Healey",
      "organisation": "Ministry of Defence",
      "party": "Labour"
    }
  ],
  "stage_count": 1,
  "stages": [
    {
      "dates": [
        "2026-09-02",
        "2026-09-08"
      ],
      "first_date": "2026-09-02",
      "house": "Lords",
      "last_date": "2026-09-08",
      "stage": "Committee stage",
      "stage_id": 21073
    }
  ],
  "summary": null,
  "title": "Armed Forces Bill",
  "url": "https://bills.parliament.uk/bills/4065",
  "withdrawn_on": null
}
```

### Get committee

Get a select or joint committee: what it scrutinises, how to contact it, its chair and its current members.

**Inputs**

- Committee (`committee`, text, required): The committee. Pick a current one, or type a former committee's name or id.

**Outputs**

- `address` (text)
- `category` (text)
- `chair` (text)
- `chair_id` (number)
- `committee_id` (number)
- `email` (text)
- `ended_on` (text)
- `house` (text)
- `is_current` (true/false)
- `member_count` (number)
- `members` (list)
- `name` (text)
- `phone` (text)
- `purpose` (text)
- `started_on` (text)
- `sub_committees` (list)
- `url` (text)

**Example output**

```json
{
  "address": "Treasury Committee, House of Commons, London, SW1A 0AA",
  "category": "Select",
  "chair": "Dame Meg Hillier",
  "chair_id": 1524,
  "committee_id": 158,
  "email": "treascom@parliament.uk",
  "ended_on": null,
  "house": "Commons",
  "is_current": true,
  "member_count": 1,
  "members": [
    {
      "house": "Commons",
      "is_chair": true,
      "is_lay_member": false,
      "member_from": "Hackney South and Shoreditch",
      "member_id": 1524,
      "name": "Dame Meg Hillier",
      "party": "Labour",
      "role": "Chair",
      "since": "2024-09-09"
    }
  ],
  "name": "Treasury Committee",
  "phone": null,
  "purpose": "The Treasury Committee is appointed by the House of Commons to examine the expenditure, administration and policy of HM Treasury, HM Revenue & Customs, and associated public bodies.",
  "started_on": "1995-11-15",
  "sub_committees": [
    "Treasury Sub-Committee on Financial Services Regulations"
  ],
  "url": "https://committees.parliament.uk/committee/158/"
}
```

### Get debate transcript

Get a debate from Hansard: everything said, in order, with who said it and when, the list of speakers, and the whole transcript as one text.

**Inputs**

- Debate id (`debate_id`, text, required): The debate's id, from 'Search Hansard'.

**Outputs**

- `contribution_count` (number)
- `contributions` (list)
- `date` (text)
- `debate_id` (text)
- `house` (text)
- `location` (text)
- `next_debate_id` (text)
- `previous_debate_id` (text)
- `speaker_count` (number)
- `speakers` (list)
- `title` (text)
- `transcript` (text)
- `url` (text)

**Example output**

```json
{
  "contribution_count": 1,
  "contributions": [
    {
      "member_id": 5086,
      "section": null,
      "speaker": "Josh Babarinde (Eastbourne) (LD)",
      "text": "Debate and discussion about issues of benefits, entitlements and calculations can often be relegated to the mere spreadsheet.",
      "time": "19:17"
    }
  ],
  "date": "2026-10-14",
  "debate_id": "A4DB6C7A-96F5-440E-BAC2-A0FCD94A32B6",
  "house": "Commons",
  "location": "Commons Chamber",
  "next_debate_id": "4E08AD9E-E335-45CD-AC13-6C712E40BD08",
  "previous_debate_id": "358C14D9-E879-4EDC-81FE-A31F49DBF7F9",
  "speaker_count": 1,
  "speakers": [
    {
      "contributions": 1,
      "member_id": 5086,
      "name": "Josh Babarinde (Eastbourne) (LD)"
    }
  ],
  "title": "Benefit Entitlements: War Pension and Armed Forces Compensation",
  "transcript": "Josh Babarinde (Eastbourne) (LD): Debate and discussion about issues of benefits, entitlements and calculations can often be relegated to the mere spreadsheet.",
  "url": "https://hansard.parliament.uk/Commons/2026-10-14/debates/A4DB6C7A-96F5-440E-BAC2-A0FCD94A32B6/BenefitEntitlementsWarPensionAndArmedForcesCompensation"
}
```

### Get election result

Get the latest election result in a constituency: the winner, majority, turnout, and every candidate's votes and share.

**Inputs**

- Constituency (`constituency`, text, required): The constituency's name, a postcode in it, or its id from an earlier step.

**Outputs**

- `candidates` (list)
- `constituency` (text)
- `constituency_id` (number)
- `election` (text)
- `election_date` (text)
- `electorate` (number)
- `is_general_election` (true/false)
- `majority` (number)
- `result` (text)
- `turnout` (number)
- `turnout_percent` (number)
- `winner` (text)
- `winning_party` (text)

**Example output**

```json
{
  "candidates": [
    {
      "change": "0.9%",
      "member_id": null,
      "name": "Rachel Reeves",
      "party": "Labour",
      "vote_share_percent": 49.3,
      "votes": 18976
    }
  ],
  "constituency": "Leeds West and Pudsey",
  "constituency_id": 4140,
  "election": "2024 General Election",
  "election_date": "2024-07-04",
  "electorate": 70069,
  "is_general_election": true,
  "majority": 12392,
  "result": "Lab Hold",
  "turnout": 38494,
  "turnout_percent": 54.9,
  "winner": "Rachel Reeves",
  "winning_party": "Labour"
}
```

### Get how a member voted

Get an MP's or Lord's voting record, newest first: each division, how they voted and whether it passed. Narrow it by words in the title or by date.

**Inputs**

- Member (`member`, text, required): An MP's or Lord's name, for example Rachel Reeves, or their member id from an earlier step.
- Search words (`search_term`, text): Only votes whose title contains these words, for example a bill's name. Leave empty for every vote.
- From date (`from_date`, date): Only on or after this date.
- To date (`to_date`, date): Only on or before this date.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `house` (text)
- `member_id` (number)
- `name` (text)
- `vote_count` (number)
- `voted_against_count` (number)
- `voted_for_count` (number)
- `votes` (list)

**Example output**

```json
{
  "house": "Commons",
  "member_id": 4031,
  "name": "Rachel Reeves",
  "vote_count": 1,
  "voted_against_count": 0,
  "voted_for_count": 1,
  "votes": [
    {
      "ayes": 319,
      "date": "2026-10-14",
      "division_id": 2442,
      "house": "Commons",
      "noes": 115,
      "number": 84,
      "passed": true,
      "teller": false,
      "title": "Carbon Border Adjustment Mechanism (Calculation of CBAM Rate and Determination of Carbon Price Relief) Regulations 2026",
      "url": "https://votes.parliament.uk/votes/commons/division/2442",
      "vote": "Aye",
      "voted_for": true
    }
  ]
}
```

### Get MP or Lord

Get an MP's or Lord's profile: party, seat, status, a one-line summary, and how to contact them (email, phone, office addresses, website). Tick the box to add what they have declared in the register of interests: paid work, donations, gifts, visits, property and shareholdings.

**Inputs**

- Member (`member`, text, required): An MP's or Lord's name, for example Rachel Reeves, or their member id from an earlier step.
- Include registered interests (`include_interests`, true/false): Also list what they have declared in the register of interests, each with its category and date. Default: `false`.

**Outputs**

- `constituency` (text)
- `constituency_id` (number)
- `contacts` (list)
- `email` (text)
- `full_title` (text)
- `gender` (text)
- `house` (text)
- `interest_categories` (list)
- `interest_count` (number)
- `interests` (list)
- `is_current` (true/false)
- `left_on` (text)
- `left_reason` (text)
- `list_as` (text)
- `member_from` (text)
- `member_id` (number)
- `member_since` (text)
- `name` (text)
- `party` (text)
- `party_abbreviation` (text)
- `party_id` (number)
- `phone` (text)
- `profile_url` (text)
- `status` (text)
- `synopsis` (text)
- `thumbnail_url` (text)
- `website` (text)

**Example output**

```json
{
  "constituency": "Leeds West and Pudsey",
  "constituency_id": 4140,
  "contacts": [
    {
      "address": "House of Commons, London",
      "email": "rachel.reeves.mp@parliament.uk",
      "phone": "020 7219 7097",
      "postcode": "SW1A 0AA",
      "type": "Parliamentary office",
      "url": null
    }
  ],
  "email": "rachel.reeves.mp@parliament.uk",
  "full_title": "Rt Hon Rachel Reeves MP",
  "gender": "F",
  "house": "Commons",
  "interest_categories": [
    "2. (b) Any other support not included in Category 2(a)"
  ],
  "interest_count": 1,
  "interests": [
    {
      "amended_on": null,
      "category": "2. (b) Any other support not included in Category 2(a)",
      "details": [],
      "interest_id": 13437,
      "registered_on": "2025-10-21",
      "text": "Name of donor: Alison Wedgwood\n\nAmount of donation or nature and value if donation in kind: \u00a330,000 to support my Parliamentary and political duties."
    }
  ],
  "is_current": true,
  "left_on": null,
  "left_reason": null,
  "list_as": "Reeves, Rachel",
  "member_from": "Leeds West and Pudsey",
  "member_id": 4031,
  "member_since": "2010-05-06",
  "name": "Rachel Reeves",
  "party": "Labour",
  "party_abbreviation": "Lab",
  "party_id": 15,
  "phone": "020 7219 7097",
  "profile_url": "https://members.parliament.uk/member/4031/contact",
  "status": "Current member",
  "synopsis": "The Rt Hon Rachel Reeves is the Labour MP for Leeds West and Pudsey, and has been an MP continually since 6 May 2010.",
  "thumbnail_url": "https://members-api.parliament.uk/api/Members/4031/Thumbnail",
  "website": "https://www.rachelreevesmp.co.uk/"
}
```

### Get party seat counts

Get how many seats each party holds in the Commons or the Lords, today or on a past date, largest first, with the split between men and women.

**Inputs**

- House (`house`, text, required): The House to count. One of: `commons` (House of Commons), `lords` (House of Lords). Default: `commons`.
- On date (`on_date`, date): Count the seats as they were on this date. Leave empty for today.

**Outputs**

- `date` (text)
- `house` (text)
- `largest_party` (text)
- `parties` (list)
- `total_seats` (number)

**Example output**

```json
{
  "date": "2026-10-15",
  "house": "Commons",
  "largest_party": "Labour",
  "parties": [
    {
      "abbreviation": "Lab",
      "men": 215,
      "party": "Labour",
      "party_id": 15,
      "seats": 404,
      "women": 189
    }
  ],
  "total_seats": 404
}
```

### Get vote result

Get one vote (division): the result, how every member voted, and the numbers for and against from each party.

**Inputs**

- House (`house`, text, required): The House that voted. One of: `commons` (House of Commons), `lords` (House of Lords). Default: `commons`.
- Division id (`division_id`, text, required): The vote's division id, from 'Search votes'.

**Outputs**

- `ayes` (number)
- `date` (text)
- `division_id` (number)
- `house` (text)
- `no_vote_recorded_count` (number)
- `noes` (number)
- `notes` (text)
- `number` (number)
- `party_breakdown` (list)
- `passed` (true/false)
- `title` (text)
- `url` (text)
- `voter_count` (number)
- `votes` (list)

**Example output**

```json
{
  "ayes": 319,
  "date": "2026-10-14",
  "division_id": 2442,
  "house": "Commons",
  "no_vote_recorded_count": 216,
  "noes": 115,
  "notes": null,
  "number": 84,
  "party_breakdown": [
    {
      "ayes": 311,
      "noes": 0,
      "party": "Labour"
    },
    {
      "ayes": 0,
      "noes": 103,
      "party": "Conservative"
    }
  ],
  "passed": true,
  "title": "Carbon Border Adjustment Mechanism (Calculation of CBAM Rate and Determination of Carbon Price Relief) Regulations 2026",
  "url": "https://votes.parliament.uk/votes/commons/division/2442",
  "voter_count": 434,
  "votes": [
    {
      "member_from": "Leeds West and Pudsey",
      "member_id": 4031,
      "name": "Rachel Reeves",
      "party": "Labour",
      "proxy": null,
      "teller": false,
      "vote": "Aye",
      "voted_for": true
    }
  ]
}
```

### Get written question

Get a written question in full with the government's answer, who answered and when.

**Inputs**

- Question id (`question_id`, text, required): The question's id, from 'Search written questions'.

**Outputs**

- `answer_text` (text)
- `answered` (true/false)
- `answered_by` (text)
- `answered_by_id` (number)
- `asked_by` (text)
- `asked_by_id` (number)
- `asked_by_party` (text)
- `attachments` (list)
- `date_answered` (text)
- `date_due` (text)
- `date_tabled` (text)
- `department` (text)
- `department_id` (number)
- `heading` (text)
- `house` (text)
- `is_holding_answer` (true/false)
- `is_withdrawn` (true/false)
- `question_id` (number)
- `question_text` (text)
- `uin` (text)
- `url` (text)

**Example output**

```json
{
  "answer_text": "As set out in the Animal Welfare Strategy published in December 2025, this Government is continuing to explore both legislative and non-legislative options. It will set out next steps in due course.",
  "answered": true,
  "answered_by": "Stephen Morgan",
  "answered_by_id": 4653,
  "asked_by": "Ruth Jones",
  "asked_by_id": 4716,
  "asked_by_party": "Labour",
  "attachments": [],
  "date_answered": "2026-10-15",
  "date_due": "2026-10-13",
  "date_tabled": "2026-10-09",
  "department": "Department for Environment, Food and Rural Affairs",
  "department_id": 13,
  "heading": "Animal Welfare",
  "house": "Commons",
  "is_holding_answer": false,
  "is_withdrawn": false,
  "question_id": 1944254,
  "question_text": "To ask the Secretary of State for Environment, Food and Rural Affairs, when she plans to publish findings of her Department's discussions on options to prohibit advertising of low-welfare animal activities undertaken abroad.",
  "uin": "30448",
  "url": "https://questions-statements.parliament.uk/written-questions/detail/2026-10-09/30448"
}
```

### Get written statement

Get a written ministerial statement in full.

**Inputs**

- Statement id (`statement_id`, text, required): The statement's id, from 'Search written statements'.

**Outputs**

- `attachments` (list)
- `date` (text)
- `department` (text)
- `department_id` (number)
- `house` (text)
- `made_by` (text)
- `made_by_id` (number)
- `made_by_role` (text)
- `statement_id` (number)
- `text` (text)
- `title` (text)
- `uin` (text)
- `url` (text)

**Example output**

```json
{
  "attachments": [],
  "date": "2026-10-15",
  "department": "Foreign, Commonwealth and Development Office",
  "department_id": 208,
  "house": "Commons",
  "made_by": "Uma Kumaran",
  "made_by_id": 5278,
  "made_by_role": "Parliamentary Under-Secretary of State for Overseas Territories, Caribbean and Global Technology",
  "statement_id": 1949367,
  "text": "The Government is today publishing an update to the United Kingdom\u2019s Arctic policy. This builds on the United Kingdom\u2019s Arctic Policy Framework \u2018Looking North\u2019.",
  "title": "An Update to the United Kingdom\u2019s Arctic Policy Framework",
  "uin": "HCWS382",
  "url": "https://questions-statements.parliament.uk/written-statements/detail/2026-10-15/HCWS382"
}
```

### List bill amendments

List the amendments tabled to a bill at one stage, with who proposed them and what happened to them. Leave the stage empty for the latest stage that has amendments.

**Inputs**

- Bill id (`bill_id`, text, required): The bill's id, from 'Search bills' or the bill's page address.
- Stage (`stage_id`, text): The stage the amendments were tabled at. Leave empty for the latest stage with amendments.
- Outcome (`decision`, text): Only amendments with this outcome. Leave empty for all. One of: `agreed` (Agreed to), `rejected`, `withdrawn`, `not_moved` (Not moved, called or selected), `undecided` (Not decided yet).
- Search words (`search_term`, text): Only amendments containing these words.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `amendment_count` (number)
- `amendments` (list)
- `bill_id` (number)
- `decisions` (list)
- `match_count` (number)
- `stage` (text)
- `stage_house` (text)
- `stage_id` (number)
- `total_count` (number)
- `truncated` (true/false)

**Example output**

```json
{
  "amendment_count": 1,
  "amendments": [
    {
      "amendment_id": 10037353,
      "amendment_type": "Edit bill body",
      "clause": 2,
      "decision": "Withdrawn",
      "decision_explanation": "The amendment was withdrawn after debate and no decision was taken on it.",
      "lead_sponsor": "Baroness Fraser of Craigmaddie",
      "lead_sponsor_id": 4906,
      "line": 13,
      "number": "1",
      "page": 2,
      "schedule": null,
      "sponsors": [
        "Baroness Fraser of Craigmaddie",
        "Baroness Smith of Newnham"
      ],
      "summary": "Clause 2, page 2, line 13, at end insert \u201cand the Royal Fleet Auxiliary\u201d"
    }
  ],
  "bill_id": 4065,
  "decisions": [
    {
      "count": 52,
      "decision": "Not moved"
    },
    {
      "count": 18,
      "decision": "Withdrawn"
    }
  ],
  "match_count": 1,
  "stage": "Committee stage",
  "stage_house": "Lords",
  "stage_id": 21073,
  "total_count": 78,
  "truncated": false
}
```

### List committee meetings

List committee meetings in date order, from today unless you pick a date: evidence sessions, private meetings and visits, with the inquiry, room and time.

**Inputs**

- Committee (`committee`, text): Only this committee's meetings. Leave empty for every committee.
- House (`house`, text): Only committees of this House. Leave empty for all. One of: `commons` (House of Commons), `lords` (House of Lords), `joint` (Joint committees).
- From date (`from_date`, date): Meetings on or after this date. Defaults to today.
- To date (`to_date`, date): Only on or before this date.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `committee_id` (number)
- `from_date` (text)
- `meeting_count` (number)
- `meetings` (list)
- `total_count` (number)

**Example output**

```json
{
  "committee_id": 158,
  "from_date": "2026-10-15",
  "meeting_count": 1,
  "meetings": [
    {
      "business": [
        "Budget 2026"
      ],
      "cancelled": false,
      "committee_ids": [
        158
      ],
      "committees": [
        "Treasury Committee"
      ],
      "date": "2026-10-20",
      "end_time": "2026-10-20T12:30:00",
      "location": "Room 8, Palace of Westminster",
      "meeting_id": 28371,
      "start_time": "2026-10-20T09:30:00",
      "title": "Budget 2026: Pre Budget scrutiny 2",
      "type": "Formal meeting (oral evidence session)"
    }
  ],
  "total_count": 1
}
```

### Search bills

Find bills by title, session, House, status, type or sponsor, most recently updated first: where each one is now and its page on bills.parliament.uk.

**Inputs**

- Search words (`search_term`, text): Words in the bill's title. Leave empty for every bill.
- Status (`status`, text): Only bills in this state. 'Still going through Parliament' looks in the current session unless you pick another. Leave empty for every bill. One of: `in_progress` (Still going through Parliament), `act` (Became law), `defeated`, `withdrawn`.
- Session (`session`, text): Only bills before Parliament in this session. Leave empty for every session.
- Now in (`current_house`, text): Only bills now in this House. Leave empty for both. One of: `commons` (House of Commons), `lords` (House of Lords).
- Bill type (`bill_type`, text): Only bills of this kind. Leave empty for every kind. One of: `government` (Government bill), `private_members` (Private members' bill), `private` (Private bill), `hybrid` (Hybrid bill), `consolidation` (Consolidation bill), `draft` (Draft bill), `supply` (Supply and Appropriation bill).
- Sponsor (`sponsor`, text): Only bills sponsored by this MP or Lord: a name or a member id. Leave empty for any sponsor.
- Order (`sort`, text): The order to list them in. One of: `updated_newest` (Most recently updated first), `updated_oldest` (Least recently updated first), `title_az` (Title, A to Z), `title_za` (Title, Z to A). Default: `updated_newest`.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `bill_count` (number)
- `bills` (list)
- `session_id` (number)
- `total_count` (number)

**Example output**

```json
{
  "bill_count": 1,
  "bills": [
    {
      "bill_id": 4065,
      "bill_type": "Government bill",
      "current_house": "Lords",
      "current_stage": "Report stage",
      "current_stage_date": "2026-10-20",
      "current_stage_house": "Lords",
      "former_title": null,
      "is_act": false,
      "is_defeated": false,
      "last_updated": "2026-10-15T18:38:44",
      "originating_house": "Commons",
      "session_id": 39,
      "title": "Armed Forces Bill",
      "url": "https://bills.parliament.uk/bills/4065",
      "withdrawn_on": null
    }
  ],
  "session_id": null,
  "total_count": 1
}
```

### Search Hansard

Search Hansard, the official record of what is said in Parliament, newest first: find whole debates, or each thing said, by one MP or Lord or by anyone, with the debate it was in.

**Inputs**

- Search words (`search_term`, text): Words that were said. Leave empty to see everything a member said.
- Search in (`search_in`, text): One result per debate, or each speech on its own. Picking a member always searches speeches. One of: `debates` (Debates (one result per debate)), `speeches` (What was said (each speech)). Default: `debates`.
- Member (`member`, text): Only what this MP or Lord said: a name or a member id. Leave empty for anyone.
- House (`house`, text): Only in this House. Leave empty for both. One of: `commons` (House of Commons), `lords` (House of Lords).
- From date (`from_date`, date): Only on or after this date.
- To date (`to_date`, date): Only on or before this date.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `contribution_count` (number)
- `contributions` (list)
- `debate_count` (number)
- `debates` (list)
- `member_id` (number)
- `member_name` (text)
- `search_in` (text)
- `total_count` (number)

**Example output**

```json
{
  "contribution_count": 1,
  "contributions": [
    {
      "contribution_id": "7F7BA0C6-121D-41FF-B77B-294D1B9DC9B9",
      "date": "2026-06-23",
      "debate_id": "EE9CD597-E12E-4FB5-BC3C-153413F9DE60",
      "debate_title": "Economic Strength",
      "house": "Commons",
      "location": "Commons Chamber",
      "member_id": 4031,
      "member_name": "Rachel Reeves",
      "speaker": "The Chancellor of the Exchequer (Rachel Reeves)",
      "text": "Since I became Chancellor, our economy has grown by 2.3%\u2014the fastest growth among European G7 economies in that period.",
      "url": "https://hansard.parliament.uk/Commons/2026-06-23/debates/EE9CD597-E12E-4FB5-BC3C-153413F9DE60/EconomicStrength#contribution-7F7BA0C6-121D-41FF-B77B-294D1B9DC9B9"
    }
  ],
  "debate_count": 1,
  "debates": [
    {
      "date": "2026-06-23",
      "debate_id": "EE9CD597-E12E-4FB5-BC3C-153413F9DE60",
      "house": "Commons",
      "location": "Commons Chamber",
      "title": "Economic Strength",
      "url": "https://hansard.parliament.uk/Commons/2026-06-23/debates/EE9CD597-E12E-4FB5-BC3C-153413F9DE60/EconomicStrength"
    }
  ],
  "member_id": 4031,
  "member_name": "Rachel Reeves",
  "search_in": "speeches",
  "total_count": 1
}
```

### Search votes

Find the votes (divisions) held in the Commons or the Lords, newest first, by words in the title or by date: the result and the numbers on each side.

**Inputs**

- House (`house`, text, required): The House that voted. One of: `commons` (House of Commons), `lords` (House of Lords). Default: `commons`.
- Search words (`search_term`, text): Words in the vote's title, for example a bill's name. Leave empty for every vote.
- From date (`from_date`, date): Only on or after this date.
- To date (`to_date`, date): Only on or before this date.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `division_count` (number)
- `divisions` (list)
- `house` (text)

**Example output**

```json
{
  "division_count": 1,
  "divisions": [
    {
      "ayes": 319,
      "date": "2026-10-14",
      "division_id": 2442,
      "house": "Commons",
      "noes": 115,
      "number": 84,
      "passed": true,
      "title": "Carbon Border Adjustment Mechanism (Calculation of CBAM Rate and Determination of Carbon Price Relief) Regulations 2026",
      "url": "https://votes.parliament.uk/votes/commons/division/2442"
    }
  ],
  "house": "Commons"
}
```

### Search written questions

Find written questions MPs and Lords have put to the government, newest first, with the start of each answer. Narrow by words, who asked, the department, whether it has been answered, and date.

**Inputs**

- Search words (`search_term`, text): Words to look for. Leave empty for everything.
- House (`house`, text): Only questions asked in this House. Leave empty for both. One of: `commons` (House of Commons), `lords` (House of Lords).
- Asked by (`asked_by`, text): Only questions asked by this MP or Lord: a name or a member id.
- Department (`department`, text): Only those for this government department. Leave empty for all.
- Answered (`status`, text): Answered, not yet answered, or leave empty for both. One of: `answered`, `unanswered` (Not answered yet).
- Asked from (`tabled_from`, date): Only questions asked on or after this date.
- Asked until (`tabled_to`, date): Only questions asked on or before this date.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `question_count` (number)
- `questions` (list)
- `total_count` (number)

**Example output**

```json
{
  "question_count": 1,
  "questions": [
    {
      "answer_preview": "As set out in the Animal Welfare Strategy published in December 2025, this Government is continuing to explore both legislative and non-legislative options. It will set out next steps in due course.",
      "answered": true,
      "answered_by": "Stephen Morgan",
      "answered_by_id": 4653,
      "asked_by": "Ruth Jones",
      "asked_by_id": 4716,
      "asked_by_party": "Labour",
      "date_answered": "2026-10-15",
      "date_due": "2026-10-13",
      "date_tabled": "2026-10-09",
      "department": "Department for Environment, Food and Rural Affairs",
      "department_id": 13,
      "heading": "Animal Welfare",
      "house": "Commons",
      "is_holding_answer": false,
      "is_withdrawn": false,
      "question_id": 1944254,
      "question_preview": "To ask the Secretary of State for Environment, Food and Rural Affairs, when she plans to publish findings of her Department's discussions on options to prohibit advertising of low-welfare animal activities undertaken abroad.",
      "uin": "30448",
      "url": "https://questions-statements.parliament.uk/written-questions/detail/2026-10-09/30448"
    }
  ],
  "total_count": 1
}
```

### Search written statements

Find written statements ministers have made to Parliament, newest first, by words, House, minister, department and date.

**Inputs**

- Search words (`search_term`, text): Words to look for. Leave empty for everything.
- House (`house`, text): Only statements made in this House. Leave empty for both. One of: `commons` (House of Commons), `lords` (House of Lords).
- Made by (`made_by`, text): Only statements by this minister: a name or a member id.
- Department (`department`, text): Only those for this government department. Leave empty for all.
- From date (`from_date`, date): Only on or after this date.
- To date (`to_date`, date): Only on or before this date.
- Number of results (`limit`, number): How many to return, newest first. Defaults to 20. From 1 to 100. Default: `20`.

**Outputs**

- `statement_count` (number)
- `statements` (list)
- `total_count` (number)

**Example output**

```json
{
  "statement_count": 1,
  "statements": [
    {
      "date": "2026-10-15",
      "department": "Foreign, Commonwealth and Development Office",
      "department_id": 208,
      "house": "Commons",
      "made_by": "Uma Kumaran",
      "made_by_id": 5278,
      "made_by_role": "Parliamentary Under-Secretary of State for Overseas Territories, Caribbean and Global Technology",
      "statement_id": 1949367,
      "text_preview": "The Government is today publishing an update to the United Kingdom\u2019s Arctic policy. This builds on the United Kingdom\u2019s Arctic Policy Framework \u2018Looking North\u2019.",
      "title": "An Update to the United Kingdom\u2019s Arctic Policy Framework",
      "uin": "HCWS382",
      "url": "https://questions-statements.parliament.uk/written-statements/detail/2026-10-15/HCWS382"
    }
  ],
  "total_count": 1
}
```
